Array et BDD

Array et BDD - PHP - Programmation

Marsh Posté le 09-02-2006 à 13:20:53    

Salut tout le monde !!
 
Voila je voudrais afficher tout les filleuls du membre avec lequel je me suis logguer :
 
J'ai essayer ca :

Code :
  1. <table width="450" border="0" align="center" bgcolor="#FCF0DB" style="border: 1px dashed #F7E2C0 ">
  2. <?
  3. // Inclusion du Fichier Config.php
  4. include ('includes/config.php');
  5. // Connection &agrave; la Base de Donn&eacute;e
  6. mysql_connect("$localhost", "$user", "$pass" );
  7. mysql_select_db("$db" );
  8. //Requete SQL
  9. $sql = "SELECT * FROM membre WHERE parrain='".$_SESSION['username']."'";
  10. $req = mysql_query($sql);
  11. while ($data = mysql_fetch_assoc($req)) {
  12. $filleuls = $data['pseudo'];
  13. ?>
  14. <?php
  15. $liste = array ($filleuls);
  16. for ($numero = 0; $numero < 5; $numero++)
  17. {
  18. ?>
  19. <tr>
  20.     <td width="60" align="center">&nbsp;</td>
  21.     <td width="189"><?php echo "".$liste[$numero].""; ?></td>
  22.     <td width="185" align="center">&nbsp;</td>
  23. </tr>
  24. <?php
  25. }
  26. }
  27. ?>


 
Alors ce qui est bien : C'est que ca m'affiche bien les trois filleuls qui sont présents dans la BDD mais le probleme c'est que ca me creer plein de <td> et <tr> vide, regarder :

Code :
  1. <tr>
  2.     <td width="60" align="center">&nbsp;</td>
  3.     <td width="189">ghost</td>
  4.     <td width="185" align="center">&nbsp;</td>
  5. </tr>
  6. <tr>
  7.     <td width="60" align="center">&nbsp;</td>
  8.     <td width="189"></td>
  9.     <td width="185" align="center">&nbsp;</td>
  10. </tr>
  11. <tr>
  12.     <td width="60" align="center">&nbsp;</td>
  13.     <td width="189"></td>
  14.     <td width="185" align="center">&nbsp;</td>
  15. </tr>
  16. <tr>
  17.     <td width="60" align="center">&nbsp;</td>
  18.     <td width="189"></td>
  19.     <td width="185" align="center">&nbsp;</td>
  20. </tr>
  21. <tr>
  22.     <td width="60" align="center">&nbsp;</td>
  23.     <td width="189"></td>
  24.     <td width="185" align="center">&nbsp;</td>
  25. </tr>
  26. <tr>
  27.     <td width="60" align="center">&nbsp;</td>
  28.     <td width="189">aa</td>
  29.     <td width="185" align="center">&nbsp;</td>
  30. </tr>
  31. <tr>
  32.     <td width="60" align="center">&nbsp;</td>
  33.     <td width="189"></td>
  34.     <td width="185" align="center">&nbsp;</td>
  35. </tr>
  36. <tr>
  37.     <td width="60" align="center">&nbsp;</td>
  38.     <td width="189"></td>
  39.     <td width="185" align="center">&nbsp;</td>
  40. </tr>
  41. <tr>
  42.     <td width="60" align="center">&nbsp;</td>
  43.     <td width="189"></td>
  44.     <td width="185" align="center">&nbsp;</td>
  45. </tr>
  46. <tr>
  47.     <td width="60" align="center">&nbsp;</td>
  48.     <td width="189"></td>
  49.     <td width="185" align="center">&nbsp;</td>
  50. </tr>
  51. <tr>
  52.     <td width="60" align="center">&nbsp;</td>
  53.     <td width="189">aaa</td>
  54.     <td width="185" align="center">&nbsp;</td>
  55. </tr>
  56. <tr>
  57.     <td width="60" align="center">&nbsp;</td>
  58.     <td width="189"></td>
  59.     <td width="185" align="center">&nbsp;</td>
  60. </tr>
  61. <tr>
  62.     <td width="60" align="center">&nbsp;</td>
  63.     <td width="189"></td>
  64.     <td width="185" align="center">&nbsp;</td>
  65. </tr>
  66. <tr>
  67.     <td width="60" align="center">&nbsp;</td>
  68.     <td width="189"></td>
  69.     <td width="185" align="center">&nbsp;</td>
  70. </tr>
  71. <tr>
  72.     <td width="60" align="center">&nbsp;</td>
  73.     <td width="189"></td>
  74.     <td width="185" align="center">&nbsp;</td>
  75. </tr>


 
Savez vous ce qui me creer tout ca ?


Message édité par titanhermes le 09-02-2006 à 13:21:17
Reply

Marsh Posté le 09-02-2006 à 13:20:53   

Reply

Marsh Posté le 09-02-2006 à 13:56:57    

Comment c'est nawak :D
 
C'est ce bout la qui est en cause:

Code :
  1. ...
  2. while ($data = mysql_fetch_assoc($req)) {
  3. $filleuls = $data['pseudo'];
  4. ?>
  5. <?php
  6. $liste = array ($filleuls);
  7. for ($numero = 0; $numero < 5; $numero++)
  8. {
  9. ?>
  10. <tr>
  11.    <td width="60" align="center">&nbsp;</td>
  12.    <td width="189"><?php echo "".$liste[$numero].""; ?></td>
  13.    <td width="185" align="center">&nbsp;</td>
  14. </tr>
  15. <?php
  16. }
  17. }
  18. ?>


Que fais-tu?
Pour chacun des resultats de la requete tu mets dans $filleuls le pseudo du resultat de la requete.
Ensuite tu mets dans $liste  un tableau contenant juste $filleuls.
Puis tu boucles de 0 à 5, et tu affiches $liste[$numero].
Or dans $liste je n'ai qu'un element. Donc les 4 itérations suivantes ne t'affichent rien...
 
Par ailleurs ( sans rien toucher à ton code), tu gagnerais en lisibilité à écrire ça comme ça:

Code :
  1. while ($data = mysql_fetch_assoc($req)) {
  2. $filleuls = $data['pseudo'];
  3. $liste = array ($filleuls);
  4. for ($numero = 0; $numero < 5; $numero++)
  5. {
  6.   echo "<tr>
  7.    <td width="60" align="center">&nbsp;</td>
  8.    <td width="189"><?php echo "".$liste[$numero].""; ?></td>
  9.    <td width="185" align="center">&nbsp;</td>
  10. </tr>";
  11.   }
  12. }

Reply

Marsh Posté le 09-02-2006 à 15:05:50    

anapajari > T'aurais pu mettre la chaine entre ' que ca plante pas. Par ce que là les " à l'intérieur de la chaine vont être considéré comme la fin de la chaine et le début de la suivante et etc.
 
TitanHermes > Ce que anapajari voulait dire c'était :

Code :
  1. while ($data = mysql_fetch_assoc($req)) {
  2. $filleuls = $data['pseudo'];
  3. $liste = array ($filleuls);
  4. for ($numero = 0; $numero < 5; $numero++) {
  5.   echo '<tr>
  6.    <td width="60" align="center">&nbsp;</td>
  7.    <td width="189">'.$liste[$numero].'</td>
  8.    <td width="185" align="center">&nbsp;</td></tr>';
  9.   }
  10. }


ou

Code :
  1. while ($data = mysql_fetch_assoc($req)) {
  2. $filleuls = $data['pseudo'];
  3. $liste = array ($filleuls);
  4. for ($numero = 0; $numero < 5; $numero++) {
  5.   echo "<tr>
  6.    <td width=\"60\" align=\"center\">&nbsp;</td>
  7.    <td width=\"189\">".$liste[$numero]."</td>
  8.    <td width=\"185\" align=\"center\">&nbsp;</td></tr>";
  9.   }
  10. }


 
Et puis bon, tant qu'a récupérer les filleuls, autant boucler sur le nombre de filleul (voir la fonction mysql_num_rows dans la documentation)
 
EDIT : correction de code.

Message cité 1 fois
Message édité par omega2 le 09-02-2006 à 15:15:52
Reply

Marsh Posté le 09-02-2006 à 15:12:39    

omega2 a écrit :

anapajari > T'aurais pu mettre la chaine entre ' que ca plante pas. Par ce que là les " à l'intérieur de la chaine vont être considéré comme la fin de la chaine et le début de la suivante et etc.
...


 :jap: tout a fait. J'ai juste fait ça à la va vite ... un peu comme toi en fait ;) parce que avec tes deux solutions il se retrouve avec un  

Code :
  1. <?php echo ...>


"printé" dans une des cases du tableau...


Message édité par anapajari le 09-02-2006 à 15:13:02
Reply

Marsh Posté le 09-02-2006 à 15:14:57    

ok anapajari, j'ai corrigé le code.


Message édité par omega2 le 09-02-2006 à 15:15:23
Reply

Marsh Posté le 09-02-2006 à 15:58:13    

Ouèp j'ai compris d'ou vient mon erreur mais je n'arrive aps a trouver la solution (où placer les boucles) pour pas avoir ce problème ...
 
Si ous pouviez me mettre une peu plus sur la piste s'il vous plait :)
 
 
Ps : liste ne contient pas qu'un élément puisque dans ma BDD y'en a 3 non ?

Reply

Marsh Posté le 09-02-2006 à 16:40:13    

Déja qu'est ce que tu veux faire exactement? Pourquoi tu as besoin de faire une boucle de 0 à 5???
 

Citation :

Ps : liste ne contient pas qu'un élément puisque dans ma BDD y'en a 3 non ?


Non ... definitivement non

Code :
  1. $filleuls = $data['pseudo']; // tu mets dans $filleuls le pseudo
  2. $liste = array ($filleuls); //tu mets dans $liste un tableau contenant que $filleuls


Message édité par anapajari le 09-02-2006 à 16:40:41
Reply

Marsh Posté le 09-02-2006 à 17:31:41    

En fait je voudrais afficher les filleuls que possèdent le membre :)
 
Mais avec un numero sur la gauche :
 
1   Emile
2   Roger  
 
...

Reply

Marsh Posté le 09-02-2006 à 17:33:08    

En faite je n'ai aucun besoin des array ...
 
Seulement : COmment fait on pour afficher devant chaque filleul un numero:
 
pour le premier filleuls => Numéro = 1
deuxieme filleuls => Numéro = 2
troisieme filleuls => Numéro = 3


Message édité par titanhermes le 09-02-2006 à 17:35:55
Reply

Marsh Posté le 09-02-2006 à 17:49:52    

[:pingouino]  
 

Code :
  1. $i=0;
  2. while ($data = mysql_fetch_assoc($req)) {
  3. $i++;
  4. echo '<tr>
  5.    <td width="60" align="center">'.$i.'</td>
  6.    <td width="189">'.$data['pseudo'].'</td>
  7.    <td width="185" align="center">&nbsp;</td>
  8. </tr>';
  9. }

Reply

Marsh Posté le 09-02-2006 à 17:49:52   

Reply

Marsh Posté le 09-02-2006 à 20:14:25    

Merci nikel :)

Reply

Sujets relatifs:

Leave a Replay

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