Affichage page par page

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Affichage page par page

Re: Affichage page par page

par dan4 » 31 mars 2010, 18:01

Bonjour,
je regarde de nombreux tutos, mais je galère pas mal pour afficher des résultats par par page.
Voici le code que j'ai mis en place, mais à part ma première ligne qui s'affiche correctement, après j'ai tout qui s'affiche, et quelque soit l'ndroit où j'essaie de mettre un "LIMIT" ça marche plus :
<?php

//Information pour la connection à le DB
$host = 'localhost';
$user = 'root';
$pass = '';
$db = 'vol';
    
//Connection à la BDD
$link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() );
mysql_select_db($db) or die ('Erreur :'.mysql_error());

$nombre = 5;  // on va afficher 5 résultats par page.
if (!isset($limite)) $limite = 0; // si on arrive sur la page pour la première fois 
// on met limite à 0.
			   
$choix_critere=$_GET['critere'];    
$path_parts = pathinfo($_SERVER['PHP_SELF']);
$page = $path_parts['basename'];

$select = 'SELECT DISTINCT critere FROM criteres WHERE criteres.critere="'.$choix_critere.'" LIMIT '.$limite.','.$nombre;
$result = mysql_query($select,$link)  or die ('Erreur : '.mysql_error() );
$row = mysql_fetch_row($result);
$total = $row[0];

/*Requete mysql*/
	echo "<br/>";
	echo '<li class="pays"><img src="images/pt_logo_webcam_01.png" /> Vous regardez des webcam situées en '.$choix_critere.'</li>';
	echo "<br/>";
	
if(isset($_GET["critere"])) 
{
$image = mysql_query("SELECT DISTINCT webcam.url as url, webcam.ville as ville, webcam.commentaire as commentaire, criteres.critere as critere, pays.drapeaux FROM webcam LEFT JOIN criteres ON (webcam.id_critere = criteres.id) LEFT JOIN pays ON (webcam.id_pays = pays.id) WHERE criteres.critere='".$_GET['critere']."'")or die(mysql_error());

while ($affichage = mysql_fetch_assoc($image) ) 
//while ($row = mysql_fetch_row($result) )      
{    
    echo '<div class="img">';
    echo $affichage['ville'];
	echo ' <img src="drapeaux_pt/'.$affichage['drapeaux'].'" width="16" height="11">';
	echo "<br />";
	echo '<img src="'.$affichage['url'].'" width="190" height="143">';     
    echo "<br />";
    //echo $affichage['commentaire'];
    echo "</div>";  
} 
	echo "<br />";
}
/*Deconnexion de MySQL*/
mysql_close();	
	  
?>
Merci de votre aide
Pour le page par page, j'ai trouvé ce code que j'ai été capable d'adapter ma mon site.
voici le lien :

http://seebz.net/12-creer-un-systeme-de-pagination.html

Il est super fonctionnel et en plus, il est beau.

C'est pas facile d'avoir de l'aide en général lié à notre cas. Mais je pense que ça va surement réponse à votre problème.

Moi, le mien, mon problème est d'afficher par critère en tenant compte de la pagination.
A partir d'un formulaire, envoyer à une requête pour afficher par catégorie

si des fois que voici mon code :
...
?>
<form name="ici">
    <select name="ici" size="1">
    <option value="ametis">Ametis</option>
    <option value="zzz">zzz</option>
    </select>
    <input type="submit" value="Envoyer">
</form>
<?php

 if(!empty($_POST['ici']))
 {
       if( $_POST['ici'] == "ici" ) // On sélectionne tout
       {
         $sql = "SELECT * FROM produits ORDER BY noart ASC LIMIT $limit_start,$pagination";
       }
       else // Seulement une catégorie
       {
         $sql = "SELECT * FROM produits WHERE nocat={$_POST['ici']} ORDER BY noart ASC LIMIT $limit_start,$pagination";
       }
 }
 else
 {
       $sql = "SELECT * FROM produits ORDER BY noart LIMIT $limit_start,$pagination";
 }
$req = mysql_query($sql,$db) or die(mysql_error());

...

par djtec » 25 nov. 2008, 21:51

Ce qui bug c'est ton limit regarde celà et tu compendra ton erreur.

http://php.about.com/od/mysqlcommands/g/Limit_sql.htm

par Romuald632 » 25 nov. 2008, 09:49

Merci pour ton aide
Lorsque je fait ma requête j'ai ce message :
"Affichage des enregistrements 0 - 8 (9 total, Traitement en 0.0029 sec.)"
Et j'ai bien 9 enregistrements trouvés
Avec ça est-ce que vous pouvez m'aider
Merci d'avance

par djtec » 24 nov. 2008, 23:15

Tu vas dans PhpMyAdmin et tu clique sur l'onglet SQL en haut.

Ensuite tu colle ceci:
SELECT DISTINCT webcam.url as url, webcam.ville as ville, webcam.commentaire as commentaire, criteres.critere as critere, pays.drapeaux 
FROM webcam 
LEFT JOIN criteres ON (webcam.id_critere = criteres.id) 
LEFT JOIN pays ON (webcam.id_pays = pays.id) 
WHERE criteres.critere='".$_GET['critere']."'
LIMIT 9
En remplaçant bien ".$_GET['critere']." par une donnée qui existe dans ta base.

Puis lit l'erreur retourner pour débuger ta requête.

par Romuald632 » 24 nov. 2008, 19:30

Je sais pas faire !!
Je débute en PHP et j'ai quelques difficultés

par djtec » 24 nov. 2008, 19:10

Déjà as-tu fais ce que @rthur t'as dit de faire?

Si oui quel était le résultat dans phpMyAdmin?

A l'aide !!!

par Romuald632 » 24 nov. 2008, 14:41

A l'aide je commence à craquer !!
Voilà mon code :
<?php
mysql_connect("localhost", "root", "");
mysql_select_db("db");
 
$nombreDeMessagesParPage = 9;

$retour = mysql_query("SELECT DISTINCT webcam.url as url, webcam.ville as ville, webcam.commentaire as commentaire, criteres.critere as critere, pays.drapeaux FROM webcam LEFT JOIN criteres ON (webcam.id_critere = criteres.id) LEFT JOIN pays ON (webcam.id_pays = pays.id) WHERE criteres.critere='".$_GET['critere']."'LIMIT $nombreDeMessagesParPage") or die(mysql_error());
$donnees = mysql_fetch_array($retour);$totalDesMessages = $donnees['nb_messages'];

$nombreDePages  = ceil($totalDesMessages / $nombreDeMessagesParPage);

while ($affichage = mysql_fetch_assoc($retour) )      
{    
    echo '<div class="img">';
    echo $affichage['ville'];
	echo ' <img src="drapeaux_pt/'.$affichage['drapeaux'].'" width="16" height="11">';
	echo "<br />";
	echo '<img src="'.$affichage['url'].'" width="190" height="143">';     
    echo "<br />";
    echo $affichage['commentaire'];
    echo "</div>";  
} 
// On calcule le numéro du premier message qu'on prend pour le LIMIT de MySQL
$premierMessageAafficher = ($page - 1) * $nombreDeMessagesParPage;echo 'Page : ';
for ($i = 1 ; $i <= $nombreDePages ; $i++)
{
    echo '<a href="aff_webcam_critere.php?page=' . $i . '">' . $i . '</a> ';
}
if (isset($_GET['page']))
{
        $page = $_GET['page']; 
}
else 
{
        $page = 1;
}
 
mysql_close();
?>
Au final plutôt que d'avoir 9 résultats j'en ai 8, et le nombre de pages ne s'affichent pas
Pouvez-vous m'aider SVP

par @rthur » 24 nov. 2008, 14:37

Bonjour,

Affiche ta requête avec un print ou echo et testes là dans phpMyAdmin pour débuguer.

Affichage page par page

par Romuald632 » 24 nov. 2008, 12:52

Bonjour,
je regarde de nombreux tutos, mais je galère pas mal pour afficher des résultats par par page.
Voici le code que j'ai mis en place, mais à part ma première ligne qui s'affiche correctement, après j'ai tout qui s'affiche, et quelque soit l'ndroit où j'essaie de mettre un "LIMIT" ça marche plus :
<?php

//Information pour la connection à le DB
$host = 'localhost';
$user = 'root';
$pass = '';
$db = 'vol';
    
//Connection à la BDD
$link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() );
mysql_select_db($db) or die ('Erreur :'.mysql_error());

$nombre = 5;  // on va afficher 5 résultats par page.
if (!isset($limite)) $limite = 0; // si on arrive sur la page pour la première fois 
// on met limite à 0.
			   
$choix_critere=$_GET['critere'];    
$path_parts = pathinfo($_SERVER['PHP_SELF']);
$page = $path_parts['basename'];

$select = 'SELECT DISTINCT critere FROM criteres WHERE criteres.critere="'.$choix_critere.'" LIMIT '.$limite.','.$nombre;
$result = mysql_query($select,$link)  or die ('Erreur : '.mysql_error() );
$row = mysql_fetch_row($result);
$total = $row[0];

/*Requete mysql*/
	echo "<br/>";
	echo '<li class="pays"><img src="images/pt_logo_webcam_01.png" /> Vous regardez des webcam situées en '.$choix_critere.'</li>';
	echo "<br/>";
	
if(isset($_GET["critere"])) 
{
$image = mysql_query("SELECT DISTINCT webcam.url as url, webcam.ville as ville, webcam.commentaire as commentaire, criteres.critere as critere, pays.drapeaux FROM webcam LEFT JOIN criteres ON (webcam.id_critere = criteres.id) LEFT JOIN pays ON (webcam.id_pays = pays.id) WHERE criteres.critere='".$_GET['critere']."'")or die(mysql_error());

while ($affichage = mysql_fetch_assoc($image) ) 
//while ($row = mysql_fetch_row($result) )      
{    
    echo '<div class="img">';
    echo $affichage['ville'];
	echo ' <img src="drapeaux_pt/'.$affichage['drapeaux'].'" width="16" height="11">';
	echo "<br />";
	echo '<img src="'.$affichage['url'].'" width="190" height="143">';     
    echo "<br />";
    //echo $affichage['commentaire'];
    echo "</div>";  
} 
	echo "<br />";
}
/*Deconnexion de MySQL*/
mysql_close();	
	  
?>
Merci de votre aide