Affichage page par page

Résolu/Fermé
Melooo Messages postés 1405 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 18 mars 2013 - 30 janv. 2009 à 11:18
Melooo Messages postés 1405 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 18 mars 2013 - 30 janv. 2009 à 16:20
Bonjour,
J'affiche des images ou le chemin est stocké dans ma base de données, j'affiche également son nom et le commentaire, jusque la tout va bien, sauf que j'ai mis un code en place pour permmettre de mettre que 2 images par pages, et avoir un lien me permettant de voir les autres.
C'est à dire que j'aurais page suivante et précédente et que sur chaque page j'aurais deux images... Voici mon code :
       <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
	   <link rel="stylesheet" media="screen" type="text/css" title="Design" href="design.css" />
	       <link rel="stylesheet" href="style.css" type="text/css" />

<?php
//connection a la BDD
	include('connection.php');
	include('index.php');
	

	
	// Séléction les noms des rubriques dans l'ordre alphabétique
	$req = ("SELECT NomRubrique, NumeroRubrique FROM rubri order by NomRubrique asc");
	// Execution de la requete
	$result = mysql_query($req);
	?>
	<!-- Création de la liste déroulante -->
	Quelle rubrique voulez vous afficher ? 
	<form action="rubrique.php" method="POST">
	<select name="choix">
	<option value="0" selected="selected">Choissisez votre rubrique </option>

	
	
	<?php
	while ($donnees = mysql_fetch_array($result))
					{
					// Affichage du nom de la rubrique
					?>
						
						<?php
						echo "<option value = '$donnees[NumeroRubrique]'>".$donnees['NomRubrique']. "</option>";
					}

	?>
	</select>
	<input type="submit" name="button"> 
	</form>
<br>
<?php




if (isset ($_POST['choix']))
	{
				// Initialisation de la variable nombre, pour savoir le nombre d'image à afficher/page
				$nombre = 2;
				// Initialisation de limite à 0
				if (!isset($limite)) $limite = 0; 
				$path_parts = pathinfo($_SERVER['PHP_SELF']);
				$page = $path_parts['basename'];
				// Requete sql permettant de compter le nombre d'enregistrement dans la table imagereduite
				$select = "SELECT count(NumeroImage) FROM imagereduite";
				// Execution requete
				$resultatselect = mysql_query($select);
				// Nombre d'enregistrement
				$row = mysql_fetch_row($resultatselect);
				$nb_resultat = $row[0];
				$limitesuivante = $limite + $nombre;
				$limiteprecedente = $limite - $nombre;
if($limite != 0) 
{
				echo '<a href="'.$page.'?limite='.$limiteprecedente.'">Page précédente</a>';
}

if($limitesuivante < $nb_resultat) 
{
			echo '<a href="'.$page.'?limite='.$limitesuivante.'">Page Suivante</a>';
}
	$x = $_POST['choix'];
	//echo $x;
	$req = "SELECT * FROM rubri WHERE NumeroRubrique = '".$x."'";
	// Execution de la requete
	$result=mysql_query($req);
	// Parcours résultat
	$requete = "SELECT LienImage ,ImageAgrandie, CommentaireImage, NomImage FROM imagereduite WHERE NumeroRubrique = '".$x."' ORDER BY NomImage ASC LIMIT  '".$limite."','".$nombre."'";
		// Execution de la requete
		$resultat = mysql_query($requete);
		
		while ($donnee = mysql_fetch_array($resultat))
		{

			// Affichage des photos reduites et agrandies

		echo '<a href="photos/agrandies/'.$donnee[1].'" rel="lightbox"><img border="0" src="photos/reduites/'.$donnee[0].'">;</a>';

		
			?>
			
			<br><br>
			<font face="Papyrus" size = "3px">
			
			<table>
		
<tr>
			<td bgcolor="blue"><?php
			echo 'Commentaire : '. $donnee[2];
			?>
			<br></td></tr>
</tr>
			<td><?php 
			echo 'Nom : ' .$donnee[3];
			?>
			</td>
			</tr>
			</font>
			</table>
			<?php
		}
	}
else
{
	//Requete séléction rubrique
	$req = "SELECT * FROM rubri ;";
	// Execution de la requete
	$result=mysql_query($req);
	// Parcours résultat

	while ($row= mysql_fetch_array($result))
	{

				
		// Deux colonnes qui correspondent à LienImage et à ImageAgrandie
		echo $row[0]." ".$row[1];
		// Requete permettant l'affichage des images reduites et agrandies
		
		
	$select = "SELECT * FROM imagereduite";
	$res = mysql_query($select);
	$nb_images = mysql_num_rows($res);
	echo $nb_images;
	
	
		$requete = ("SELECT LienImage ,ImageAgrandie FROM imagereduite WHERE NumeroRubrique = ".$row[0]);
		// Execution de la requete
		$resultat = mysql_query($requete);
		
		while ($donnee = mysql_fetch_array($resultat))
		{
			
			// Affichage des photos reduites et agrandies
			echo '<a href="photos/agrandies/'.$donnee[1].'" rel="lightbox"><img border="0" src="photos/reduites/'.$donnee[0].'">;</a>';

		}
	
		
	}

}



Mon erreur se trouve sur le mysql_fetch array celui ci
		while ($donnee = mysql_fetch_array($resultat))

Merci pour votre aide
A voir également:

17 réponses

Mikey_UFC Messages postés 312 Date d'inscription jeudi 8 mars 2007 Statut Membre Dernière intervention 2 août 2010 1
30 janv. 2009 à 11:30
Pourquoi ne mets tu pas un LIMIT dans ta requete :
 LIMIT x, 2; ou x = $numpage*2+1

pour qu'il y est une page suivante, il suffit que $limite > $numpage*2+1
=> $numpage < ($limite-1)/2

si la 1ère page est la page 0 sinon remplacer $numpage par ($numpage-1)
0
Melooo Messages postés 1405 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 18 mars 2013 84
30 janv. 2009 à 11:36
J'ai bien une limite
	$requete = "SELECT LienImage ,ImageAgrandie, CommentaireImage, NomImage FROM imagereduite WHERE NumeroRubrique = '".$x."' ORDER BY NomImage ASC LIMIT  '".$limite."','".$nombre."'";




Merci pour votre réponse aussi rapide.
0
Mikey_UFC Messages postés 312 Date d'inscription jeudi 8 mars 2007 Statut Membre Dernière intervention 2 août 2010 1
30 janv. 2009 à 11:44
Désolé, je n'avais pas vu.
Par contre on ne met pas d'apostrophe pour les valeurs de limite.
0
Melooo Messages postés 1405 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 18 mars 2013 84
30 janv. 2009 à 11:55
Oui en effet, merci
l'erreur est corrigé mais le seul petit truc c'est que quand je clique sur suivant pour voir les autres images, il me redirige vers ma page ou toute les photos sont affichés.
0

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

Posez votre question
Mikey_UFC Messages postés 312 Date d'inscription jeudi 8 mars 2007 Statut Membre Dernière intervention 2 août 2010 1
30 janv. 2009 à 12:02
Rajoute
"&choix=".$_POST['choix']
dans tes liens.

Edit : avec ". c'est mieux
0
Melooo Messages postés 1405 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 18 mars 2013 84
30 janv. 2009 à 13:43
Merci pour vos réponses,
Vous me dite de mettre $_POST['choix'] dans mes liens, mais c'est à dire ?
0
Mikey_UFC Messages postés 312 Date d'inscription jeudi 8 mars 2007 Statut Membre Dernière intervention 2 août 2010 1
30 janv. 2009 à 14:47
Comme ça :
echo '<a href="'.$page.'?limite='.$limiteprecedente.'&choix='.$_POST['choix'].'">Page précédente</a>';


echo '<a href="'.$page.'?limite='.$limitesuivante.'&choix='.$_POST['choix'].'">Page Suivante</a>';


Par contre, maintenant, choix peut être passer en GET ou en POST donc il faudrait tester en début de page par exemple :
if (isset ($_POST['choix'])) $monChoix = $_POST['choix'];
elseif (isset ($_GET['choix'])) $monChoix = $_GET['choix'];

Et remplacer après dans le code $_POST['choix'] par $monChoix
0
Melooo Messages postés 1405 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 18 mars 2013 84
30 janv. 2009 à 14:56

       <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
	   <link rel="stylesheet" media="screen" type="text/css" title="Design" href="design.css" />
	       <link rel="stylesheet" href="style.css" type="text/css" />

<?php
//connection a la BDD
	include('connection.php');
	include('index.php');
	
if (isset ($_POST['choix'])) $monChoix = $_POST['choix'];
elseif (isset ($_GET['choix'])) $monChoix = $_GET['choix'];

	
	// Séléction les noms des rubriques dans l'ordre alphabétique
	$req = ("SELECT NomRubrique, NumeroRubrique FROM rubri order by NomRubrique asc");
	// Execution de la requete
	$result = mysql_query($req);
	?>
	<!-- Création de la liste déroulante -->
	Quelle rubrique voulez vous afficher ? 
	<form action="rubrique.php" method="POST">
	<select name="choix">
	<option value="0" selected="selected">Choissisez votre rubrique </option>

	
	
	<?php
	while ($donnees = mysql_fetch_array($result))
					{
					// Affichage du nom de la rubrique
					?>
						
						<?php
						echo "<option value = '$donnees[NumeroRubrique]'>".$donnees['NomRubrique']. "</option>";
					}

	?>
	</select>
	<input type="submit" name="button"> 
	</form>
<br>
<?php




if (isset ($monChoix))
	{
		$x = $monChoix;
				// Initialisation de la variable nombre, pour savoir le nombre d'image à afficher/page
				$nombre = 1;
				// Initialisation de limite à 0
				if (!isset($limite)) $limite = 0; 
									    if(isset($_GET['limite'])) 

        $limite=$_GET['limite'];
    else   $limite=0;
				$path_parts = pathinfo($_SERVER['PHP_SELF']);
				$page = $path_parts['basename'];
				// Requete sql permettant de compter le nombre d'enregistrement dans la table imagereduite
				$select = "SELECT count(NumeroImage) FROM imagereduite";
				// Execution requete
				$resultatselect = mysql_query($select);
				// Nombre d'enregistrement
				$row = mysql_fetch_row($resultatselect);
				$nb_resultat = $row[0];
				$limitesuivante = $limite + $nombre;
				echo $limitesuivante;
				$limiteprecedente = $limite - $nombre;

if($limite != 0) 
{
				echo '<a href="'.$page.'?limite='.$limiteprecedente.'&choix='.$monChoix.'">Page précédente</a>';
}

if($limitesuivante < $nb_resultat) 
{
	
			echo '<a href="'.$page.'?limite='.$limitesuivante.'&choix='.$monChoix.'">Page Suivante</a>';
}


	$x = $_POST['choix'];
	//echo $x;
	$req = "SELECT * FROM rubri WHERE NumeroRubrique = '".$x."'";
	// Execution de la requete
	$result=mysql_query($req);
	// Parcours résultat
	$requete = "SELECT LienImage ,ImageAgrandie, CommentaireImage, NomImage FROM imagereduite WHERE NumeroRubrique = '".$x."' ORDER BY NomImage ASC limit ".$limite.",".$nombre."";


		// Execution de la requete
		$resultat = mysql_query($requete) or die($req . '<br />' . mysql_error());

		
		while ($donnee = mysql_fetch_array($resultat))
		{

			// Affichage des photos reduites et agrandies

		echo '<a href="photos/agrandies/'.$donnee[1].'"><img border="0" src="photos/reduites/'.$donnee[0].'">;</a>';

		
			?>
			
			<br><br>
			<font face="Papyrus" size = "3px">
			
			<table>
		
<tr>
			<td bgcolor="blue"><?php
			echo 'Commentaire : '. $donnee[2];
			?>
			<br></td></tr>
</tr>
			<td><?php 
			echo 'Nom : ' .$donnee[3];
			?>
			</td>
			</tr>
			</font>
			</table>
			<?php
		}
	}










Mon code ressemble à ça maintenant, l'erreur que j'avais auparavant n'es plus d'actualité,
seulement maintenant quand je clique sur suivant aucune erreur s'affiche, mais l'image n'apparaît pas.
et la limite est = 2 lorsque je clique sur suivant
0
Mikey_UFC Messages postés 312 Date d'inscription jeudi 8 mars 2007 Statut Membre Dernière intervention 2 août 2010 1
30 janv. 2009 à 15:08
pourquoi $x = $monChoix ? ? Tu as ta valeur dans $monChoix et tu ne l'écrases pas.

Petite question qui a peut-être un rapport : dans
if (isset ($monChoix))
tu fais :
$select = "SELECT count(NumeroImage) FROM imagereduite";
Est-ce que ça compte toutes les images de la catégorie choisie ou bien toutes les images ?
Si ça compte toutes les images, c'est peut-être que tu n'as pas assez d'images réduites pour la 2ème page.
0
Melooo Messages postés 1405 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 18 mars 2013 84
30 janv. 2009 à 15:12
Ca me compte toutes les images. J'ai créer une rubrique vacances, a laquelle j'ai rajoutée deux photos.
Etant donné que ma limite est fixé à une par page il devrait m'afficher l'autre image quand je clique sur suivant.
Merci en tout cas de rester patient et de continuer de m'aider
0
Mikey_UFC Messages postés 312 Date d'inscription jeudi 8 mars 2007 Statut Membre Dernière intervention 2 août 2010 1
30 janv. 2009 à 15:35
Ca ne devrait pas compter que les images de la catégorie ?

url de la 2ème page ( où l'image n'apparait pas ) est-elle bonne ?

echo $requete = "SELECT LienImage ,ImageAgrandie, CommentaireImage, NomImage FROM imagereduite WHERE NumeroRubrique = '".$x."' ORDER BY NomImage ASC limit ".$limite.",".$nombre;

pour vérifier $limite et $nombre
0
Melooo Messages postés 1405 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 18 mars 2013 84
30 janv. 2009 à 15:49
En effet ça devrait m'afficher les images selon la rubrique choisie erreur corrigée je vous en remercie :)
L'url de ma seconde page est celle ci : ?limite=1&choix=6
La limite est toujours 0,1 !!
0
Melooo Messages postés 1405 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 18 mars 2013 84
30 janv. 2009 à 15:58
J'ai fais le echo de la requête pour la premiere page il voit bien que c'est la rubrique numéro 6 mais lorsque je clique sur suivant il ne trouve plus le numéro de la requête! AU SECOURS!
0
Mikey_UFC Messages postés 312 Date d'inscription jeudi 8 mars 2007 Statut Membre Dernière intervention 2 août 2010 1
30 janv. 2009 à 16:00
Tu peux faire un test en enlevant le limite de la requête pour vérifier que tu affiches bien toutes les images sur la 1ère page.

Si ça marche, essaye de tester la requête directement sous mysql pour vérifier que tu obtiens bien la (ou les) lignes correspondantes.

Edit : donc dans l'url, tu n'as pas choix=6 ?
ou alors c'est $monchoix = $_GET["choix"] qui ne marche pas.

Re Edit : c'est ton $x qui pose problème, enlève le et utilise $monChoix
et cette ligne est à supprimer : $x = $_POST['choix'];
0
Melooo Messages postés 1405 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 18 mars 2013 84
30 janv. 2009 à 16:12
J'ai fait ce que vous m'avez demandez
Ca affiche bien toutes mes images, et le test dans mysql fonctionne....
0
Mikey_UFC Messages postés 312 Date d'inscription jeudi 8 mars 2007 Statut Membre Dernière intervention 2 août 2010 1
30 janv. 2009 à 16:14
J'avais édité juste avant donc tu n'as peut-être pas vu :

c'est ton $x qui pose problème, enlève le et utilise $monChoix
et cette ligne est à supprimer : $x = $_POST['choix'];
0
Melooo Messages postés 1405 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 18 mars 2013 84
30 janv. 2009 à 16:20
MERCI MERCI MERCI !!
Ça marche !!!!!!!!!!!!!
Je vous remercie pour avoir répondu aussi vite, et désolé si je vous ai pris un bout de l'après midi pour résoudre mon problème.
Mais en tout cas merci vous m'avez vraiment bien aidée grâce à vos explications concrètes et à votre calme.
Bonne fin de journée.
0