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

Langage PHP Discussion :

[Tableaux] Lister le tableau avec UNION => Problème [Fait]


Sujet :

Langage PHP

  1. #1
    Membre du Club Avatar de tutomania
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 68
    Points : 56
    Points
    56
    Par défaut [Tableaux] Lister le tableau avec UNION => Problème
    Bonjour à tout le monde.

    Je me tire les cheveux sur une requete sql utilisant union all, le problème se situe au moment du listage des données. En effet sous phpmyadmin il sort un tableau avec deux entrées mais en php je n'arrive pas à ressortir la liste.

    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
    $sqltest="
    SELECT COUNT( * )
    FROM topics 
    WHERE cat_id = '$catid'
    UNION ALL
    SELECT COUNT( * )
    FROM posts
    WHERE cat_id = '$catid'	";
     
    $reqnum 	=	mysql_query($sqltest);
    $resultat	= 	mysql_fetch_array($reqnum);
     
    $nbsujet	=	$resultat[0];
    $nbmesscat	=	$resultat[1];
     
    echo " $nbsujet	- $nbmesscat ";
    Le problème est le suivant : $nbsujet s'affiche mais $nbmesscat ne s'affiche pas, j'ai essayé moulte choses mais sans grande reussite.

    Pourriez vous m'apportez votre aide s'il vous plait ?
    Merci beaucoup et bonne nuit à tous

  2. #2
    Membre habitué Avatar de Cobaye
    Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    120
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 120
    Points : 154
    Points
    154
    Par défaut
    En SQL UNION permet d'exécuter deux requêtes à condition que chaque requete sort le même nombre de colonne.

    le résultat de ta requete est renvoyé sur deux lignes ! la premier avec le résultat de ta première requete et la deuxième ligne avec le résultat de ta deuxième requete.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $resultat	= 	mysql_fetch_array($reqnum);
    ne revoit que le résultat de ta première ligne.

  3. #3
    Membre du Club Avatar de tutomania
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 68
    Points : 56
    Points
    56
    Par défaut
    Merci pour cette précision.
    Il y a t il une solution alors pour moi pour faire deux count(*) sur deux tables differentes ?

    Merci par avance

  4. #4
    Membre du Club Avatar de tutomania
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 68
    Points : 56
    Points
    56
    Par défaut
    Je ne saisi pas pourquoi en php on ne peux pas lister ces deux lignes.
    Elles apparraissent bien directement sous Phpmyadmin, c'est frustrant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT COUNT( id )
    FROM forum_posts
    WHERE cat_id = '3'
    UNION ALL
    SELECT COUNT( topic_id )
    FROM forum_topics
    WHERE cat_id = '3'
    J'ai trouvé un poste qui en parlait :
    http://www.developpez.net/forums/sho...ht=count+union

    La solution trouvé est :

    SELECT COUNT(DISTINCT m.message_id), COUNT(DISTINCT me.membre_id) FROM fsb_messages m, fsb_membres me

    Elle ne fonctionne pas avec moi ^^, déja je pense que le DISTINCT est inutile pour mes requetes et je dois ajouter une clause WHERE.

    Avez vous une idée pour faire deux count dans une seule requete et afficher le résultat dans un array ?

    Help me developpeurs

  5. #5
    Membre du Club Avatar de tutomania
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    68
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 68
    Points : 56
    Points
    56
    Par défaut
    BON BAH VOILA C'EST OK ! J'AI TROUVE !!!!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $sqltest = "SELECT COUNT( DISTINCT d.id ) , COUNT( DISTINCT p.topic_id ) FROM sky_forum_posts d, sky_forum_topics p
    WHERE d.cat_id = $catid AND p.cat_id = $catid
    						";
    $reqnum = mysql_query($sqltest);
    $resultat = mysql_fetch_array($reqnum);
     
    $nbsujet = $resultat[0];
    $nbmesscat = $resultat[1];
    Merci à tous pour votre aide !
    Bonne soirée

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

Discussions similaires

  1. [Tableaux] exploiter un tableau avec array_splice
    Par Mitaka dans le forum Langage
    Réponses: 3
    Dernier message: 31/01/2008, 18h05
  2. [Tableaux] Problème de tableau avec les strings
    Par roxxxy dans le forum Langage
    Réponses: 4
    Dernier message: 09/03/2007, 11h04
  3. Réponses: 3
    Dernier message: 22/02/2007, 20h02
  4. Réponses: 2
    Dernier message: 15/12/2006, 14h22
  5. Réponses: 5
    Dernier message: 26/08/2006, 12h14

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