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 :

Problème de boucle while sur base de données [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Candidat au Club
    Inscrit en
    Mai 2006
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Problème de boucle while sur base de données
    Bonjour à tous. J'ai un petit problème de boucle. Je dois faire un planning de projet. J'ai créé 2 tables, une pour les projets et une pour les taches associées à chaque projet. Le but est d'afficher dans un tableau tous les projets stockés dans ma base de donnée mais que chacun soit suivi des taches qui lui sont attachées. en gros :

    -Projet 1
    -tache 1.1
    -tache 1.2

    -Projet 2
    -tache 2.1

    -Projet 3
    -tache 3.1
    -tache 3.2
    -tache 3.3

    Mais je n'arrive pas à afficher cela, seule la dernière tache que j'ai inséré dans ma base s'affiche. Cela donne donc:

    -Projet 1

    -Projet 2

    -Projet 3
    -tache 3.3

    J'ai du faire une erreur dans les boucles mais j'ai beau chercher je ne vois pas. Voilà le 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
    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
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    <table border="1" cellpadding="0" cellspacing="0">
     
    <tr>
     
    <th>&nbsp   Projet  &nbsp </th>
     
    <th>&nbsp   Commentaires  &nbsp </th>
     
    <th>&nbsp   Responsable  &nbsp </th>
     
    <th>&nbsp   Date début  &nbsp </th>
     
    <th>&nbsp   Date fin  &nbsp </th>
     
    </tr>
    <? include("connect_bdd_adn.php"); 
     
    // Creation et envoi de la requete
     
    $query = "SELECT Nom,id,Commentaires,res1,Date_debut,Date_fin FROM Projets";
    $tache = "SELECT titre,id_projet,commentaires,res1,Date_debut,Date_fin FROM `Projets_definition`";
     
    $result = mysql_query($query);
    $result_tache = mysql_query($tache);
    $tili="salut";
     
    // Recuperation des resultats
    while($roll = mysql_fetch_row($result_tache)){
     
     
    	//$query = mysql_query("SELECT a.Nom,a.id,a.Commentaires,a.res1,a.res2,a.res3,a.Date_debut,a.Date_fin,b.id_projet FROM Projets a,Projets_definition b WHERE a.id=b.id_projet");
    	//while($data = mysql_fetch_array($query)) {
     
    		echo "$id";
     
    		$titre = $roll[0];
     
    		$id_projet = $roll[1];
     
    		$Commentaires_tache = $roll[2];
     
    		$res1_tache = $roll[3];
     
    		$Date_debut_tache = $roll[4];
     
    		$Date_fin_tache = $roll[5];	
     
     
    		while($row = mysql_fetch_row($result)){
     
    		$Nom = $row[0];
     
    		$id = $row[1];
     
    		$Commentaires = $row[2];
     
    		$res1 = $row[3];
     
    		$Date_début = $row[4];
     
    		$Date_fin = $row[5];
     
     
    		echo "<tr  onMouseover=this.bgColor='yellow' onMouseout=this.bgColor='#FFFFFF'>\n
    
    		<td align=center><b>$Nom</b></td>\n
    
    		<td align=center>$Commentaires</td>\n
    
    		<td align=center>$res1</td>\n
    
    		<td align=center>$Date_début</td>\n
    
    		<td align=center>$Date_fin</td>\n
    
    		</tr>\n";
    		if($row[1] == $roll[1]){
    			echo "<tr  onMouseover=this.bgColor='red' onMouseout=this.bgColor='#FFFFFF'>\n
    			<td align=center><b>$titre</b></td>\n
    		
    			<td align=center>$Commentaires_tache</td>\n
    		
    			<td align=center>$res1_tache</td>\n
    		
    			<td align=center>$Date_debut_tache</td>\n
    		
    			<td align=center>$Date_fin_tache</td>\n
    			</tr>\n";
     
    		}}}
     
    // Deconnexion de la base de donnees
     
    mysql_close();
     
    ?>
     
    </tr>
     
    </table>

    Merci par avance à qui pourra me filer un coup de main.

  2. #2
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    + ça serait cool qu'on ai la tête de tes tables, et que le code PHP soit un brin plus clair (plutôt que de montrer la génération du HTML, mets juste un petit commentaire pour dire que tu le fais, ce qui intéresse là surtout, c'est les mysql_query, les while, le php quoi
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag (en bas)

  3. #3
    Membre expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Points : 3 115
    Points
    3 115
    Par défaut


    Il faut que tu fasses une requête pour chaque projet pour trouver les tâches associées (je crois que tu prends toutes les tâches avant de parcourir les projets donc ça peut pas marcher).
    Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

    Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)

  4. #4
    Membre émérite
    Avatar de yiannis
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    1 494
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 494
    Points : 2 791
    Points
    2 791
    Par défaut
    Bonjour,

    Tout d'abord

    puis en suite, tu as un probleme dans l'algo de ton code. Il faut que tu fasse ta requete sur tes projet en premier puis un while pour les afficher. Dans ce while tu fais la requete de tes taches liees a ton projet et tu les listes. Voila:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    requete sur les projets
       while(resultat de projet){
           affichage projet
           requete sur les tache liees a projet
               while(resultat tache){
                   affichage tache
                }
        }
    "Ce besoin de remords qui précède le Mal, que dis-je ! qui le crée..." E. CIORAN

  5. #5
    Candidat au Club
    Inscrit en
    Mai 2006
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Dèjà désolé pour le code, c'est rectifié ! Sinon merci pour les réponses je vais essayer de ce pas.

  6. #6
    Membre habitué
    Homme Profil pro
    Consultant CRM
    Inscrit en
    Mai 2006
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant CRM
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2006
    Messages : 99
    Points : 147
    Points
    147
    Par défaut
    Je ferais plus simple ...
    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
     
    $sql  = "Select * from Projet";
    $sql2 = "Select * from Projets_definition Were id_projet={id}";
     
    $res = mysql_query( $sql );
    while( $row = mysql_fetch_row( $res ) ) {
      $id = $row[ 'id' ];
      echo "Projet $id<br>";
     
      $res2 = mysql_query( str_replace( '{id}', $id, $sql2 ) );
      while( $row2 = mysql_fetch_row( $res2 ) ) {
        $id_tache = $row2[ 'id' ];
        echo "tache $id_tache<br>";
      }
     
    }
    Nicolas BUI

  7. #7
    Candidat au Club
    Inscrit en
    Mai 2006
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Ca marche yiannis!!! Merci à tous pour votre aide

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 21/04/2012, 12h42
  2. Problème sur base de données
    Par Frédéric.S dans le forum Langage SQL
    Réponses: 7
    Dernier message: 09/08/2009, 14h37
  3. Boucle while avec base de données
    Par bremer dans le forum Langage
    Réponses: 9
    Dernier message: 08/09/2008, 15h59
  4. problème de sauvegarde sur base de données
    Par thunderpat dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 29/12/2007, 15h10
  5. 2 Problèmes sur Base de Donnée
    Par jockyboss777 dans le forum VB.NET
    Réponses: 18
    Dernier message: 19/10/2007, 23h11

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