IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

retourner la valeur d'un select count where [PDO]


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2016
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2016
    Messages : 16
    Points : 10
    Points
    10
    Par défaut retourner la valeur d'un select count where
    Bonjour,

    Je débute avec PHP et SQL (j'utilise PDO), jusqu'à présent j'arrive à réaliser des requêtes simples avec ma BDD, mais lorsque j'essaie de réaliser cet exemple :
    http://www.w3schools.com/sql/trysql....sql_func_count

    Mon fetch qui est enregistré sur une variable ne retourne rien....

    Faut-il boucler une variable de cette manière while ($var = $bdd->fetch()) ?

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Le COUNT ne renvoit qu'une ligne, il n'y a pas besoin de boucle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $var = $bdd->fetch(PDO::FETCH_NUM);
    echo $var[0];
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2016
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2016
    Messages : 16
    Points : 10
    Points
    10
    Par défaut
    C'est bien étrange ce qu'il m'arrive...

    Ma table se divise en deux colonnes : idV (valeur unique pour chaque ligne, incrémentation) et idMap (dont une même valeur peut etre commune à plusieurs idV)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $sql1='SELECT COUNT(idV) as maxMap FROM liste_villages WHERE idMap='.$idMap.''; 
    $req1=$bdd->query($sql1);
    $max=$req1->fetch();
    $req1->closeCursor();
    echo $max['maxMap'];
    ça me renvoie 0 pour l' echo
    pourtant sur ma table que je visionne avec la console MySQL, il y a bien deux lignes (donc un idV différent pour chacune) avec le même idMap
    ça devrait donc me renvoyer "2" non ?

    Je suis désolé si je respecte pas les règles du forum, je vous remercie par avance.

    EDIT: j'ai essayé avec ton code sabotage, toujours 0 pour l'echo... Je te remercie de m'avoir répondu

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Le .'' ne sert à rien

    Tu peux faire un debugage en affichant la requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $sql1='SELECT COUNT(idV) as maxMap FROM liste_villages WHERE idMap='.$idMap;
    echo $sql1;
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2016
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2016
    Messages : 16
    Points : 10
    Points
    10
    Par défaut
    Pas d'erreur particulière avec echo $sql1;

    la connexion à la BDD est bonne, la variable $idMap existe bien et sa valeur correspond à celle sur la table

    Bref, je vais abandonner je pense

    edit: en revanche, si je retire le "where ..." de ma requête, ça marche, mais ça renvoie des valeurs pour tous les idMap, hors moi je veux les résultats pour un seul idMap défini...

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu peux nous fournir un dump de la table ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2016
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2016
    Messages : 16
    Points : 10
    Points
    10
    Par défaut
    je ne me suis jamais servi de mysqldump auparavant, on peut faire la ligne de commande sous la console mysql?

    edit: cest bon j'ai trouvé un tutoriel en anglais je fais ça dans la soirée !

  8. #8
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Citation Envoyé par fabien_gz Voir le message
    Bref, je vais abandonner je pense
    ... et bravo pour ta motivation...

    Citation Envoyé par fabien_gz Voir le message
    Pas d'erreur particulière avec echo $sql1;
    On ne risque pas d'approuver ou de te dire le contraire, vu que tu ne nous montres pas le résultat...

    Supprime cette ligne (pas nécessaire) :

  9. #9
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2016
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2016
    Messages : 16
    Points : 10
    Points
    10
    Par défaut
    table.sql

    voici ! j'espère que ça vous ira !

    edit: je te remercie pour ta réponse jreaux62, ce que je voulais dire par abandonner c'était plutôt : laisser de côté ce problème et continuer d'avancer dans mon projet plutôt que de perdre tout mon temps dessus, ça ne m'empêche pas d'y réfléchir pour essayer de résoudre par moi même.
    J'ai retiré la ligne closeCursor(), mais ça change pas la donne :/

  10. #10
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Pourquoi tu as un id de type float ?
    Les flottants sont des approximations, faire des égalités dessus ne fonctionnent donc pas.

    Si idMap est une numéro de version, il peut être de type varchar plutôt.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  11. #11
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2016
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2016
    Messages : 16
    Points : 10
    Points
    10
    Par défaut
    merci pour ta réponse ! donc mon problème serait "normal"?

    Pour idMap c'est supposé valoir les coordonnées x,y d'une case d'une matrice

    je trouvais ça embettant d'avoir une colonne idMapx et idMapy, alors j'ai essayé de bricoler avec un float, le "." séparant les coordonnées x des y

    si vous avez une alternative plus rigoureuse j'écoute !

  12. #12
    Invité
    Invité(e)
    Par défaut
    sabotage t'a donné la solution: type VARCHAR.

    Et ne pas l'appeler "idMap", car ça fait penser à un id (type INT) !

  13. #13
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2016
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2016
    Messages : 16
    Points : 10
    Points
    10
    Par défaut
    très bien, je vais modifier ça

    je vous tiens au courant si jamais j'ai une mauvaise surprise.
    Merci beaucoup encore une fois

    edit: Yes ! ça marche nickel, je vous remercie tellement !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Retourner les valeurs d'un select dans un tableau après un POST
    Par DevCom59 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 23/06/2014, 21h47
  2. Recuperer la valeur d'un select count()
    Par dodo91 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 20/05/2009, 16h37
  3. [COUNT] select ... from ... where count !
    Par tmcgrady dans le forum Langage SQL
    Réponses: 5
    Dernier message: 30/11/2007, 17h29
  4. [Java][debutant]select count(*) ne retourne rien !!
    Par Invité dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 24/01/2007, 11h39
  5. [mysql 5]SELECT COUNT(*) + WHERE pseudo="$pseudo"
    Par rezareza dans le forum Requêtes
    Réponses: 3
    Dernier message: 26/11/2006, 15h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo