Résolu Calcul du nombre d'entrées d'une table.

arbilus

Expert
Bonjours, je souhaite afficher le nombre de lignes d'une table en fonction d'un élément. ->

[cpp]$counter=mysql_query("SELECT COUNT(*) NBR_ENTREE FROM fh WHERE ted ='$qresult[wk]'");
$row=mysql_fetch_object($counter);[/cpp]

Ensuite pour l'afficher je fait:

[cpp]echo "xxxxxxxx ".$row->NBR_ENTREE." xxxxxxx.";[/cpp]

Le seul problème, c'est que cela ne m'affiche rien . J'ai bien la page, mais le nombre d'entrées n'est pas affiché. Je ne comprend pas où est l'erreur ...

Je tiens aussi à préciser qu'on pourrait ce dire: l'erreur vient de $qresult[wk] . Mais non.. Même si je le remplace par une valeur fixe c'est toujours pareil . Encore mieux, même si j'enlève WHERE ted ='$qresult[wk]' c'est toujours pareil: rien ne s'affiche ..

ps: pas de messages d'erreurs non plus.
 

zeb

Modérateur
Je n'ai malheureusement pas de solution à ton problème, mais je voudrais t'encourager. Tes précisions permettent de retirer bien des possibilités d'erreur, ce qui permettra sans doute à celui qui pourra, de t'aider plus efficacement. Tiens, je me permets même de te proposer, pour la prochaine fois, de présenter ton problème simplifié à l'extrême :
Code:
$counter=mysql_query("SELECT COUNT(*) NBR_ENTREE FROM fh " );
...

_________________
Mon message n'est pas complètement inutile, puisqu'il "up" ton topic ;)
 

guillaumech

Expert
Heu ... et tu as essayé un :
[cpp]
$counter = mysql_query("SELECT COUNT(*) FROM fh WHERE ted ='$qresult[wk]'" );
echo mysql_num_rows($counter );
[/cpp]
???
 

arbilus

Expert
Problème réglé. J'ai finalement compris mon erreur: le placement du code tout simplement . Placé à un endroit il ne réagissait pas comme il fallait mais maintenant c'est bon.

Puis j'ai utilisé cela:
 

marsien

Grand Maître
Avec mysql_num_rows, il est inutile de faire un COUNT dans ta requête (je me demande même comment ta requête actuelle associé à mysql_num_rows peut marcher...).

Pour avoir un code plus portable, hors de mysql et/ou php il vaut miuex utiliser un COUNT dans une requête et récupérer la valeur par un traitement classique en php :

Code:
$counter=mysql_query("SELECT COUNT(*) AS nb_lignes FROM fh WHERE ted ='$qresult[wk]'" );
$retour=mysql_fetch_object($counter);
$nb_lignes=$counter['nb_lignes'];
 

arbilus

Expert
Ben j'ai repris le même code de l'exemple sur le lien que j'ai donné et ça fonctionne . Je vois pas pourquoi tu dis que ça peut pas fonctionner : voila ce que j'ai fait:

[cpp]$link = mysql_connect("localhost", "xxxxxxx", "xxxxxxx");
mysql_select_db("xxxxxx", $link);
$result = mysql_query("SELECT * FROM xxxx WHERE xxxx ='$value[xxxx]'", $link);
$num_rows = mysql_num_rows($result);[/cpp]
 

marsien

Grand Maître
Ce code est correct (c'est celui de la doc php...), mais est différent ceux que tu as mis avant (le mélange de COUNT et mysql_num_rows ne peut pas marcher). Par contre, je maintiens que ce code n'est pas portable et que si tu changes de base de données (pour postgreSQL ou SQLite par exemple, ton programme ne marchera plus : mysql_num_rows, comme son nom l'indique, est spécifique à MySQL ! ;)
 

arbilus

Expert
Enfin d'un coté ça n'arrivera pas . Je m'y suis habitué, maintenant je reste mysql :)
 

dark-sorrow

Grand Maître
Meilleure réponse
Juste une chose d'un point de l'optimisation :

Ceci :
[cpp]$counter=mysql_query("SELECT COUNT(*) AS nb_lignes FROM fh WHERE ted ='$qresult['wk']'" );
$retour=mysql_fetch_array($counter);
$nb_lignes=$counter['nb_lignes'];[/cpp]

devrait être plus rapide que ta solution avec mysql_num_rows.

Par contre, n'oublies pas mysql_real_escape_string pour protéger tes variables afin d'empêcher toute injection SQL !
Sinon, tu peux aussi passer à PDO et aux requêtes préparées ... (faut se mettre au gout du jour)
 

arbilus

Expert
Oui mais ce code me sert surtout pour la partie "administration" du site (style : /controls est une partie protégé où seuls les admins peuvent y aller) .
 

omega2

Grand Maître
Salut,
Si par "surtout pour la partie administration du site" tu entends "des pages qui ne seront jamais accessible par un autre que moi", alors je comprend ton argument bien que prendre des libertés dans ce genre de cas, c'est ouvrir la porte à un oublis dans le reste du site. Si on reste rigoureux même dans les pages qu'on sera seul à connaitre alors on est à peu près sur qu'on le sera aussi dans le reste.

Si tes pages d'administrations sont accessibles par d'autres personnes et quel que soit le niveau de confiance que tu penses pouvoir leur accorder, il faut sécuriser ces pages avec autant de sérieux que toutes les autres. J'ai d'ailleurs connus un jeux en ligne où un "modérateur" avait mis en place des systèmes de triche en utilisant des failles qui se trouvaient dans certaines pages de détections des tricheries.

Comme quoi, c'est pas par ce qu'une personne est "admin" ou "modérateur" qu'elle sera forcément honnête.
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 126
Messages
6 717 801
Membres
1 586 365
Dernier membre
matiOs1
Partager cette page
Haut