affichage resultats en PHP

affichage resultats en PHP - PHP - Programmation

Marsh Posté le 29-04-2008 à 17:41:09    

Bonjour,
 
j'ai une page php dans laquelle j'affiche les resultats d'une recherche.
cette recherche peut contenir jusqu'a 300 resultats et je dois les afficher tous ds une seule page, et cela ralenti ennormement l'affichage de la page. j'utilise le code suivant :
 

Code :
  1. <table ...>
  2. <? $sel = mysql_query("SELECT nom, prenom, adresse... FROM table..." );
  3. while($res = mysql_fetch_array($sel))
  4. {
  5. echo "<tr><td>$res[prenom] $res[nom] ...</td></tr>";
  6. }
  7. ?>
  8. </table>


 
y a t il un autre moyen plus rapide?
 
et une derniere question svp :
comment pourrais je afficher les resultats sur 2 ou 3 colonnes ?? c'est a dire :

Code :
  1. while($res = mysql_fetch_array($sel))
  2. {
  3. echo "<tr>";
  4. echo "<td>resultat 1</td>";
  5. echo "<td>resultat 2</td>";
  6. echo "<td>resultat 3</td>";
  7. echo "</tr>";
  8. }


 
Merci bp de votre aide

Reply

Marsh Posté le 29-04-2008 à 17:41:09   

Reply

Marsh Posté le 29-04-2008 à 17:52:13    

redah75 a écrit :

Bonjour,
 
j'ai une page php dans laquelle j'affiche les resultats d'une recherche.
cette recherche peut contenir jusqu'a 300 resultats et je dois les afficher tous ds une seule page, et cela ralenti ennormement l'affichage de la page. j'utilise le code suivant :
 

Code :
  1. <table ...>
  2. <? $sel = mysql_query("SELECT nom, prenom, adresse... FROM table..." );
  3. while($res = mysql_fetch_array($sel))
  4. {
  5. echo "<tr><td>$res[prenom] $res[nom] ...</td></tr>";
  6. }
  7. ?>
  8. </table>


 
y a t il un autre moyen plus rapide?


 
Plus rapide pour toi non, pour le browser oui : un système de pagination, comme tu as sur ce forum.
 

Citation :


et une derniere question svp :
comment pourrais je afficher les resultats sur 2 ou 3 colonnes ?? c'est a dire :

Code :
  1. while($res = mysql_fetch_array($sel))
  2. {
  3. echo "<tr>";
  4. echo "<td>resultat 1</td>";
  5. echo "<td>resultat 2</td>";
  6. echo "<td>resultat 3</td>";
  7. echo "</tr>";
  8. }


 
Merci bp de votre aide


 
Utilise un compteur. Quand celui-ci modulo 2 (ou 3) vaut 0, tu crées une autre ligne.
edit: en fait, quand il vaut 2 (ou 3), crée une autre ligne et reset le, c'est mieux.


Message édité par sielfried le 29-04-2008 à 18:00:49

---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 29-04-2008 à 18:02:48    

Merci pour ta reponse.
oui, je connais le systeme de pagination, mais je ne peux pas l'utiliser dans mon cas!!
 
excuse moi, g pas bien compris ton 2eme point!

Reply

Marsh Posté le 29-04-2008 à 18:08:33    

redah75 a écrit :

Merci pour ta reponse.
oui, je connais le systeme de pagination, mais je ne peux pas l'utiliser dans mon cas!!


Plutôt tu ne veux pas, je ne connais pas de système où ce n'est pas possible (enfin je n'ai pas tout vu non plus ...)

 
redah75 a écrit :


excuse moi, g pas bien compris ton 2eme point!

 
Code :
  1. echo "<tr>";
  2. $i=1;
  3. while (...)
  4. {
  5.  echo "<td>resultat</td>";
  6.  if ($i%3==0) { echo "</tr><tr>"; } //Toutes les 3 occurences, on ajoute une ligne
  7. $i++;
  8. }
  9. echo "</tr>";


Message édité par babasss le 29-04-2008 à 18:08:58

---------------
Feedback : http://forum.hardware.fr/hfr/Achat [...] 2666_1.htm
Reply

Marsh Posté le 29-04-2008 à 18:14:21    

je ne veux pas et je ne peux pas :) il me faut le visuel de tous les resultats en une seule page...
 
Ok cool, merci pour le bout de code qui me sera tres utile ;)
 
merci a vous et merci pour la rapidite de vos reponses :)

Reply

Marsh Posté le 29-04-2008 à 18:15:31    

juste une petite question :)
pourquoi utiliser le modulo plutot que la soustraction ($i - 3) ???

Reply

Marsh Posté le 29-04-2008 à 18:17:26    

Avec le modulo tu ne fais que deux opérations : un test et un incrément
Avec la soustraction tu fais trois opérations : un test, un incrément, et une remise à zéro si le test est vrai
=> Tu gagnes un test, tu fais un truc propre et optimisé...


---------------
Feedback : http://forum.hardware.fr/hfr/Achat [...] 2666_1.htm
Reply

Marsh Posté le 29-04-2008 à 18:31:28    

OK, je ne savais pas que le modulo fait une remise a zero, je me suis jamais servi du modulo!! je dois faire une recherche pour mieux connaitre le modulo :)

Reply

Marsh Posté le 29-04-2008 à 18:48:24    

la je sens que j'abuse avec cette question, mais j'ai vraiment du mal a comprendre le modulo :(
 
5 % 2 est 1 ??? c'est pas le reste entier c'est a dire 2 ????
je cherche toujours une doc sur le modulo, si tu as un lien, je suis preneur!!
 
avec if ($i%3==0) a quel moment on remet a zero $i??

Reply

Marsh Posté le 29-04-2008 à 19:11:50    

Modulo te donne les reste de la division euclidienne du premier chiffre par le deuxième : 5 = 2*2 + 1 : quotient = 2 et reste = 1
 
Donc faire $i%3 == 0, va te donner tous les nombres $i pour lequels le reste est égal à 0, c'est à dire tous les 3 fois... cqfd


---------------
Feedback : http://forum.hardware.fr/hfr/Achat [...] 2666_1.htm
Reply

Marsh Posté le 29-04-2008 à 19:11:50   

Reply

Marsh Posté le 30-04-2008 à 10:53:04    

OK, merci, là j'ai bien compris le modulo :)
Merci de votre aide ;)
 
@+

Message cité 1 fois
Message édité par redah75 le 30-04-2008 à 11:21:51
Reply

Marsh Posté le 30-04-2008 à 11:17:42    

redah75 a écrit :

OK, merci, là j'ai bien compris le modulo :)
mais je ne sais par contre toujours pas a quel moment ds ton script, tu remets $i a zero??


Jamais, c'est justement l'intérêt, ne pas remettre à zéro le $i...


---------------
Feedback : http://forum.hardware.fr/hfr/Achat [...] 2666_1.htm
Reply

Marsh Posté le 30-04-2008 à 11:22:48    

lol, oui, je viens tout juste de modifier mon message car je viens de m'en rendre compte ;)
tu as ete plus rapide que moi :)
Merci bien

Reply

Marsh Posté le 30-04-2008 à 11:44:41    

Ayeye, un petit souci :)
avec le code que tu m'as donne, il me met toujours une ligne vide a la fin, y a t il un remede?
la solution que j'ai en tete est de mettre :

Code :
  1. echo "<tr>";
  2. $i=1;
  3. while (...)
  4. echo "<td>resultat</td>"; 
  5. if ($i%3==0) { echo "</tr>"; if($i != mysql_num_rows($sel)) echo "<tr>"; } //Toutes les 3 occurences, on ajoute une ligne  
  6. $i++;
  7. }
  8. if($i != mysql_num_rows($sel)) echo "echo "</tr>";


 
peut on faire mieux??


Message édité par redah75 le 30-04-2008 à 11:48:18
Reply

Marsh Posté le 30-04-2008 à 11:49:48    

Code :
  1. $i=0;
  2.  while (...)
  3.  {
  4.   if ($i%3==0) { echo "<tr>"; }
  5.   echo "<td>resultat</td>";
  6.   if ($i%3==2) { echo "</tr>"; } //Toutes les 3 occurences, on ajoute une ligne
  7.   $i++;
  8.  }


---------------
Feedback : http://forum.hardware.fr/hfr/Achat [...] 2666_1.htm
Reply

Marsh Posté le 30-04-2008 à 12:02:11    

encore merci ;)

Reply

Marsh Posté le 30-04-2008 à 14:10:23    

je suis desole de revenir t'embeter encore une fois.
je bloque sur ce que je veux faire:
je suis entain de preparer une page d'etiquettes a imprimer. dans chaque page, il y a 2 colonnes et 7 lignes.
j'aimerais pouvoir mettre toujours 7 lignes meme si j'obtiens que 3 ou 4 resultats qui tiendront sur 2 lignes.
et si j'ai 17 resultats, j'affiche les 14 premiers ds un 1er tableau, puis les 3 derniers resultats ds un autre tableau
 
aurais tu une idee??
 
la solution que j'ai en tete est de faire ceci mais je sais que t'as mieux :) :

Code :
  1. while(...) $tableau[] = $resultats;
  2. for($i = 0; $j = 0; $i < 17; $i++; $j++)
  3. {
  4. $tableau[$j] ...
  5. ...
  6. }


Message édité par redah75 le 30-04-2008 à 14:13:28
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed