SELECT COUNT & PHP

Résolu
coronier -  
avion-f16 Messages postés 19182 Date d'inscription   Statut Contributeur Dernière intervention   -
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.
Configuration: Windows Vista
Firefox 3.5.3

9 réponses

  1. avion-f16 Messages postés 19182 Date d'inscription   Statut Contributeur Dernière intervention   4 511
     
    // 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
  2. avion-f16 Messages postés 19182 Date d'inscription   Statut Contributeur Dernière intervention   4 511
     
    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);
    ...
    ?>
    0
  3. coronier
     
    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.
    0
  4. avion-f16 Messages postés 19182 Date d'inscription   Statut Contributeur Dernière intervention   4 511
     
    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.
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. coronier
     
    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) {
    0
  7. avion-f16 Messages postés 19182 Date d'inscription   Statut Contributeur Dernière intervention   4 511
     
    Erreu de ma part :
    $req = mysql_query($sql) or die('Erreur dans <em>“'.$sql.'”</em> :<br/>'.mysql_query()); 
    → Mets plutot mysql_error()
    0
  8. coronier
     
    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...
    0
  9. coronier
     
    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.
    0
  10. avion-f16 Messages postés 19182 Date d'inscription   Statut Contributeur Dernière intervention   4 511
     
    En platine, je veux bien.
    Mais ne la fait pas trop grande parce que ... : Masse volumique = 21 090 kg/m³
    0