boucle sur requête

Eléphant du PHP | 171 Messages

17 janv. 2006, 19:16

Bonjour à tous,
J'ai créé une requête pour afficher le contenu d'une table.
Le résultat est une liste d'items numérotés.
J'ai fait ceci mais çane marche pas:
$query="SELECT * FROM table";
$result=mysql_query($query);
$row=mysql_fetch_array($result);

for ($i=0; $i<count($row); $i++) {

   echo  $i . " " .  $row[$i] . "<br>" ;
    
}
L'erreur est
Notice: Undefined offset: 2 in c:\program files\easyphp1-8\www\dynacom\new\gestion\leservice.php on line 82

3
Notice: Undefined offset: 3 in c:\program files\easyphp1-8\www\dynacom\new\gestion\leservice.php on line 82
Voyez vous pourquoi?

Mammouth du PHP | 19672 Messages

17 janv. 2006, 19:19

Combien de champs comporte la table ? Éviter d'utiliser le SELECT *, ça ne nous aide pas des masses, on ne sait pas combien de champ ni quels nom ont ces champs.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 383 Messages

17 janv. 2006, 19:26

il me semble que mysql_fetch_array te renvoe une seule ligne de resultat sous la forme d'un tableau indexé. essaie :


$query="SELECT * FROM table"
$result=mysql_query($query);
$n=mysql_num_field($result);
while($row=mysql_fetch_array($result))
{
   for ($i=0; $i<n; $i++) {

      echo  $i . " " .  $row[$i] . "<br>" ;
    
   }
}

Eléphant du PHP | 353 Messages

17 janv. 2006, 19:27

essaye comme ça !
$query="SELECT * FROM table"; 
$result=mysql_query($query); 
// function pour connaire le nombre de resultats trouvés
$nb_result = mysql_num_rows($result);

for ($i=0; $i<$nb_result ; $i++) { 
   
   $row=mysql_fetch_array($result); 
   echo  $i . " " .  $row['nom du champ à afficher'] . "<br>" ; 
     
} 
je suis sur que mysql_num_rows() fonctionne !!

à vrai dire j'ai jamais pensé à un count() pour faire ça lol

++

Eléphant du PHP | 171 Messages

17 janv. 2006, 20:05

pour répondre à cyrano, c'est justement une table dont le nombre d'enregistrements va varier souvent. On ne sait jamais à l'avance.
Je voudrais juste que la requête affiche le contenu de la table en numérotant de 1à n, quelque soit le nb d'enregistrments.

Je vais tester les solutions proposées, à tout à l'heure.

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

17 janv. 2006, 20:09

c'est justement une table dont le nombre d'enregistrements va varier souvent. On ne sait jamais à l'avance.
Je voudrais juste que la requête affiche le contenu de la table en numérotant de 1à n, quelque soit le nb d'enregistrments.
C'est ce que font tous les scripts qui utilisent mysql_fetch_array() (avec une boucle) le nombre d'enregistrements n'intervient pas directement dans le code, on se contente de lire le résultat de la requete jusqu'a ce qu'il n'y en ait plus. Il y a meme des exemples dans la doc. :wink:

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 383 Messages

17 janv. 2006, 20:28

oui, il n'y a auncun probleme si tu ne connais pas a l'vance le nombre d'enregistrement. le code que je t'ai donne resous le probleme si tu ne connais pas a l'avance le nombre de champs ce qui est different.

Mammouth du PHP | 19672 Messages

17 janv. 2006, 23:37

pour répondre à cyrano, c'est justement une table dont le nombre d'enregistrements va varier souvent. On ne sait jamais à l'avance.
Je voudrais juste que la requête affiche le contenu de la table en numérotant de 1à n, quelque soit le nb d'enregistrments...
Qu'une table ait un nombre d'enregistremets variant de 0 à 30000 n'a aucune importance, par contre le nombre de colonnes ne devrait pas être variable : donc il vaut mieux préférer

Code : Tout sélectionner

SELECT champ_1, champ_2, ..., champ_n...
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 171 Messages

18 janv. 2006, 03:24

pas de pb, les scripts insérés plus haut mon aidé à résoudre le pb.
merci à tous