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 :

Faire une condition sur un count() [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Him
    Him est déconnecté
    Membre éclairé Avatar de Him
    Profil pro
    Inscrit en
    Février 2006
    Messages
    244
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 244
    Par défaut Faire une condition sur un count()
    Bonjour,

    J'essaye tant bien que mal de faire une condition sur un coun(*), mais sans succès.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    $count_entries = mysql_query("SELECT count(*) AS nbr_entries FROM $T_Sites WHERE id_cat = '$id_cat'");
    $count_entries = mysql_fetch_array($count_entries);
    if ( $count_entries['nbr_entries'] > 0 ) {
        while ($last_in_results = mysql_fetch_array($last_in) )
        {
            echo "<br /><a href=></a><br />"; 
        }
    }
    Quelqu'un à une idée de ce que j'ai oublié ?

  2. #2
    Membre Expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Par défaut
    tu as oublié de récupérer le résultat de ta requete.

    mysql_query envoie la requete et retourne une resource si tout s'est bien passée ou FALSE en cas d'echec.
    Il faut ensuite utiliser d'autres fonctions pour récupérer les résultats.

    Dans ton cas il faut que tu utilises mysql_num_rows().

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    $resource= mysql_query("SELECT count(*) AS nbr_entries FROM $T_Sites WHERE id_cat = '$id_cat'");
    if(! $resource ) //pense a tjs tester que ca a marché!
       {
       die("Erreur mysql : " . mysql_errno() . " - " . mysql_error());
       }
     
    // Ensuite tu vas avoir 1 seul résultat qui correspond au nombre d'enregistrements dans ton cas
     
    $vResult = mysql_fetch_array($resource);
     
    // Maintenant tu as ton résultat dans $vResult['nbr_entries']
    EDIT: Méeuhhhh Celira!

  3. #3
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Salut
    Tu ne peux pas récupérer directement le résultat d'une requête. Essaye ce genre de syntaxe :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $res= mysql_query("SELECT count(*) AS nbr_entries FROM $T_Sites WHERE id_cat = '$id_cat'") or die(mysql_error());
    $data=mysql_fetch_assoc($res);
    $count_entries=$data['nbr_entries'];

    EDIT : koopajah, arrête de poster en même temps que moi !
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  4. #4
    Him
    Him est déconnecté
    Membre éclairé Avatar de Him
    Profil pro
    Inscrit en
    Février 2006
    Messages
    244
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 244
    Par défaut
    Arf, j'editais en même temps que vous répondiez.

    Effectivement, j'ai oublié mon mysql_fetch...
    Que j'ai rajouté maintenant.

    Mais je ne comprends pas, l'un me parle de mysql_num_rows qu'il n'utilise pas, & l'autre me parle encore d'une autre fonction :s

  5. #5
    Membre Expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Par défaut
    mysql_num_rows() te retourne le nombre de résultats renvoyé par ta requete. Vu que tu utilisais un while j'ai cru que ca serait utile de l'utiliser.

    Maintenant j'ai compris ensuite que ta requete renvoyait une seule valeur et qu'elle serait parfois à 0, c'est pour ca que je ne l'utilise pas.

    Maintenant le code que je t'ai donné, ainsi que celui de Celira, marche donc l'as tu testé?

  6. #6
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Pour rajouter une couche sur ce que dit koopajah (koopajah : la prochaine fois je t'envoie un mp et on fait un post groupé, ça ira plus vite et ça évitera qu'on poste 2 fois la même chose)
    A ta place j'éviterai d'utiliser le même nom pour ce que retourne la requête et le résultat:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    // au lieu de ça :
    $count_entries = mysql_query("SELECT count(*) AS nbr_entries FROM $T_Sites WHERE id_cat = '$id_cat'");
    $count_entries = mysql_fetch_array($count_entries);
     
    //utilises plutot ça
    $rq_count_entries = mysql_query("SELECT count(*) AS nbr_entries FROM $T_Sites WHERE id_cat = '$id_cat'");
    $count_entries = mysql_fetch_array($rq_count_entries);
    et fais un echo de ce que tu testes, ça permettra de savoir si le problème vient de là.
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  7. #7
    Him
    Him est déconnecté
    Membre éclairé Avatar de Him
    Profil pro
    Inscrit en
    Février 2006
    Messages
    244
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 244
    Par défaut
    Oui, j'ai opté pour la solution de celira, mais dans l'état actuel j'ai une erreur mysql.

    & je cherche de quoi elle retourne, sans quoi je ne saurai dire si ça marche.
    Merci en tous les cas

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

Discussions similaires

  1. Faire une condition sur Object toArray()
    Par ghir_ana dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 12/10/2014, 15h18
  2. Comment faire une condition sur deux lignes différentes ?
    Par sogelinas dans le forum SAS Base
    Réponses: 4
    Dernier message: 08/10/2014, 03h33
  3. [Makefile] Faire une condition sur la taille d'un fichier
    Par paterson dans le forum Systèmes de compilation
    Réponses: 1
    Dernier message: 04/08/2013, 02h11
  4. Réponses: 6
    Dernier message: 28/07/2011, 14h21

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