problème dans mon while

Eléphant du PHP | 70 Messages

29 mai 2012, 12:32

Bonjour

je viens à nouveau vers vous car je rencontre un problème lors de l'affichage des données dans ma boucle while. Voici le problème, ma boucle while n'affiche rien du tout, même pas un message d'erreur.


J'ai bien une idée du problème mais je ne trouve pas la solution. Je pense que le while($row_images = mysql_fetch_array($result_sql_image)) pose problème car je l'utilise deux fois. Une fois pour l'affiche d'une image et une fois dans ma boucle pour l'affichage des vignettes....

Avez-vous une solution ?
<?php
	if (isset($_GET['rubrique']))
		{
		$rubrique = $_GET['rubrique'];
		
		$sql_image = ("
		SELECT id_realisation, titre_realisation, description_realisation, url_realisation, fichier_image
		FROM `realisation`
		JOIN `images` ON realisation.id_realisation = images.id_images_realisation
		WHERE id_categorie_realisation = $rubrique
		");
		$result_sql_image = mysql_query($sql_image) or die ('Erreur : '.mysql_error() );
		$row_images = mysql_fetch_array($result_sql_image);
		}
	else
		{
		$rubrique = 14;
		$sql_image = ("
		SELECT id_realisation, titre_realisation, description_realisation, url_realisation, fichier_image
		FROM `realisation`
		JOIN `images` ON realisation.id_realisation = images.id_images_realisation
		WHERE id_categorie_realisation = $rubrique
		");
		$result_sql_image = mysql_query($sql_image) or die ('Erreur : '.mysql_error() );
		$row_images = mysql_fetch_array($result_sql_image);
		}
?>
<div id="galerie">
	
	<div id="fullsize">
		<dl id="photo">
			<dd><img id="big_pict" src="img/fullsize/<?php echo $row_images['fichier_image'];?>" alt="Photo 1 en taille normale" /></dd>
			<dt><?php echo $row_images['titre_realisation'];?></dt>
		</dl>
	</div>
	
	<div id="thumbs">
		<ul id="galerie_mini">
		<?php
		
		while($row_images = mysql_fetch_array($result_sql_image))
			{
			echo '<li>';
				echo '<a href="img/fullsize/'.$row_images['fichier_image'].'" title="Titre de la photo 1"><img src="img/miniature/'.$row_images['fichier_image'].'" alt="'.$row_images['titre_realisation'].'" /></a>';
			echo '</li>';
			}
		?>
		</ul>
	</div>
</div>

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

29 mai 2012, 14:27

salut,

oui tu as ta réponse :)

la seconde fois mysql_fetch_array() retourne false car le jeux de résultat à était totalement parcourut.

la deux solutions :
- moyen : mysql_data_seek avec zéro en paramètre
- Mieux utiliser $row_images qui est définis la première, pur les deux choses ;)


@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 33 Messages

29 mai 2012, 14:40

<?php
    if (isset($_GET['rubrique'])) {
        $rubrique         = intval($_GET['rubrique']);
        $sql_image        = "SELECT id_realisation, titre_realisation, description_realisation, url_realisation, fichier_image FROM `realisation` JOIN `images` ON realisation.id_realisation = images.id_images_realisation WHERE id_categorie_realisation = " . $rubrique . ";";
        $result_sql_image = mysql_query($sql_image) or die('Erreur : '.mysql_error());
    }
    else {
        $rubrique         = 14;
        $sql_image        = "SELECT id_realisation, titre_realisation, description_realisation, url_realisation, fichier_image FROM `realisation` JOIN `images` ON realisation.id_realisation = images.id_images_realisation WHERE id_categorie_realisation = " . $rubrique . ";";
        $result_sql_image = mysql_query($sql_image) or die('Erreur : '.mysql_error());
    }
    
    $images = array();
    
    while ($row_images = mysql_fetch_array($result_sql_image)) {
        array_push($images, $row_images);
    }
    
    if (count($images) > 0) {
?>

<div id="galerie">
    <div id="fullsize">
        <dl id="photo">
            <dd><img id="big_pict" src="img/fullsize/<?php echo $images[0]['fichier_image'];?>" alt="Photo 1 en taille normale" /></dd>
            <dt><?php echo $images[0]['titre_realisation'];?></dt>
        </dl>
    </div>
    
    <div id="thumbs">
        <ul id="galerie_mini">
<?php
        foreach ($images as $index => $row) {
            echo '<li>';
            echo '<a href="img/fullsize/' . $row['fichier_image'] . '" title="Titre de la photo 1"><img src="img/miniature/' . $row['fichier_image'] . '" alt="' . $row['titre_realisation'] . '" /></a>';
            echo '</li>';
        }
?>
        </ul>
    </div>
</div>

<?php
    }
?>
J'ai opté pour stocké toutes les colonnes dans un tableau, et ainsi, le parcourir.

La fonction
mysql_fetch_array utilise un pointeur qui avance de un à chaque appel.

Eléphant du PHP | 70 Messages

29 mai 2012, 15:27

Merci beaucoup pour le coup de main !! =D>