> Tous les forumsForum des Webmasters

 De l'aide pour faire un script PHP ou javascript ?Sujet résolu
Statut du sujet : RESOLU Imprimer
 selen
  Posté le 04/11/2007 @ 17:16  
   Maîtresse astucienne


10724 Messages

bonjour,

Je crois que ce que je veux faire est très basique pour quelqu'un qui connait le PHP, mais autant j'ai bien ingurgité HTML et CSS, autant avec le PHP, je coince !

J'explique le cas:

J'ai une page de miniatures, lorsque l'on clique sur une miniature l'image s'affiche en grand sur une autre page : image, titre, année, dimensions largeur x hauteur.

Plutôt que de faire manuellement toutes ces pages, je voudrais un script PHP qui me génère cette page à partir du clic sur la miniature.

J'imagine donc qu'il va remplir les 5 variables dans le template de ma page.

$image, $titre, $an, $largeur, $hauteur

comment faire pratiquement ?

merci d'avance

 Afficher le profil de selen Envoyer un message privé à selen
 
 
Publicité
 Malcolm  Posté le 04/11/2007 à 18:07  
  Astucien


7206 Messages

Hello,

l'image qui ss'affiche sur une autre page : target="_blank" ? (auquel cas c'est de l'HTML)

à propos des données (image, titre, année, dimensions) elles sont dans une base de données (sous forme mysql ou fichier texte) ?

Afficher le profil de Malcolm Voir la configuration de MalcolmEnvoyer un message privé à Malcolm
  Revenir en haut de la page
 selen  Posté le 04/11/2007 à 21:30  
  Maîtresse astucienne


10724 Messages

bonjour malcolm

c'est un simple lien de la forme :

<a href="fichestableau/imgA2.htm"><img src="images/flowers.jpg" width="133" height="200"/></a>

ça marche très bien mais je dois me taper quelques dizaines de pages qui affichent simplement:

<img src="../images/gondoles.jpg" />
<p>Gondoles - 2006 - dim. 60x50 cm<br/>

c'est pourquoi, je cherche une méthode automatique.

les données ne sont encore pour l'instant nulle part !

entretemps, je continue à étudier le php et je commence à voir à peu près comment afficher les données texte, enfin c'est encore flou car comment aller chercher telle donnée lorsque tel clic sur telle miniature est fait ?
et pour l'image je ne vois pas du tout encore...

ça va peut-être me prendre plus de temps de piger ça que de faire toutes mes pages, tu me diras ?

merci de ta réponse

Afficher le profil de selen Voir la configuration de selenEnvoyer un message privé à selen
 Revenir en haut de la page
 fennec.  Posté le 05/11/2007 à 13:16  
Petit astucien

217 Messages
bonjour selen, il y a moyen de crée un script en javascript qui fait sa il te suffit d'enregistrer ton script dans un fichier .js dans ton fichier html tu fait un link vers ton fichier.js et dans ton lien tu met onclick="lafonction()" http://www.jejavascript.net/protimage.php voila un petit lien
Afficher le profil de fennec.Envoyer un message privé à fennec.
 Revenir en haut de la page
 selen  Posté le 05/11/2007 à 16:16  
  Maîtresse astucienne


10724 Messages

merci pour ta réponse fennec

je regarde ton lien.

j'avais déjà regardé pour une fenêtre popup en javascript mais ça ne me plaisait pas trop, je préfèrais l'ouverture en pleine page, enfin, je regarde ce qu'il propose...

merci.

Afficher le profil de selen Voir la configuration de selenEnvoyer un message privé à selen
 Revenir en haut de la page
 selen  Posté le 05/11/2007 à 16:24  
  Maîtresse astucienne


10724 Messages

fennec, c'est bien ce que je pensais, c'est une popup.

1.c'est plus long à ouvrir qu'un lien vers un autre page

2.c'est Redimmensionné suivant la taille de l'image, je ne peux donc pas afficher ni les infos que je voudrais ni un fond

3.dans Firefox, c'est pas beau car il y a tous les menus qui sont affichés dans le haut de la fenêtre

donc ça ne me convient pas, mais merci quand même.

Afficher le profil de selen Voir la configuration de selenEnvoyer un message privé à selen
 Revenir en haut de la page
 Malcolm  Posté le 05/11/2007 à 17:46  
  Astucien


7206 Messages
J'ai un début d'idée, mais ça sous-entend que tes photos existent sous forme de vignettes (que je rendrai cliquables) et que les vignettes ont toutes la même dimension... Est-ce le cas ?
Afficher le profil de Malcolm Voir la configuration de MalcolmEnvoyer un message privé à Malcolm
  Revenir en haut de la page
 selen  Posté le 05/11/2007 à 18:06  
  Maîtresse astucienne


10724 Messages
Malcolm a écrit :

J'ai un début d'idée, mais ça sous-entend que tes photos existent sous forme de vignettes (que je rendrai cliquables) et que les vignettes ont toutes la même dimension... Est-ce le cas ?

malcolm

pour l'instant je Redimensionne les images à l'état miniature en leur mettant un width et height ainsi :

<img src="images/flowers.jpg" width="133" height="200"/>

les dim sont variables car je veux garder une proportion par rapport à l'image originale (ce sont des tableaux, donc le rapport largeur/hauteur peut varier et je voudrais le respecter)

ton idée implique-t'elle le PHP ?

entretemps j'ai trouvé un javascript qui affiche non pas une fenêtre mais une <div>, ce qui me convient davantage mais il faudrait l'adapter car en fait, c'est prévu pour être une infobulle qui apparait "onmouseover" : je l'ai mis en "onclick", c'est ok mais la div ne se place pas au bon endroit et déborde de la page.

voici à quoi j'arrive, c'est presque ce que je veux :

il faudrait pour bien faire que l'image soit centrée dans la page puisque ça peut aller jusqu'à 500 px de large ou de haut.

2ème problème, la grand image se ferme lorsqu'on écarte le curseur de la miniature, là aussi il faudrait que ce soit "onclick" dans la grande image ou ailleurs.

le script est là : http://damienalexandre.fr/Info-Bulle-en-Javascript.html

est-ce modifiable comme je le souhaiterais ?

j'édite le titre car la solution pourrait être en javascript aussi...

merci

Afficher le profil de selen Voir la configuration de selenEnvoyer un message privé à selen
 Revenir en haut de la page
 Malcolm  Posté le 05/11/2007 à 19:07  
  Astucien


7206 Messages

Je pense à un truc : si tu regardes cet article : http://www.php-astux.info/mysql-phpmyadmin.php

Ce n'est pas ce que tu cherches à faire ? Apres, reste plus qu'à se focaliser sur les largeurs et hauteurs...

Afficher le profil de Malcolm Voir la configuration de MalcolmEnvoyer un message privé à Malcolm
  Revenir en haut de la page
 selen  Posté le 06/11/2007 à 21:16  
  Maîtresse astucienne


10724 Messages
Malcolm a écrit :

Je pense à un truc : si tu regardes cet article : http://www.php-astux.info/mysql-phpmyadmin.php

Ce n'est pas ce que tu cherches à faire ? Apres, reste plus qu'à se focaliser sur les largeurs et hauteurs...


bonsoir

excuse mon retard, j'ai eu une panne internet hier soir...

oui, c'est à peu près ça, en étudiant un peu PHP j'en étais arrivée là : je vois à peu près comment remplir une table avec des données texte mais pour les images comment fait-t'on ? on met un chemin vers l'image ?

et comment faire le lien entre l'action "cliquer sur telle miniature" et afficher la page php avec les données adhoc càd l'image correspondante en grand et mes données texte.

j'ai vu aussi qu'au lieu d'utiliser une table on pouvait aussi utiliser un fichier texte (c'est le principe du livre d'or Pifou), faisable sans doute dans mon cas, vu qu'il s'agit de quelques dizaines d'entrées.

Afficher le profil de selen Voir la configuration de selenEnvoyer un message privé à selen
 Revenir en haut de la page
 selen  Posté le 06/11/2007 à 21:23  
  Maîtresse astucienne


10724 Messages

PS je te mets l'adresse de la page : http://home.versateladsl.be/vt650992/SiteRomain/vignettes.html

ainsi tu peux voir où j'en suis :

"Bouquet" et "Soul Mates" sont deux javascripts légèrement différents mais dont le résultat est sensiblement le même"Contemplation" est un lien vers une pleine page (la présentation que j'essayais d'automatiser en PHP) et "Gondoles" est le dernier essai avec une infobulle en javascript qui affiche une DIV mais je n'arrive pas à la positionner comme il faudrait.

Mais en fait, je ne suis pas encore fixée sur ce qu'il convient de faire.

Si tu veux me donner ton avis, il est bienvenu.

Afficher le profil de selen Voir la configuration de selenEnvoyer un message privé à selen
 Revenir en haut de la page
 Dreamer  Posté le 06/11/2007 à 21:45  
Astucien


3979 Messages

Salut

Connais-tu Lightbox , lui se moque des dimensions de tes images .

Le problème sera de mettre les légendes dans la partie title .

A +

Afficher le profil de Dreamer Voir la configuration de DreamerEnvoyer un message privé à Dreamer
 Revenir en haut de la page
 selen  Posté le 06/11/2007 à 21:50  
  Maîtresse astucienne


10724 Messages

bonsoir dreamer

je suis justement tombée sur un autre (?) lightbox cette apm : http://www.cssplay.co.uk/menu/lightbox3

le problème c'est que l'emplacement pour un sous-titre n'est pas prévu je pense ?

Afficher le profil de selen Voir la configuration de selenEnvoyer un message privé à selen
 Revenir en haut de la page
 Dreamer  Posté le 06/11/2007 à 21:57  
Astucien


3979 Messages
Si , dans la balise title de la grande image .............
Afficher le profil de Dreamer Voir la configuration de DreamerEnvoyer un message privé à Dreamer
 Revenir en haut de la page
 elle  Posté le 06/11/2007 à 22:34  
  Maîtresse astucienne


15149 Messages

Tu as regardé du côté des galeries d'images en css?

http://www.cssplay.co.uk/menu/

Édité : oups! J'arrive un peu tard avec mon lien... J'avais commencé mon message mais j'ai été interrompue avant de pouvoir le poster...



Modifié par elle le 06/11/2007 22:36
Afficher le profil de elle Voir la configuration de elleEnvoyer un message privé à elle
 Revenir en haut de la page
 selen  Posté le 07/11/2007 à 21:14  
  Maîtresse astucienne


10724 Messages

bonjour elle

oui, merci ... entretemps j'ai exploré cette possibilité mais ça ne me convient pas trop...

je préfererais :

1. soit afficher la grande image par-dessus les miniatures mais pas dans une fenêtre, dans une div :

voir : http://home.versateladsl.be/vt650992/SiteRomain/vignettes.html

voir: miniature : "gondoles" et dans ce cas, adapter le script pour avoir l'image au milieu.

2. soit afficher en pleine page : voir : miniature "contemplation" mais alors si possible en php pour générer les pages automatiquement

tu vois comment faire ?

merci, bonne soirée

Afficher le profil de selen Voir la configuration de selenEnvoyer un message privé à selen
 Revenir en haut de la page
 Malcolm  Posté le 07/11/2007 à 22:10  
  Astucien


7206 Messages

En php, oui c'est plutôt facile, mais si les vignettes diffèrent dans leurs dimensions, alors faut y penser également ...

voici le début de code dont je parlais précédemment, il fait appel à 3 fichiers :

* vignettes.php, là où les vignettes (clicables) seront générées

* photo.php, là où on affichera la photo grandeur nature

* liste.php, la liste des images (peut être aussi remplacé par une base de données d'ailleurs)

Vignettes.php (à inclure dans une page si tu le souhaites !)

vignettes.php
  1. <?php
  2. // Chemin vers le fihchier de listing des images (par défaut, même dossier)
  3. require('liste.php');
  4. // on génère les vignettes
  5. foreach($array_images as $i => $image)
  6. {
  7. echo '<a href="photo.php?photo='.$i.'" target="_blank"><img src="http://mon_site.tld/images/mini_'.$image['fichier'].'" width="'.$image['vignette_H'].'" height="'.$image['vignette_L'].'" alt="'.$image['titre'].'" /></a>';
  8. };
  9. ?>

photo.php (affiche la grande image)

photo.php
  1. <?php
  2. // Chemin vers le fihchier de listing des images (par défaut, même dossier)
  3. require('liste.php');
  4. $photo = (isset($_GET['photo'])) ? abs(sprintf("%d",$_GET['photo'])) : 0;
  5. // là on affiche la grande photo
  6. ?>
  7. <h1><?php echo $array_images[$photo]['titre']; ?> (Année : <?php echo $array_images[$photo]['annee']; ?>)</h1>
  8. <p><img src="images/<?php echo $array_images[$photo]['fichier']; ?>" width="<?php echo $array_images[$photo]['image_L']; ?>" height="<?php echo $array_images[$photo]['image_H']; ?>" alt="<?php echo $array_images[$photo]['titre']; ?>" /></p>

et enfin, la liste des images (pour en ajouter, tu n'as qu'à dupliquer le bloc de lignes)

liste.php
  1. <?php
  2. // listing des images
  3. /*
  4. * pour ajouter une image, copier le bloc de lignes puis compléter
  5. */
  6. $array_images = array(); $i = 0;
  7. $array_images[$i]['titre'] = "Titre de la photo 1";
  8. $array_images[$i]['fichier'] = 'photo1.jpg';
  9. $array_images[$i]['annee'] = 2007;
  10. $array_images[$i]['image_H'] = 800;
  11. $array_images[$i]['image_L'] = 600;
  12. $array_images[$i]['vignette_H'] = 120;
  13. $array_images[$i]['vignette_L'] = 100;
  14. $i++;
  15. $array_images[$i]['titre'] = "Titre de la photo 2";
  16. $array_images[$i]['fichier'] = 'noel.jpg';
  17. $array_images[$i]['annee'] = 2006;
  18. $array_images[$i]['image_H'] = 640;
  19. $array_images[$i]['image_L'] = 480;
  20. $array_images[$i]['vignette_H'] = 80;
  21. $array_images[$i]['vignette_L'] = 80;
  22. $i++;
  23. // etc.
  24. ?>

Afficher le profil de Malcolm Voir la configuration de MalcolmEnvoyer un message privé à Malcolm
  Revenir en haut de la page
 selen  Posté le 08/11/2007 à 14:40  
  Maîtresse astucienne


10724 Messages

malcolm

ça a l'air Super ! je teste ça dans l'apm

Afficher le profil de selen Voir la configuration de selenEnvoyer un message privé à selen
 Revenir en haut de la page
 selen  Posté le 08/11/2007 à 16:48  
  Maîtresse astucienne


10724 Messages

tu es tout simplement génial malcolm ! ça maaarche !

j'ai juste eu à enlever un mini_ qui était de trop et empêchait l'affichage des vignettes et inverser L et H

je n'ai plus qu'à intégrer ça à la mise en page et remplir le fichier liste...


je te dois un gros gros et une à ta santé !

merci c'est Super

PS est-t'il recommandé de mettre le chemin absolu pour l'image ou ce n'est pas indispensable ?

si je n'arrive pas à maitriser la disposition des vignettes dans la page, je te demanderai ... si tu veux bien.

Afficher le profil de selen Voir la configuration de selenEnvoyer un message privé à selen
 Revenir en haut de la page
 selen  Posté le 08/11/2007 à 18:00  
  Maîtresse astucienne


10724 Messages

...suite

j'ai disposé les vignettes avec un float left mais pour que l'agencement soit plus régulier, je voudrais les disposer dans un tableau (à 3 lignes, 3 colonnes par exemple)...

est-ce possible d'adapter le script ?

Afficher le profil de selen Voir la configuration de selenEnvoyer un message privé à selen
 Revenir en haut de la page
 Malcolm  Posté le 08/11/2007 à 19:54  
  Astucien


7206 Messages

Concernant les "mini_" c'est un truc que j'utilise parfois, parfois c'est juste un sous dossier "mini". Content pour toi que ça marche.

Pour les disposer dans un tableau, voici le code à utiliser (je remplace le contenu de vignettes.php) :


vignettes.php
  1. <?php
  2. // Chemin vers le fichier de listing des images (par défaut, même dossier)
  3. require('liste.php');
  4. // modifier si besoin le nombre de colonnes - nb de lignes calculé automatiquement
  5. $nb_colonnes = 4;
  6. $lignes = ceil(count($array_images) / $nb_colonnes);
  7. $ligne = 0;
  8. $depart = 0;
  9. // on génère les vignettes
  10. echo '<table width="100%" cellpadding="0" cellspacing="0" border="0" summary="Liste des vignettes">'."\n";
  11. for($ligne = 0; $ligne < $lignes; $ligne++)
  12. {
  13. echo ' <tr>'."\n";
  14. $arrivee = $depart + $nb_colonnes;
  15. for ($ptr = $depart; $ptr < $arrivee; $ptr++)
  16. {
  17. // lecture de l'image
  18. $image = (isset($array_images[$ptr])) ? $array_images[$ptr] : '';
  19. echo (is_array($image)) ? ' <td><a href="photo.php?photo='.$ptr.'" target="_blank"><img src="http://mon_site.tld/images/'.$image['fichier'].'" width="'.$image['vignette_H'].'" height="'.$image['vignette_L'].'" alt="'.$image['titre'].'" /></a></td>'."\n" : '<td>&nbsp;</td>'."\n";
  20. };
  21. echo ' </tr>'."\n";
  22. $depart = $arrivee;
  23. };
  24. echo '</table>'."\n";
  25. ?>


Tu remarqueras au passage que je te laisse configurer le nombre de colonnes, là par défaut c'est "3" mais tu peux le passer à 12 si tu veux.

Pour les liens absolus ou relatifs, tu fais comme tu veux, je préfère, pour un site web, les liens relatifs, mais au cas où j'ai préféré te montrer l'eexemple "absolu" (moins de risque d'erreur)



Modifié par Malcolm le 08/11/2007 22:29
Afficher le profil de Malcolm Voir la configuration de MalcolmEnvoyer un message privé à Malcolm
  Revenir en haut de la page
 selen  Posté le 08/11/2007 à 21:44  
  Maîtresse astucienne


10724 Messages

merci ! c'est Super : les vignettes sont maintenant magnifiquement disposées ... mais petit problème ... lorsqu'on clique sur une vignette la page avec la photo agrandie ne s'affiche plus, enfin, la page s'affiche mais sans le contenu qu'elle est sensée afficher.

c'est bizarre car je n'ai rien changé ni au fichier photo.php ni à liste.php et avant ça marchait :

j'ai essayé de comparer minutieusement les deux "phrases" mais je ne vois pas d'où ça peut venir ?

un indice : lorsque je clic sur la première vignette il essaie d'afficher photo.php?photo=7 ! et pour toutes les autres de même, or il y a bien une photo 7 dans la liste, mais elle ne s'affiche quand même pas.

une idée ?

PS je ne vois pas de foreach($array_images as $i => $image) dans le nouveau code : n'est pas cela qui manque, une référence à $i ?



Modifié par selen le 08/11/2007 21:51
Afficher le profil de selen Voir la configuration de selenEnvoyer un message privé à selen
 Revenir en haut de la page
 Malcolm  Posté le 08/11/2007 à 22:28  
  Astucien


7206 Messages

Oups, désolé, oui c'est le $i que j'ai renommé en $ptr ... Donc dans le href du <a> change ?photo='.$i.' par ?photo='.$ptr.'

je vais corriger au dessus.

Afficher le profil de Malcolm Voir la configuration de MalcolmEnvoyer un message privé à Malcolm
  Revenir en haut de la page
 selen  Posté le 09/11/2007 à 16:33  
  Maîtresse astucienne


10724 Messages

ça marche !

si je comprends bien dans liste.php on incrémente avec $i et dans vignettes.php on incrémente avec $ptr ?

enfin , y a plein de choses qui m'échappent ! heureusement que tu es là !

c'est bon, c'est bien ça que je voulais obtenir lorsque j'ai posté ce sujet.

encore bien merci

Afficher le profil de selen Voir la configuration de selenEnvoyer un message privé à selen
 Revenir en haut de la page
 Malcolm  Posté le 09/11/2007 à 17:15  
  Astucien


7206 Messages

Hello,

oui tout à fait, il ne s'agit pas de la même variable, peu importent leurs noms d'ailleurs.

Content que ça soit résolu

Afficher le profil de Malcolm Voir la configuration de MalcolmEnvoyer un message privé à Malcolm
  Revenir en haut de la page
 selen  Posté le 15/11/2007 à 18:13  
  Maîtresse astucienne


10724 Messages

malcolm

je reviens vers toi pour te demander s'il y aurait moyen d'accomoder ton script pour avoir un affichage aléatoire des miniatures ?

j'explique : je voudrais faire un genre de planche contact, 5x3 par exemple,

statique, cette fois, dans le sens qu'il n'y a pas de lien vers la grande image mais dynamique dans le sens qu'à chaque actualisation de la page, php irait puiser aléatoirement dans le fichier liste.php pour montrer des miniatures différentes. (ou à la limite image 1à15 puis la fois d'après image 16à30, etc.)

c'est faisable ?

j'ai trouvé un script sensé faire ça, mais il ne fonctionne pas : http://www.script-masters.com/home/voir_script_php_mysql-42.html

merci d'avance

Afficher le profil de selen Voir la configuration de selenEnvoyer un message privé à selen
 Revenir en haut de la page
 Malcolm  Posté le 15/11/2007 à 19:57  
  Astucien


7206 Messages

Hello,

bien sûr que c'est faisable. Je n'arrive pas à ouvrir le lien de démo du script que tu montres (404 page introuvable) mais on peut sans problème accomoder mon script.

Il faut que tu rajoutes cette ligne :

shuffle($array_images);

entre les lignes :

$depart = 0;

// on génère les vignettes

pour donner :

$depart = 0;

shuffle($array_images);

// on génère les vignettes

Et les vignettes seront présentées aléatoirement à chaque chargement de page.

Afficher le profil de Malcolm Voir la configuration de MalcolmEnvoyer un message privé à Malcolm
  Revenir en haut de la page
 selen  Posté le 16/11/2007 à 16:15  
  Maîtresse astucienne


10724 Messages

merci une fois de plus malcolm

je viens d'essayer, ça marche bien

@+

Afficher le profil de selen Voir la configuration de selenEnvoyer un message privé à selen
 Revenir en haut de la page
Haut de la page 
Inscrivez-vous !
- Posez vos questions

- Résolvez vos problèmes

- Aidez les autres

- Participez et créez vos discussions

- Dialoguez en privé avec d'autres membres

- Suivez vos sujets préférés

- Affichez les signatures des membres

TOUT EST GRATUIT !

Je crée mon compte




Les sujets pertinents liés
php et javascript: passation de variable: comment?
Aide aux débutants, erreurs dans les sites web
Menu HTML & Javascript fonctionne mal, aide SvP
centrer ce script
ouvrir pop up differente suivant origine du visite
souci pour ma pages commentaires
Aide pour faire un script php selection aléatoire
Paramétrage cookie sur système de vote
formulaire email dans site crée sous dreramweaver8
Message d'attente lors de download gros pdf par ex
faire un boutton changé image dans un anti boot
formulaire php, de l'aide s'il vous plait...
aidez moi avant de craqué pour mettre les smileys
localisation du code
HELP !! CREE UN FORMULAIRE MAIS UNE ERREUR....
Questionssss php
[Site Web] Projet novateur, homepage personalisé
 
Vous avez besoin d'aide ?
Des centaines d'experts sont à votre disposition sur les forums PC Astuces pour vous aider gratuitement, 24h/24, 7j/7.

Les derniers sujets résolus !



 > Tous les forumsForum des Webmasters

 
Forum PC Astuces© 1997-2008 WebastucesAller en haut de la page