SELECT COUNT & PHP

[Résolu/Fermé]
Signaler
-
Messages postés
18580
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
18 octobre 2021
-
Bonjour,

J'ai un problème pour PHP renvoie la valeur correcte d'un comptage dans une BDD MySQL.
Voici mon code:
$sql= mysql_query("SELECT count (*) FROM Profils WHERE mail='$mail'");

alors que ma requête sous PhpMyAdmin marche très bien et renvoie le bon résultat:
SELECT count (*) FROM Profils WHERE mail='Un Truc'.

J'ai essayé les mysql_result, les mysql_fetch_array et autres joyeuseries, ca fait deux jours que je ne trouve pas de solution...

Merci d'avance.

9 réponses

Messages postés
18580
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
18 octobre 2021
4 326
// Checkmail
$sql = 'SELECT * FROM `Profils` WHERE mail="$mail"';
$req = mysql_query($sql) or die('Erreur dans <em>“'.$sql.'”</em> :<br/>'.mysql_query());
$nb = mysql_num_rows($req);

echo 'Il y a ' . $nb . ' valeurs<br>'; 
Le comptage n'est par erronné : Entre apostrophes, les variables ne sont pas remplacées par leur valeur, contrairement aux guillemées. Voici donc la ligne corrigée :
$sql = 'SELECT * FROM `Profils` WHERE mail="'.$mail.'"'; 
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 41713 internautes nous ont dit merci ce mois-ci

Messages postés
18580
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
18 octobre 2021
4 326
Essaye avec ça :
<?php
...
$sql = 'SELECT COUNT(*) AS `nb` FROM `profils` WHERE `mail`="'.$mail.'"';
$req = mysql_query($sql) or die('Erreur dans <em>“'.$sql.'”</em> :<br/>'.mysql_query());
$data = mysql_fetch_assoc($req);
$nb = $data['nb'];
...
?>
Il y a aussi une seconde méthode :
<?php
...
$sql = 'SELECT * FROM `profils` WHERE mail="'.$mail.'"';<
$req = mysql_query($sql) or die('Erreur dans <em>“'.$sql.'”</em> :<br/>'.mysql_query());
$nb = mysql_num_rows($req);
...
?>
Bonjour avion,

Merci pour tes propositions qui me semblent tout ce qu'il y a de plus juste, pourtant les deux me renvoient des erreurs:

Erreur dans “SELECT * FROM `profils` WHERE mail="truc@machin.fr"” :

Pourtant l'écriture de données ne pose aucun problème... Un truc m'échappe vraiement.
Messages postés
18580
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
18 octobre 2021
4 326
C'est peut-être (même sûrement) parce que j'ai mis "profils" en minuscules.
Je te conseil de renommer ta table en minuscule plutôt que de mettre une majuscule à la requête.
Il y avait en effet un problème de majuscules, merci.

En revanche, le count est erronné; il me retourne aucune valeur alors qu'elles y sont, ce qui conduit à une tentative infructueuse d'inscription (doublon table primaire) et à un feedback erroné. Je met mon bout de code:


// Checkmail
$sql = 'SELECT * FROM `Profils` WHERE mail="$mail"';
$req = mysql_query($sql) or die('Erreur dans <em>“'.$sql.'”</em> :<br/>'.mysql_query());
$nb = mysql_num_rows($req);

echo 'Il y a ' . $nb . ' valeurs<br>';

// Test Regex Mail
if(preg_match('`^:alnum:([-_.]?:alnum:)+_?@:alnum:([-.]?:alnum:)+\.[a-z]{2,4}$`',$mail))
{
$mailok=1;
}
...
// Vérif pwd
if ($pwd1 == "" OR $pwd2 == "")
...

// Check Pwd équivalents
if($pwd1!=$pwd2){
...


// Si mail Ok et pas de doublons, inscription bdd
if ($nb==0 AND $mailok==1) {
Messages postés
18580
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
18 octobre 2021
4 326
Erreu de ma part :
$req = mysql_query($sql) or die('Erreur dans <em>“'.$sql.'”</em> :<br/>'.mysql_query()); 
→ Mets plutot mysql_error()
En effet, merci.

Par contre ca ne changera pas le problème de comptage...

Je ne vois pas ce qui plante dans mon code php...
Cher camarade,

Ta statue, je te la fais en or ou en platine ?
Encore merci d'avoir été aussi didactique et patient. Vraiment bon esprit.
Messages postés
18580
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
18 octobre 2021
4 326
En platine, je veux bien.
Mais ne la fait pas trop grande parce que ... : Masse volumique = 21 090 kg/m³