[RESOLU] select count et passage à mysqli

Eléphanteau du PHP | 34 Messages

27 août 2015, 08:28

Bonjour,

Mieux vaut tard que jamais. Webmestre amateur, je tente de sauter le pas afin d'utiliser MYSQLI à la place de MySQL.
Je souhaite connaître combien d'enregistrements de MaTable répondent à la condition "WHERE classification = 'chien'"
Je cherche dans un premier temps à afficher cette valeur puis dans un second temps, je chercherai à mémoriser cette valeur dans une variable.
J'utilise le code suivant :

Code : Tout sélectionner

<?php include "../php/mysqli_conf.inc.php"; // Lien vers mon fichier de connexion $link = mysqli_connect($host,$login,$password,$base) or die(mysqli_error($link)); // Connexion &agrave; MySql if (mysqli_connect_errno()) { printf("Échec de la connexion : %s\n", mysqli_connect_error()); exit(); } if ($result = mysqli_query($link, "SELECT count(*) FROM MaBase WHERE classification = 'chien'")) { $row_cnt = mysqli_num_rows($result); printf("Il y a %d lignes.\n", $row_cnt); mysqli_free_result($result); } ?>
Le problème est que .... rien ne s'affiche.
Pourriez-vous m'aider, s'il vous plait ?

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

27 août 2015, 10:01

Bonjour,

Soit tu utilises
SELECT COUNT(*) AS nb_lignes FROM...
qui ne va te renvoyer qu'une seule ligne de résultat où tu récupères le champ nb_lignes qui contient le nombre de lignes.
Soit tu utilises
SELECT * FROM...
qui va te renvoyer toutes les lignes de résultats et la fonction mysqli_num_rows() te dira combien précisément.
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphanteau du PHP | 34 Messages

27 août 2015, 10:15

Bonjour,

Merci @rthur pour ton intervention.
En modifiant ainsi mon script :

Code : Tout sélectionner

<?php include "../php/mysqli_conf.inc.php"; // Lien vers mon fichier de connexion $link = mysqli_connect($host,$login,$password,$base) or die(mysqli_error($link)); // Connexion &agrave; MySql if (mysqli_connect_errno()) { printf("Échec de la connexion : %s\n", mysqli_connect_error()); exit(); } if ($result = mysqli_query($link, "SELECT count(*) AS nb_lignes FROM MaBase WHERE classification = 'chien'")) { echo nb_lignes; mysqli_free_result($result); } ?>
Mon écran reste désespérément vierge ;-(

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

27 août 2015, 10:48

Déjà il faut que tu actives l'affichage des messages d'erreur pour te permettre de debuguer :
faq-tutoriels/page-blanche-script-php-c ... 73178.html

Ensuite, c'est normal que ça ne fonctionne pas puisque tu ne récupères pas nb_lignes comme si c'était un résultat de ta requête SQL
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphanteau du PHP | 34 Messages

27 août 2015, 11:23

Bonjour,

De nouveau, merci @rthur,

J'ai fait afficher les erreurs et modifié ainsi mon script :

Code : Tout sélectionner

<?php include "../php/mysqli_conf.inc.php"; // Lien vers mon fichier de connexion $link = mysqli_connect($host,$login,$password,$base) or die(mysqli_error($link)); // Connexion &agrave; MySql if (mysqli_connect_errno()) { printf("Échec de la connexion : %s\n", mysqli_connect_error()); exit(); } if ($result = mysqli_query($link, "SELECT * FROM MaBase WHERE classification = 'chien'")) { $row_cnt = mysqli_num_rows($result); printf("Il y a %d lignes.\n", $row_cnt); mysqli_free_result($result); } ?>
J'obtiens maintenant l'affichage " Il y a 4 lignes. " ce qui est correct.
Je souhaite mémoriser cette valeur dans la variable $nb_chiens mais ne vois pas comment faire. peux-tu me mettre sur la piste, stp ?

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

27 août 2015, 12:30

Je souhaite mémoriser cette valeur dans la variable $nb_chiens mais ne vois pas comment faire. peux-tu me mettre sur la piste, stp ?
A toi de faire un petit effort tout de même ;)

Comment le ferais-tu ? qu'as tu essayé ?
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphanteau du PHP | 34 Messages

27 août 2015, 13:08

Bonjour,

Re-remerci @rthur,

En fait, c'est simplement la même valeur que $row_cnt, je suis bête.
Je clos cette discussion.