8791 sujets

Développement web côté serveur, CMS

Bonjour à tous,

j'ai une base de données 'produits' pour lesquels il y à chaque fois 5 images par produit. Je souhaite que sur l'affiche produit s'affiche d'abord la première image puis lorsque l'on clique sur l'image on passe à la suivante.

Mon code fonctionne à moitié car lorsque on clique sur suivant / précédent, ma variable 'page' qui est passé en GET s'incrémente correctement. Seule soucis, je n'arrive pas à passer à l'image suivante. J'ai bien compris que c'est identique au principe de la pagination, mais je ne trouve vois pas où est mon problème.

Quelqu'un aurait une idée?

Merci pour votre aide

Voici mon code:



$sql_total=mysql_query("SELECT images.chemin_image FROM images INNER JOIN biens ON images.id_biens=biens.id_biens WHERE images.id_biens='361'") or die(mysql_error());//Requete pour comptabiliser le nombre total d'images

$sql_images=mysql_query("SELECT images.chemin_image FROM images INNER JOIN biens ON images.id_biens=biens.id_biens WHERE images.id_biens='361' LIMIT 0,1") or die(mysql_error());//Requete spéciale pour l'affichage des différentes images

$nbImages=mysql_num_rows($sql_total);

echo '<p>Nombre d\'images trouvées : '.$nbImages.'</p>';

if(isset($_GET['page']))
	{
	$page=$_GET['page'];
	}
	else
	{
	$page=0;
	}

$page=$_GET['page'];
$imagePrec=$page-1;
$imageSuivante=$page+1;
$prec='<< Préc';
$suiv='Suiv >>';


if ($page<>1) /*Affiche précédent tant qu'on est pas sur l'image 1*/
		{	
		echo '<a href="index.php?page='.$imagePrec.'">'.$prec.'</a> / ';
		}
	for ($j=0; $j<=($nbImages); $j++)
		{
		while($donnees=mysql_fetch_array($sql_images))
		{
		$image='../'; //Permet de remonter d"un  niveau de Admin au dossier des images
		$image.=$donnees['chemin_image'];
		/*On récupère les choix de l'utilisateur et on indique la page suivante*/
		echo '<a href="index.php?page=' .$j. '">'.$j.'<img src='.$image.' ></a>';
		echo '<p><a href="index.php?page=' .$j. '">'.$j.'</a> </p> ';
		echo '<p>J = '.$j.'</p>'; //Permet simplement de vérifier que la variable s'incrémente
		echo '<p>Page = '.$page.'</p>';//Permet simplement de vérifier que la variable s'incrémente

		}
		}
	if ($page<>$nbImages) /*Affiche suivant tant qu'on est pas sur la dernière page*/
		{	
		echo '<a href="index.php?page=' .$imageSuivante. '">'.$suiv.'</a>';
		}

Modifié par paintbox (23 Jul 2010 - 13:01)
Salut,

quelque chose comme ça :
include_once('connexion.inc.php');

$id_bien = 361;

$sql_images = mysql_query('Select chemin_image FROM images NATURAL JOIN biens WHERE images.id_biens='.intval($id_bien)) or die(mysql_error());
$nbImages = mysql_num_rows($sql_images);

if(!empty($nbImages)) {
	echo '<p>Nombre d\'images trouvées : '.$nbImages.'</p>'; 
	$image = !empty($_GET['image']) ? intval($_GET['image']) : 0;

	$images = array();
	while($donnees = mysql_fetch_row($sql_images)) {
		$images[] = $donnees[0];
	}

	if ($image > 0) {
		echo '<a href="index.php?image='. ($image-1) .'"><< Préc</a> / '; 
	}
	
	echo '<img src="../'. $images[$image] .'" title="'. basename($images[$image]) .'" alt="" />'; 
	
	if ($image < count($images)-1) {
		echo '<a href="index.php?image='. ($image+1) .'"> / Suiv >></a>'; 
	}
	
} else {
	echo '<p>Aucune image pour ce bien.</p>';
}
Bonjour Heyoan,

merci pour ta réponse, c'est parfait. je l'ai modifié pour que le lien se fasse sur l'image et que quand on arrive à la dernière image, il repart sur la première (histoire de voir les images en boucle).

J'ai juste une question pour cette partie :


while($donnees = mysql_fetch_row($sql_images)) //Parcours du tableau images
    { 
        $images[] = $donnees[0]; 
    } 


je comprends le principe, mais je ne comprends pas pourquoi on met $donnees[0] et comment cela s'incrémente. C'est le 0 qui me trouble. (Désolé si c'est une bête question)

Merci pour ton aide en tous cas !
paintbox a écrit :
je ne comprends pas pourquoi on met $donnees[0] et comment cela s'incrémente. C'est le 0 qui me trouble.
Eh bien pour lister les résultats d'une requête on peut utiliser plusieurs fonctions (mysql_fetch_array, mysql_fetch_assoc, mysql_fetch_object...) dont mysql_fetch_row qui permet de récupérer les champs en fonction de leur indice (commençant par 0) :
$sql = 'Select nom, prenom, age from membres';
$result = mysql_query($sql);
while($donnees = mysql_fetch_row($result)) {
	$nom = $donnees[0];
	$prenom = $donnees[1];
	$age = $donnees[2];
	// traitement
}

Si tu considères que ce sujet est [Résolu] merci de l'indiquer en éditant ton premier post et en modifiant le titre. Smiley cligne
Modifié par Heyoan (23 Jul 2010 - 12:57)