Affichage page par page
Résolu
Melooo
Messages postés
1405
Date d'inscription
Statut
Membre
Dernière intervention
-
Melooo Messages postés 1405 Date d'inscription Statut Membre Dernière intervention -
Melooo Messages postés 1405 Date d'inscription Statut Membre Dernière intervention -
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 :
Mon erreur se trouve sur le mysql_fetch array celui ci
Merci pour votre aide
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:
- Affichage page par page
- Supprimer page word - Guide
- Imprimer tableau excel sur une page - Guide
- Page d'accueil - Guide
- Page privée - Guide
- Page accueil iphone - Guide
17 réponses
Pourquoi ne mets tu pas un LIMIT dans ta requete :
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)
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)
J'ai bien une limite
Merci pour votre réponse aussi rapide.
$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.
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.
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.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Comme ça :
Par contre, maintenant, choix peut être passer en GET ou en POST donc il faudrait tester en début de page par exemple :
Et remplacer après dans le code $_POST['choix'] par $monChoix
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
<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
pourquoi $x = $monChoix ? ? Tu as ta valeur dans $monChoix et tu ne l'écrases pas.
Petite question qui a peut-être un rapport : dans
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.
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.
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
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
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
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
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 !!
L'url de ma seconde page est celle ci : ?limite=1&choix=6
La limite est toujours 0,1 !!
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!
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'];
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'];
J'ai fait ce que vous m'avez demandez
Ca affiche bien toutes mes images, et le test dans mysql fonctionne....
Ca affiche bien toutes mes images, et le test dans mysql fonctionne....
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'];
c'est ton $x qui pose problème, enlève le et utilise $monChoix
et cette ligne est à supprimer : $x = $_POST['choix'];
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.
Ç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.