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 :

Pb extraction des données de la BD


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Femme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Novembre 2011
    Messages : 26
    Par défaut Pb extraction des données de la BD
    Bonjour tout le monde,
    J'ai un pb concernant l'extraction de données depuis la base de données vers un tableau à afficher dans ma page php en utilisant la fonction Count:

    Voilà un bout de code pour avoir une idée:


    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
    <?php
     
    mysql_connect("localhost", "root", ""); // Connexion à MySQL
    mysql_select_db("alu"); // Sélection de la base 
    $statut_demande="En cours";
    $reponse = mysql_query("SELECT nom_projet FROM projet")or die( mysql_error() );
     
    echo "<table width=\"435\" align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">
      
      echo "<tr>
        <td height=\"22\">&nbsp;</td>
    	<td valign=\"top\" bgcolor=\"#6699FF\"><b>Nom projet</b>&nbsp;</td>
        <td>&nbsp;</td>
    	<td valign=\"top\" bgcolor=\"#6699FF\"><b>Nombre de demandes</b>&nbsp;</td>//nbre demandes dans un projet
        <td>&nbsp;</td>
        <td valign=\"top\" bgcolor=\"#6699FF\"><b>Demandes en cours</b>&nbsp;</td>//nbre demandes en cours dans un projet
        <td>&nbsp;</td>
      </tr>";
    ?>
    j'ai pensé à executer ces requetes:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     //selectionne le nombre de demandes en cours
      $reponse2 = mysql_query("SELECT COUNT(*) FROM demande,demande_projet,projet WHERE demande.id_demande=demande_projet.id_demande AND projet.id_projet=demande_projet.id_projet AND demande.statut_demande='".$statut_demande."'")or die( mysql_error() );
      //selectionne le nombre de demandes
      $reponse1 = mysql_query("SELECT COUNT(*)FROM demande,demande_projet,projet WHERE demande.id_demande=demande_projet.id_demande AND projet.id_projet=demande_projet.id_projet")or die( mysql_error() );
    Je veux accomplir ce bout de code:

    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
    <?php
    while ($donnees = mysql_fetch_array($reponse) and ?)
    {
     
    echo '<td height="22">&nbsp;</td>
        <td valign="top">'.$donnees['nom_projet'].'&nbsp;</td>
        <td>&nbsp;</td>
        <td valign="top">'.?.'&nbsp;</td>
        <td>&nbsp;</td>
        <td valign="top">'.?.'&nbsp;</td>
        <td>&nbsp;</td>
       
      </tr>';
     
    }
     echo "</table>";
    mysql_close(); // Déconnexion de MySQL
     ?>
    Je veux aussi savoir est ce qu'il faut ajouter aussi dans les deux requetes une clause WHERE nom_projet="variable nom de projet" pour savoir pour quel projet il faut afficher le nbre de demandes... si c'est le cas comment faire ça
    Merci d'avance

  2. #2
    Membre chevronné Avatar de humitake
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2010
    Messages
    399
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2010
    Messages : 399
    Par défaut
    Bonsoir,

    Je ne me souviens plus trop de la syntaxe littérale pour récupéré la valeur d'un count. Par contre tu peux utiliser le mode numérique sans problème :
    $donnees[0]
    Citation Envoyé par angelina88
    Je veux aussi savoir est ce qu'il faut ajouter aussi dans les deux requetes une clause WHERE nom_projet="variable nom de projet" pour savoir pour quel projet il faut afficher le nbre de demandes... si c'est le cas comment faire ça
    La je ne comprend pas très bien ...
    Si tu as déjà le nom du projet alors oui tu peux faire une clause WHERE nom_projet = "variable nom projet", mais ce serrait beaucoup plus propre avec un id.

  3. #3
    Membre averti
    Femme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Novembre 2011
    Messages : 26
    Par défaut
    Oui mais le nom du projet je vais l'avoir que dans le While après la déclaration des deux requêtes !! Pour éclaircir les choses les trois bout de codes font partie d'une même page php
    Et pour "$donnees[0] c'est la même $donnees["nom_projet"] "

    Merci pour votre reponse ^^

  4. #4
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2006
    Messages
    985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2006
    Messages : 985
    Par défaut
    Je propose 2 tables :
    • projets (id_projet, nom_projet)
    • demandes (id_demande, projet_id, statut)


    Et puis cette requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT p.nom_projet as projet, COUNT(d.id_demande) as nb_demandes, COUNT(d2.id_demande) as nb_deamndes_encours FROM projets p
    INNER JOIN demandes d ON d.projet_id = p.id_projet
    INNER JOIN demandes d2 ON d2.projet_id = p.id_projet AND d2.statut = '.$statut_demande.'
    GROUP BY COUNT(d.id_demande), COUNT(d2.id_demande)

  5. #5
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2006
    Messages
    985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2006
    Messages : 985
    Par défaut
    et récupération :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    while ($donnees = mysql_fetch_array($reponse))
    {
    	echo $donnees['projet'] . ' - ' . $donnees['nb_demandes'] . ' - ' . $donnees['nb_deamndes_encours'] . '<br />';
    }

  6. #6
    Membre averti
    Femme Profil pro
    Inscrit en
    Novembre 2011
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Novembre 2011
    Messages : 26
    Par défaut
    Mercii bcp okoweb pour ton aide
    Dans mon cas j'ai trois tables
    projet, demande et demande_projet (où il y a les deux clés etrangères et un autre attribut), et voilà ci-dessous le code que j'ai executé mais le problème c'est que j'obtiens comme résultat une seule ligne :/
    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
    <?php
     
    mysql_connect("localhost", "root", ""); // Connexion à MySQL
    mysql_select_db("alu"); // Sélection de la base 
    $statut_demande="En cours";
     
     
    $reponse=mysql_query("SELECT d.nom_projet as nom_projet, COUNT(d1.id_demande) as nb_demandes, COUNT(d2.id_demande) as nb_deamndes_encours FROM demande_projet d1 
    INNER JOIN projet d ON d.id_projet = d1.id_projet
    INNER JOIN demande d2 ON d2.id_demande = d1.id_demande AND d2.statut_demande = '".$statut_demande."'
    GROUP BY d.nom_projet")or die( mysql_error() );
     
    echo "<table width=\"435\" align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">";
     
      echo "<tr>
        <td height=\"22\">&nbsp;</td>
    	<td valign=\"top\" bgcolor=\"#6699FF\"><b>Nom projet</b>&nbsp;</td>
        <td>&nbsp;</td>
    	<td valign=\"top\" bgcolor=\"#6699FF\"><b>Nombre de demandes</b>&nbsp;</td>
        <td>&nbsp;</td>
        <td valign=\"top\" bgcolor=\"#6699FF\"><b>Demandes en cours</b>&nbsp;</td>
        <td>&nbsp;</td>
      </tr>";
     
    while ($donnees = mysql_fetch_array($reponse))
    {
     
     
    echo '<td height="22">&nbsp;</td>
        <td valign="top">'.$donnees['nom_projet'].'&nbsp;</td>
        <td>&nbsp;</td>
        <td valign="top">'.$donnees['nb_demandes'].'&nbsp;</td>
        <td>&nbsp;</td>
        <td valign="top">'.$donnees['nb_deamndes_encours'].'&nbsp;</td>
        <td>&nbsp;</td>
       
      </tr>';
     
     
    }
     echo "</table>";
    mysql_close(); // Déconnexion de MySQL
     ?>

Discussions similaires

  1. [RSS] extraction des données d'un flux
    Par toddy_101 dans le forum APIs
    Réponses: 4
    Dernier message: 23/02/2007, 17h28
  2. vc++(6)+extraction des données dans une image(.tif)
    Par spootnic22 dans le forum Visual C++
    Réponses: 1
    Dernier message: 22/11/2006, 16h14
  3. [MySQL] Problème de Charset à l'extraction des données
    Par naoufal01 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 06/11/2006, 13h14
  4. extraction des données dans une table Access
    Par moabomotal dans le forum Access
    Réponses: 2
    Dernier message: 26/05/2006, 11h17

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