PHP - Résultat dans une nouvelle page php

Fermé
zevinny Messages postés 164 Date d'inscription mardi 28 décembre 2004 Statut Membre Dernière intervention 13 février 2010 - 8 août 2008 à 22:22
kryoportail Messages postés 222 Date d'inscription dimanche 10 août 2008 Statut Membre Dernière intervention 22 mai 2014 - 10 août 2008 à 22:34
Bonjour,

Je suis calé à une mise en page, j'ai composé une petite galerie de photos dynamique, le tableau des miiatures s'affichent correctement, donc dans la présentation désirée, mais j'aimerais garder cette même présentatation lors d'un clic sur l'image...

Jusqu'a présent, l'image s'ouvre dans la même page mais dans un fond blanc! Voici le code:

echo "<td><a href=".$tableau[$i].">";
echo "<img src=photos.php?f=".$tableau[$i]." alt=".$tableau[$i]." border=0></a>";
...
A voir également:

5 réponses

ddez Messages postés 19 Date d'inscription vendredi 8 août 2008 Statut Membre Dernière intervention 10 août 2008 9
9 août 2008 à 10:03
Bonjour,

Le mieux est peut etre de gérer le changement d'image en javascript. Cela t'évitera de recharger la page.
Voila un exemple :
<img id="laGrandeImage">
<div class="listeDesMiniatures">
 <img src="miniature/photo1.jpg" onClick="document.getElementById('laGrandeImage').src='enGrand/photo1.jpg'"> 
 <img src="miniature/photo2.jpg" onClick="document.getElementById('laGrandeImage').src='enGrand/photo2.jpg'"> 
 <img src="miniature/photo3.jpg" onClick="document.getElementById('laGrandeImage').src='enGrand/photo3.jpg'"> 
 <img src="miniature/photo4.jpg" onClick="document.getElementById('laGrandeImage').src='enGrand/photo4.jpg'"> 
 <img src="miniature/photo5.jpg" onClick="document.getElementById('laGrandeImage').src='enGrand/photo5.jpg'"> 
 <img src="miniature/photo6.jpg" onClick="document.getElementById('laGrandeImage').src='enGrand/photo6.jpg'"> 
 <img src="miniature/photo7.jpg" onClick="document.getElementById('laGrandeImage').src='enGrand/photo7.jpg'"> 
</div>
-1
zevinny Messages postés 164 Date d'inscription mardi 28 décembre 2004 Statut Membre Dernière intervention 13 février 2010 56
9 août 2008 à 20:52
Merci...

Mais le nombre est une variable... cela ne marche que quand le nombre d'images est connu!
-1
kryoportail Messages postés 222 Date d'inscription dimanche 10 août 2008 Statut Membre Dernière intervention 22 mai 2014 125
10 août 2008 à 03:29
Bonjour,

1. Je suis tout à fait d'accord avec 'zevinny', le mieux pour ce que tu veux faire c'est JavaScript (inutile de gaspiller des ressources serveurs pour régénérer une page et la renvoyer alors que seule une image est nécessaire. Il y a des modules tout fait JQuery pour faire ce que tu souhaites rapidement et facilement (TickBox par exemple) si tu te sens pas à l'aise en Javascript, c'est généralement simple à mettre en œuvre et très bien expliqué.

"Le nombre est une variable", ça ne change rien, si tu fait un 'tant que' ou une énumération sur le tableau, exemple (en complétant ce qui a été proposé) :


<img id="laGrandeImage">
<div class="listeDesMiniatures">
<?php
// Tableau des images à afficher
$aImgProperties = array(
    array( 'miniature/photo1.jpg', 'enGrand/photo1.jpg', 'Description Photo 1' ),
    array( 'miniature/photo2.jpg', 'enGrand/photo2.jpg', 'Description Photo 2' ),
    ...
    array( 'miniature/photoN.jpg', 'enGrand/photoN.jpg', 'Description Photo N' )
);

// Pour chaque image
foreach( $aImgProperties as $aImgProperty )
{
   $sUrlThumb = $aImgProperty[0];
   $sUrlImg = $aImgProperty[1];
   $sTitle = $aImgProperty[2];
    echo( "<img src=\"{$sUrlThumb}\" onClick=\"javascript:document.getElementById('laGrandeImage').src='{$sUrlImg}';\" alt=\"{$sTitle}\">" );
}

?>
</div>



ATTENTION : si les urls ou le titre de l'image peuvent recevoir des 'quotes', il faudra les échappés ! Si non le javascript risque de ne pas marcher ou la page sera mal-interprétée !


2. Si tu veux que la page chargée lors du clique de souris ressemble à celle de la galerie, rien ne t'empêche de copier-coller le code HTML et PHP de la page précédente en modifiant uniquement les parties ou l'image doit être agrandie !
Ou alors, j'ai pas compris ce que tu veux faire...



Amicalement,
S@M...
http://kryoportail.ath.cx
-1
zevinny Messages postés 164 Date d'inscription mardi 28 décembre 2004 Statut Membre Dernière intervention 13 février 2010 56
10 août 2008 à 21:04
Je suis d'accord avec sur ce point, mais le fait que se soit une variable, ça m'intrigue un peu!

héhé la page est blanche, mais le code proposé doit pas être si compliqué que ça...

pour réduire l'image, j'utilise en php,
$ratio = 150;  

$image = $_GET['f']; 
    // on récupère les infos de cette image 
    $tableau = @getimagesize('./'.$image); 

 $src = imagecreatefromjpeg($dir.'/'.$image); 
          // on teste si notre image est de type paysage ou portrait 
          if ($tableau[0] > $tableau[1]) { 
             $im = imagecreatetruecolor(round(($ratio/$tableau[1])*$tableau[0]), $ratio); 
             imagecopyresampled($im, $src, 0, 0, 0, 0, round(($ratio/$tableau[1])*$tableau[0]), $ratio, $tableau[0], $tableau[1]); 


Allé, j'avoue mon code il est hyper compliqué et je commence à ne plus m'en sortir... Ce code ci ouvre ensuite une autre page et affiche les photo en miniature sur un ratio à 150.

  <?php

  $tableau = array();  
  $dossier = opendir ('./');  
  while ($fichier = readdir ($dossier)) { 
     if (eregi('.jpg', $fichier)) { 
        $tableau[] = $fichier; 
     }  
  }  
  closedir ($dossier);  
   
  $nbcol=4;  
  $nbpics = count($tableau);  
   
  if ($nbpics != 0) { 
     echo '<table>'; 
     for ($i=0; $i<$nbpics; $i++){ 
        if($i%$nbcol==0) echo '<tr>';

        echo '<td><a href="' , $tableau[$i] , '">';
		echo '<img src="photos.php?f=' , $tableau[$i] , '" alt=',$tableau[$i],' border="0"/></a>';
		echo '<br><center>'.$tableau[$i].'</center></td>'; 
        if($i%$nbcol==($nbcol-1)) echo '</tr>'; 
     } 
     echo '</table>';  
  }  
  else echo 'Aucune image à afficher';  
  ?>


Pas mal hein!

Le principale est que me chérie, qui utilisera cette fonction aussi, puis simplement charger les photos sur le site en incluant la page de garde pour les photos et qu'elle ne doivent pas commencer à coder!

Ici ce que vous démontrrez en javaS est un nombre connu, alors est ce que

array (".$tableau[i].") peut également fonctionner?
-1

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
kryoportail Messages postés 222 Date d'inscription dimanche 10 août 2008 Statut Membre Dernière intervention 22 mai 2014 125
10 août 2008 à 22:34
Re,

Pour commencer,

Erratum : je voulais dire que j'étais d'accord avec 'ddez' concernant le Javascript dans mon post précédent !...

Concernant le premier script fourni (création des miniatures) pourquoi pas, mais il me semble qu'il puisse être amélioré au niveau de la sécurité...

1. Tu récupères une variable utilisateur 'f', celle-ci peut donc être choisie à tes dépends...
2. Par conséquent, imagine que sur ton site tu stockes dans un répertoire ou le serveur web peut lire, une image de ta copine nue.... Si je connais l'endroit ou est placée cette photo, je peux alors récupérer une miniature de celle-ci : f=../../../un_répertoire/la_photo_de_ta_copine_nue.jpg
( Ne pas oublier que '../' permet de revenir à un dossier parent...)

- Une solution serait donc de lister les images contenues dans le répertoire de ta galerie dans un tableau puis de contrôler que f (fournit par l'utilisateur) existe bien dans ce tableau.
- Une autre solution serait de créer le tableau des images à partir d'une base de données, d'un fichier XML, ou directement en PHP ce qui te permettrait de fournir un titre pour chaque image.
- Encore une autre solution serait d'utiliser la fonction PHP 'realpath' voir le manuel PHP : https://www.php.net/manual/fr/function.realpath.php qui permet de récupérer le chemin absolu d'une fichier ou d'un répertoire et de le comparer avec le chemin absolu du répertoire de la galerie.

Toujours concernant, le premier script, le dernier 'if' ne semble pas être fermé.
Et enfin ce script ne semble pas terminé, car effectivement il semble que tu puisse obtenir une miniature mais celle-ci ne semble ni enregistrée dans un fichier, ni renvoyée vers le navigateur...

Ce qui peut expliquer le symptôme de la page blanche...

Un 'imagejpeg( $im );' ne serait pas de trop à la fin de ce script !... Il permettra d'envoyer vers le navigateur de l'internaute l'image miniature que tu précédement créé.

Un conseil, procède par étape.
- Vérifie que tu puisses afficher les images en grand.
- Réalise et teste ton script renvoyant les miniatures
- Enfin termine en créant la page qui affichera les miatures et qui chargera l'image en grand lorsqu'une miature est sélectionner.

Si tu te noies dans ton code, c'est peut être un manque d'expérience, mais cela peut aussi venir d'une mauvaise organisation. As-tu penser à créer des objets PHP ? Cela permettrai de segmenter ton code et de le rendre ainsi plus clair et plus 'malléable'...

Amicalement,
S@M
http://kryoportail.ath.cx
-1