cs_rinuom99
Messages postés91Date d'inscriptiondimanche 12 août 2007StatutMembreDernière intervention21 septembre 2014
-
18 mars 2008 à 22:31
cs_rinuom99
Messages postés91Date d'inscriptiondimanche 12 août 2007StatutMembreDernière intervention21 septembre 2014
-
20 mars 2008 à 09:27
salut,
je veux afficher tout les enregistrement d'une table de base de donnée, j'ai utilisé le code suivant:
<!-- BEGIN TEMPLATE: bbcode_code -->
Code :
$selectcli="SELECT * FROM client ORDER BY 'mat_cli'";
$cli = mysql_query($selectcli, $link) or die(mysql_error());
$lignes_cli = mysql_num_rows($cli);
$client =array();
$client['matricule'] =array();
$client['nom'] =array();
$client['prenom'] =array();
$client['adresse'] =array();
neigedhiver
Messages postés2480Date d'inscriptionjeudi 30 novembre 2006StatutMembreDernière intervention14 janvier 201119 19 mars 2008 à 00:36
Salut,
Essaie de faire un truc plus propre, pour mieux t'y retrouver :
$selectcli="SELECT * FROM client ORDER BY 'mat_cli'";
Déjà, évite d'utiliser * pour la liste des colonnes, ça bouffe des ressources pour rien. Préfère lister les colonnes une par une, ça évite de récupérer les colonnes inutiles, notamment si plus tard tu rajoutes des colonnes dans ta table...
$cli = mysql_query($selectcli, $link) or die(mysql_error());
$lignes_cli = mysql_num_rows($cli);
La définition du tableau $client ne sert à rien
Le reste, c'est presque illisible tellement c'est compact et pas indenté. Ton remplissage du tableau $client est assez peu orthodoxe... Quant à 'or die' => c'est crade
if ($cli = @mysql_query($selectcli, $link)) { # Si la requête s'est bien passée
if (mysql_num_rows($cli) > 0) { # Ca risque pas d'être négatif...
while ($row_cli = mysql_fetch_assoc($cli)) {
$clients[$i][] = $row_cli;
}
}
}
else {
# Gestion de l'erreur de manière plus propre, éventuellement en
# faisant appel à une fonction spécialisée
}
Ta boucle foreach va parcourir tous les clients sans en oublier.
Ta requête ne permet pas d'utiliser ce code correctement, il faut absolument que tu la corriges et que tu listes les champs à récupérer, et que tu leurs donnes un alias :
$selectcli = 'SELECT mat_cli AS matricule,
prenom_cli AS prenom,
nom_cli AS nom,
adresse_cli AS adresse,
etat
FROM client ORDER BY mat_cli ASC;';
Les alias seront utilisés comme index du tableau associatif renvoyé par mysql_fetch_assoc().
La fonction mysql_fetch_assoc() déplace le pointeur de la ressource résultat retournée par mysql_query, inutile donc de le faire.
Cette manière de faire présente un inconvénient : tu parcours 2 fois les résultats. Une fois pour la récupération, une autre pour l'affichage. Une solution consiste à utiliser un itérateur en PHP5, que l'on peut simuler en PHP4 (il existe au moins une source sur phpcs d'un itérateur en PHP4, postée par codefalse, si ma mémoire est bonne).
La boucle while() n'est pas plus consommatrice de ressources que for() : ici, elle est plus facile à utiliser, d'autant qu'on n'a pas besoin de compteur pour ajouter des éléments à un tableau.
La boucle foreach() par contre te permet de parcourir ton tableau du début à la fin sans te soucier du nombre d'éléments qu'il contient (c'est vraiment une information accessoire ici).
cs_rinuom99
Messages postés91Date d'inscriptiondimanche 12 août 2007StatutMembreDernière intervention21 septembre 20141 18 mars 2008 à 22:40
je m'excuse pour le forma
voici le probleme:
je veux afficher tout les enregistrement d'une table de base de donnée, j'ai utilisé le code suivant:
<!-- BEGIN TEMPLATE: bbcode_code -->
<!-- END TEMPLATE: bbcode_code -->
le probleme que le dernier enregistrement il n'affiche pas ??? si vous pouvez mz aidé svp et merci<!-- / message -->