comment savoir quand on est à la fin de la base?

comment savoir quand on est à la fin de la base? - PHP - Programmation

Marsh Posté le 03-09-2008 à 10:02:03    

Est ce que quelqu'un sait comment on fait pour savoir si l'on est à la fin de la bdd, un peu comme le "feof" dans un fichier?  
 
Je doit scanné tout les enregistrement de ma base mais je ne sais pas comment clôturer ma boucle.  
 
merci par avance.

Reply

Marsh Posté le 03-09-2008 à 10:02:03   

Reply

Marsh Posté le 03-09-2008 à 10:03:18    

Hein ? [:pingouino] Y'a rien à faire de spécial. Tu fais comment pour lister les enregistrements ? Poste un peu de code

Reply

Marsh Posté le 03-09-2008 à 10:06:20    

j'adore le "feof" :D
 
y sont au courant les devs de PHP que le "F" de la fin de "EOF" ça veut déjà dire "FILE" ? que donc "FILE END OF FILE" ça veut rien dire ? :o
 
c'est pas parceque les noms de fonction en C sont débiles qu'il faut reprendre les mêmes :o
 
bon, ceci mis à part :
 

Code :
  1. while ($row = mysql_fetch_assoc($result)) {
  2.    echo $row['firstname'];
  3.    echo $row['lastname'];
  4.    echo $row['address'];
  5.    echo $row['age'];
  6. }


 
note le "=" et non le "==".
 
tu as la réponse.
le fetchrow retourne soit un array contenant les champs, soit un booléen "false" quand tu arrives à la fin, ce qui te fait donc sortir du while


Message édité par MagicBuzz le 03-09-2008 à 10:07:24
Reply

Marsh Posté le 03-09-2008 à 10:52:58    

Merci de votre réponse rapide.
 
voici un peu de code

Code :
  1. $sql = 'SELECT * '. ' FROM `architectes2` WHERE numref =' . $i;
  2. $result=mysql_query($sql); // on soumet la requete
  3. $row = mysql_fetch_assoc($result);
  4. echo $row["nom1"];echo '   ';
  5. echo $row["nom2"];echo ' ';
  6. echo $row["numref"]; $email= $row["email"];echo "  ".$email;echo '<br />';


 
si je suis les conseil de MagicBuzz cela devrai donner:
 
 

Code :
  1. while ($row = mysql_fetch_assoc($result))
  2. {
  3. $sql = 'SELECT * '. ' FROM `architectes2` WHERE numref =' . $i;
  4. $result=mysql_query($sql); // on soumet la requete
  5. $row = mysql_fetch_assoc($result);
  6. echo $row["nom1"];echo '   ';
  7. echo $row["nom2"];echo ' ';
  8. echo $row["numref"]; $email= $row["email"];echo "  ".$email;echo '<br />';
  9. }


 
désolé pour l'indentation à la noix ...
Magicbuzz comment fait tu pour avoir la coloration syntaxique dans ton code sur ce forum??

Reply

Marsh Posté le 03-09-2008 à 10:53:37    

[ code = php ]

Reply

Marsh Posté le 03-09-2008 à 10:55:03    

Ca devrait plutôt donner ça :

Code :
  1. $sql = 'SELECT * '. ' FROM `architectes2` WHERE numref =' . $i;
  2. $result=mysql_query($sql); // on soumet la requete
  3.  
  4. while ($row = mysql_fetch_assoc($result))
  5. {
  6.  echo $row["nom1"];
  7.  echo '   ';
  8.  echo $row["nom2"];
  9.  echo ' ';
  10.  echo $row["numref"];    
  11.  $email= $row["email"];
  12.  echo "  ".$email;
  13.  echo '<br />';
  14. }


Message édité par MagicBuzz le 03-09-2008 à 10:55:27
Reply

Marsh Posté le 03-09-2008 à 11:03:00    

il faut peut être que j'incrémente mon $i!

Reply

Marsh Posté le 03-09-2008 à 11:05:26    

non il faudrait que tu apprennes à faire une jointure pour éviter de refaire une requete dans ta boucle.


Message édité par anapajari le 03-09-2008 à 11:05:33

---------------
Software and cathedrals are much the same - first we build them, then we pray.
Reply

Marsh Posté le 03-09-2008 à 11:10:20    

ben je gougeulise sa et je reviens vers vous!

Reply

Marsh Posté le 03-09-2008 à 11:21:02    

A part stocker la table base dans un tableau je vois pas comment faire pour pas faire de requête dans une boucle.

Reply

Marsh Posté le 03-09-2008 à 11:21:02   

Reply

Marsh Posté le 03-09-2008 à 11:41:15    

cf ma signature
 
c'est un peu long à lire, mais tu auras toutes les explications pour faire des jointures, et pourquoi il vaut mieux faire des jointures


Message édité par MagicBuzz le 03-09-2008 à 11:41:26
Reply

Marsh Posté le 03-09-2008 à 12:01:39    

une jointure je sais ce que c'est mais là je ne vois pas comment l'appliquer!

Reply

Marsh Posté le 03-09-2008 à 12:09:31    

petites questions:
 
nom1, nom2, numref et email sont des champs de la table architectes2? (si oui, t'as pas forcément besoin d'une jointure)
 
est ce que numref est une PK ? (si oui, le while ne sert plus vraiment à grand chose)
 
est ce que tu veux le nom1, nom2, numref et email de TOUS les enregistrements de ta table? (si oui: enleve la clause where de ta requete)


Message édité par Marty_McFly le 03-09-2008 à 12:13:07

---------------
arg(z) = pi /2 donc z = i, moi je prends pas
Reply

Marsh Posté le 03-09-2008 à 12:12:10    

oui.

Reply

Marsh Posté le 03-09-2008 à 12:13:16    

while ($row = mysql_fetch_assoc($result))
 
=> ton $result il vient de quoi comme requête ?
 
c'est cette requête qu'il faut joindre avec 'SELECT * '. ' FROM `architectes2` WHERE numref =' . $i;

Reply

Marsh Posté le 03-09-2008 à 12:13:25    

désolé, j'ai édité entre temps...


---------------
arg(z) = pi /2 donc z = i, moi je prends pas
Reply

Marsh Posté le 03-09-2008 à 12:18:25    

J'ai ma table architecte2 qui est peuplée, Je veux scanné ma table pour récupérer le champ email de chacun envoyer le mail et passer a l'enregistrement suivant récupérer le mail ... et arriver à la fin de ma table et dire terminer.Mon numref et une clef primaire autoincrement.


Message édité par drazor le 03-09-2008 à 12:18:45
Reply

Marsh Posté le 03-09-2008 à 12:22:56    

ok, parfait.
 
ta requete est donc erronée: si tu indiques un numref (qui est donc pk autoincrement) tu n'auras qu'un seul et unique enregistrement en réponse (ou 0, eventuellement). En revanche, si tu lui précises pas de filtre, il te renvoie la liste entiere des enregistrements, que tu parcours avec le

Code :
  1. while( $row = mysql_fetch_assoc($result) )


 
il te reste donc à écrire ton traitement à l'intérieur du { } du while.


Message édité par Marty_McFly le 03-09-2008 à 12:25:05

---------------
arg(z) = pi /2 donc z = i, moi je prends pas
Reply

Sujets relatifs:

Leave a Replay

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