repartition d'une requete SQL sur plusieurs pages
Hors ligneJdalton42 Le 31/07/2005 à 21:00 Profil de Jdalton42 Configuration de Jdalton42

Salut,

je suis en train de faire un petit livre d'or pour quelqu'un et je voudrai faire un affichage de la requete sur plusieurs pages avec 10 messages par page par exemple... seulement je sais pas trop comment faire sa... vous pourriez m'aider svp? merci
--
jdalton42
Hors ligneAnthony Le 31/07/2005 à 21:02 Profil de Anthony Configuration de Anthony

Admin
Salut,

Quelle est la structure de ta table qui enregistre les messages dans ton livre d'or ?
--

Hors ligneJdalton42 Le 01/08/2005 à 00:25 Profil de Jdalton42 Configuration de Jdalton42

voici les champs de ma base la structure quoi:

  `id` int(11) NOT NULL auto_increment,   `date` varchar(20) NOT NULL default '',   `pseudo` varchar(30) NOT NULL default '',   `email` varchar(255) NOT NULL default '',   `note` varchar(13) NOT NULL default '(pas de note)',   `msg` text NOT NULL,   PRIMARY KEY  (`id`)

je sais c'est pas tres optimiser mais bon...
@++ et merci
--
jdalton42
Hors ligneAnthony Le 01/08/2005 à 01:01 Profil de Anthony Configuration de Anthony

Admin
Ok tu as un champ ID c'est le principal on va pouvoir faire des requêtes rapides.

Bon bah pour la génération de page, tu peux faire ceci : (en prenant le fait que tes pages seront du style page.php?page=numéro ou numéro est un nombre indiquant la page. On va aussi dire dans le script que tu auras 20 messages par page (regarde bien le script si tu veux le modifier c'est assez simple).

<?php      if(isset($_GET['page']) AND is_numeric($_GET['page']) AND $_GET['page']>0)      {           $page=$_GET['page'];           }      else      {           $page=1;      }      //------------------------------      //RECUPERE L'ID MAX      //------------------------------      mysql_connect('hote','user','passe');      mysql_select_db('base');      $id=mysql_query('SELECT MAX(id) FROM table');      $r=mysql_fetch_row($id);      $id_max=$r[0];      //------------------------------      //DEBUT DES MESSAGES A AFFICHER      //------------------------------      $debut=$id_max-20*$page;      if($debut<0)      {           $debut=0;      }      $fin=$debut+20;      $req=mysql_query('SELECT date,pseudo,email,note,msg FROM table WHERE id BETWEEN '.$debut.' AND '.$fin.' ORDER BY id DESC');      mysql_close();      //-------------------------------      //AFFICHE LES MESSAGES      //-------------------------------      while($r=mysql_fetch_row($req))      {           //ici ton code pour afficher les messages      } ?>
--

Hors ligneJdalton42 Le 01/08/2005 à 22:43 Profil de Jdalton42 Configuration de Jdalton42

ok merci je vai tout de suite tester cela juste un probleme et dsl de t'ennuyer mais il me faudrai le script qui affiche des liens pour chaque page qu'il y a et je sais pas faire sa...
--
jdalton42
Hors ligneAnthony Le 01/08/2005 à 23:21 Profil de Anthony Configuration de Anthony

Admin
Tu divises $id_max par 20 t'as le nombre de pages :

ceil($id_max/20); //nombre de pages

ensuite tu connais la page courante $page

bah tu fais une boucle ensuite pour partir de la page courante  moins 5 pages par exemple et 5 pages ensuite. C'est pas compliqué, consulte la section PHP.
--

Vous avez résolu votre problème avec VIC ? Faites-le savoir sur les réseaux sociaux !
Vulgarisation-informatique.com
Cours en informatique & tutoriels