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

  1. #1
    Him
    Him est déconnecté
    Membre régulier 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
    Points : 112
    Points
    112
    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
    Points : 3 212
    Points
    3 212
    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 : 39
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    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 !

  4. #4
    Him
    Him est déconnecté
    Membre régulier 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
    Points : 112
    Points
    112
    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
    Points : 3 212
    Points
    3 212
    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 : 39
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    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à.

  7. #7
    Him
    Him est déconnecté
    Membre régulier 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
    Points : 112
    Points
    112
    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

  8. #8
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    c'est souvent une erreur dans les ' ' ou bien une variable non remplie etc.

    Fais un echo de ta requete avant de l'envoyer pour vérifier qu'elle ressemble a ce que tu voulais

  9. #9
    Him
    Him est déconnecté
    Membre régulier 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
    Points : 112
    Points
    112
    Par défaut
    Je ne comprends pas...
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE id_cat = '93'' at line 1
    Pourtant, mon code semble juste...
    En gros, voici tout monde code & ce que je cherche à faire.
    J'ai un annuaire, & sur la page d'accueil, j'affiche tous les derniers sites validés.

    Dans les pages de sous-catégorie ( liée à index. ) j'aimerais n'affiché que les sites de la catégorie en question.

    mon $cat_id est déterminé en haut de page, avec un GET

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    							<h3>Derniers sites validés :</h3><center>
     
    						<?php if (empty($cat_id)) { 
     
    							$lk = connection_BD(); // Connection
    							$last_in = mysql_query("SELECT * FROM $T_sites ORDER BY id DESC LIMIT 0,3");
     
    							while ($last_in_results = mysql_fetch_array($last_in) )
    							{
    								echo "<br /><a href=\"site-" . $last_in_results[id] . "-web.htm\" title=" . $last_in_results['titre'] . "\"><img src=\""; if ($last_in_results['url_image']) {echo $last_in_results['url_image']; } else {echo "http://www.thumbzor.com/tel.php?url=".$last_in_results['url']."&remplace=http://www.bestofdirectory.net/images/image_sites.gif";} echo "\" width=\"120\" height=\"90\" border=\"0\" alt=\"" . $last_in_results['titre'] . "\" /></a><br />"; 
    							}
    							} else {
    								$lk = connection_BD(); // Connection
    								$res= mysql_query("SELECT count(*) AS entries FROM $T_Sites WHERE id_cat = '$cat_id' ") or die(mysql_error());
    								$data=mysql_fetch_assoc($res);
    								$count_entries=$data['entries'];
    								if ( $count_entries > 0 ) {
    								while ($last_in_results = mysql_fetch_array($last_in) )
    							{
    								echo "<br /><a href=\"site-" . $last_in_results[id] . "-web.htm\" title=" . $last_in_results['titre'] . "\"><img src=\""; if ($last_in_results['url_image']) {echo $last_in_results['url_image']; } else {echo "http://www.thumbzor.com/tel.php?url=".$last_in_results['url']."&remplace=http://www.bestofdirectory.net/images/image_sites.gif";} echo "\" width=\"120\" height=\"90\" border=\"0\" alt=\"" . $last_in_results['titre'] . "\" /></a><br />"; 
    							}								
    							} else 
    								 echo 'Pas de sites inscrits dans cette catégorie';
    								} 
    							mysql_close($lk);
     
    							?></center>
    Pour la page d'accueil, ça marche.... mais le reste pas :s

  10. #10
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    si ton champ id_cat est un int je crois qu'il ne faut pas mettre les ' ' autour de sa valeur.

    Essaies de les enlever pour voir.

  11. #11
    Him
    Him est déconnecté
    Membre régulier 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
    Points : 112
    Points
    112
    Par défaut
    Ouep, mais j'avais déjà essayer ça..

    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE id_cat = 93' at line 1

  12. #12
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    Remplaces
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $res= mysql_query("SELECT count(*) AS entries FROM $T_Sites WHERE id_cat = '$cat_id' ") or die(mysql_error());
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $query = "SELECT count(*) AS entries FROM $T_Sites WHERE id_cat = '$cat_id' ";
    echo "Ma query : " . $query . "<br/>";
    $res= mysql_query($query) or die(mysql_error());
    pour vérifier que la valeur de $T_Sites est bien valide.

  13. #13
    Him
    Him est déconnecté
    Membre régulier 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
    Points : 112
    Points
    112
    Par défaut
    arf, $T_sites
    J'étais distrait

    Bienvu

    Bon & bien, il ne me reste plus alors qu'à vous remercier tous les deux

+ 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