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 :

Récupérer tous les élements d'une table après GROUP BY [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Homme Profil pro
    Responsable d'équipe
    Inscrit en
    Novembre 2015
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Responsable d'équipe
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2015
    Messages : 42
    Par défaut Récupérer tous les élements d'une table après GROUP BY
    Bonjour à tous,
    Je me permet de poster car je bloque dans mes requêtes et je n'ai pas pu trouver de solutions dans la toile...
    J'ai fait un site web PHP/MySQL ou les utilisateurs peuvent mettre des commentaires avec la possibilité de mettre un jaime ou un j'aime pas.
    Jusqu'à la rien d'extraordinaire.
    Je vous fais un exemple simplifié au maximum :
    Ici il s'agit de l'affichage de la reponse unique et du calcul du nombre de jaime par utilisateur (vote unique également)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT *, SUM(jaime) AS sum_jaime FROM jaime GROUP BY id_reponse_2, voteur 
     
    SELECT *, COUNT(voteur) as nb_jaime FROM sum_jaime GROUP BY id_jaime
     
    SELECT * FROM reponse LEFT JOIN nb_jaime ON reponse.id_reponse=nb_jaime.id_reponse_2
    C'est après que ca se complique je souhaite mettre à la suite de cette requête dans la même boucle {} une autre requête ou seraient groupés tous les commentaires du 1er commentaire.

    Quelque soit la requête que je choisi, ne sera affiché qu'un seul commentaire et les autres n'apparaissent pas...

    Exemple si je met à la suite la requête suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT id_reponse_de_reponse, repondeur_suivant, reponse_du_repondeur FROM reponse_de_reponse
    Le echo ne m'affichera qu'une seule ligne de données.

    PS: il ne s'agit pas des vrais ligne de codes, je voulais juste simplifier le principe.

    Si quelqu'un pourrait m'aiguiller sur la/les requêtes à utiliser?

    En vous remerciant

  2. #2
    Membre averti
    Homme Profil pro
    Responsable d'équipe
    Inscrit en
    Novembre 2015
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Responsable d'équipe
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2015
    Messages : 42
    Par défaut
    Après réflexion avec moi même la requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT id_reponse_de_reponse, repondeur_suivant, reponse_du_repondeur FROM reponse_de_reponse
    ne correspond pas à ce que j'avais mit.

    J'ai du mettre un autre GROUP BY...

    En fait je suis au boulot dans un service de relation clientèle et je n'ai pas mes ligne de codes avec moi.

    Après avoir rédigé ce que je vous ai écrit je pense plutot qu'il faut un autre LEFT JOIN de type suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     WHERE reponse.id_reponse=reponse_de_reponse.id_reponse_3
    Je vais tester ca ce soir et vous tiendrais au courant!

  3. #3
    Membre averti
    Homme Profil pro
    Responsable d'équipe
    Inscrit en
    Novembre 2015
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Responsable d'équipe
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2015
    Messages : 42
    Par défaut
    Ça ne fonctionne pas.

    Voici mon 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
    	<section class="best_rep">
    		<p><strong>Toutes les réponses du jour : </strong></p>
    		<?php
    		//réponses des utilisateurs par ordre décroissant
    		$request="SELECT * FROM repjaimeall WHERE date_rep = DATE( NOW()) ORDER BY id_rep DESC";
     
    		$reponse=$bdd->query($request);   
     
     
    		while($donnees=$reponse->fetch())
    		{
    			$donnees['id_rep'];
    			$id_rep2=$donnees['id_rep'];
    			$donnees['rep'];
    			$rep2=htmlspecialchars($donnees['rep']);
    			$donnees['pseudo'];
    			$repondant=htmlspecialchars($donnees['pseudo']);
     
    		//les réponses affichages des résultats des pouces
    		echo "<div class='suggestion_2'><aside class='pouce1'><img class='pouce2' src='img/jaime_15.png' alt='pouce vert'>:" . $donnees['jamais2'] ."
    		<img class='pouce3' src='img/jaime_pas_15.png' alt='pouce rouge'>:" . $donnees['jamaispas2'] . "</aside>
    
    </br>" . $rep2 . " :<strong> ". htmlspecialchars($donnees['pseudo']) ."</strong>";
     
    {
    	echo "<aside class='pouceformulaire'><strong>Pour Contre</strong>";		
    	//voter +1 jaime
    			 echo "<table><tr><td></td><td><form action='vote.php' method='post'>";
    			 echo "<input type='hidden' name='id_rep2' value='"?><?php echo $id_rep2 ?><?php echo "'>";
    			 echo "<input type='hidden' name='repondantjaime' value='"?><?php echo $pseudo ?><?php echo "'>";
    			 echo "<input type='hidden' name='jaime' value=1>";
    			 echo "<input type='hidden' name='date_jaime' value="?><?php echo date('Y-m-d') ?><?php echo ">";
    			 echo "<input class='pouce2' src='img/jaime_15.png' type=image value='submit'></form></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td>";
    //voter +1 jaime pas
    			 echo "<td><form action='vote1.php' method='post'>";
    			 echo "<input type='hidden' name='id_rep3' value='"?><?php echo $id_rep2 ?><?php echo "'>";
    			 echo "<input type='hidden' name='repondantjaimepas' value='"?><?php echo $pseudo ?><?php echo "'>";
    			 echo "<input type='hidden' name='jaimepas' value=1>";
    			 echo "<input type='hidden' name='date_jaimepas' value="?><?php echo date('Y-m-d') ?><?php echo ">";
    			 echo "<input class='pouce3'src='img/jaime_pas_15.png' type=image value='submit'></form></td></tr></table>";	
    			 ?>
     
    		<?php	
    			echo "<form action='reponse2.php' method='post'>
    		<input type='hidden' name='pseudo_rep_v2' value="?><?php echo $pseudo ?><?php echo ">
    		<textarea class='element_en_tete' name='rep_v2' rows='2' cols='38'>Réagissez ici.</textarea>
    		<input type='hidden' name='date_rep_v2' value=" ?><?php echo date('Y-m-d') ?><?php echo ">
    		<input type='hidden' name='id_rep_v2_2' value=" ?><?php echo $id_rep2 ?><?php echo ">
    		<input type='submit' value='Valider' />
    		</form></aside></div>";		 		
    		}
    		}
    		$reponse->closeCursor();	
    			 ?>
    			</section>
    Voici ce que ça me donne Nom : IMG_20170321_223757.jpg
Affichages : 1497
Taille : 43,3 Ko

    Bon jusque la ça va.

    Un user peut répondre à la question principale et toutes les réponses s'affichent.

    Par contre quand un autre user veut commenter la réponse d'un user voici le code que j'ai pensé
    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
    		<section class="best_rep">
    		<p><strong>Toutes les réponses du jour : </strong></p>
    		<?php
    		//réponses des utilisateurs par ordre décroissant
    		$request="SELECT * FROM repjaimeall WHERE date_rep = DATE( NOW()) ORDER BY id_rep DESC";
     
    		$reponse=$bdd->query($request);   
     
     
    		while($donnees=$reponse->fetch())
    		{
    			$donnees['id_rep'];
    			$id_rep2=$donnees['id_rep'];
    			$donnees['rep'];
    			$rep2=htmlspecialchars($donnees['rep']);
    			$donnees['pseudo'];
    			$repondant=htmlspecialchars($donnees['pseudo']);
     
    		//les réponses affichages des résultats des pouces
    		echo "<div class='suggestion_2'><aside class='pouce1'><img class='pouce2' src='img/jaime_15.png' alt='pouce vert'>:" . $donnees['jamais2'] ."
    		<img class='pouce3' src='img/jaime_pas_15.png' alt='pouce rouge'>:" . $donnees['jamaispas2'] . "</aside>
    
    </br>" . $rep2 . " :<strong> ". htmlspecialchars($donnees['pseudo']) ."</strong>";
     
    {
    	echo "<aside class='pouceformulaire'><strong>Pour Contre</strong>";		
    	//voter +1 jaime
    			 echo "<table><tr><td></td><td><form action='vote.php' method='post'>";
    			 echo "<input type='hidden' name='id_rep2' value='"?><?php echo $id_rep2 ?><?php echo "'>";
    			 echo "<input type='hidden' name='repondantjaime' value='"?><?php echo $pseudo ?><?php echo "'>";
    			 echo "<input type='hidden' name='jaime' value=1>";
    			 echo "<input type='hidden' name='date_jaime' value="?><?php echo date('Y-m-d') ?><?php echo ">";
    			 echo "<input class='pouce2' src='img/jaime_15.png' type=image value='submit'></form></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td>";
    //voter +1 jaime pas
    			 echo "<td><form action='vote1.php' method='post'>";
    			 echo "<input type='hidden' name='id_rep3' value='"?><?php echo $id_rep2 ?><?php echo "'>";
    			 echo "<input type='hidden' name='repondantjaimepas' value='"?><?php echo $pseudo ?><?php echo "'>";
    			 echo "<input type='hidden' name='jaimepas' value=1>";
    			 echo "<input type='hidden' name='date_jaimepas' value="?><?php echo date('Y-m-d') ?><?php echo ">";
    			 echo "<input class='pouce3'src='img/jaime_pas_15.png' type=image value='submit'></form></td></tr></table>";	
    			 ?>
     
    		<?php	
    			echo "<form action='reponse2.php' method='post'>
    		<input type='hidden' name='pseudo_rep_v2' value="?><?php echo $pseudo ?><?php echo ">
    		<textarea class='element_en_tete' name='rep_v2' rows='2' cols='38'>Réagissez ici.</textarea>
    		<input type='hidden' name='date_rep_v2' value=" ?><?php echo date('Y-m-d') ?><?php echo ">
    		<input type='hidden' name='id_rep_v2_2' value=" ?><?php echo $id_rep2 ?><?php echo ">
    		<input type='submit' value='Valider' />
    		</form></aside></div>";		 	
     
    $reponse = $bdd->query('SELECT * FROM rep_v2 WHERE id_rep_v2_2='. $id_rep2.'');
     
    			while ($donnees = $reponse->fetch())
    				{			   
    			echo htmlspecialchars($donnees['rep_v2']) . " : <strong>" . htmlspecialchars($donnees['pseudo_rep_v2']) . "</br>";		
    			}
    		}
    		}
    		$reponse->closeCursor();	
    			 ?>
    			</section>
    Tous les sous commentaires s'affichent c'est super mais ça m'efface les réponses précédents:Nom : IMG_20170321_225554.jpg
Affichages : 1496
Taille : 57,3 Ko

    Il y a quelque chose que je fais de mal...

    Je suis encore un débutant si quelqu'un pouvait m'aider...

    Merci.

  4. #4
    Membre Expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 59
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Billets dans le blog
    8
    Par défaut
    Moi j'aimerais bien t'aider. Mais je comprends rien. Ni sur ce que tu veux obtenir, ni si ton problème relève du SQL ou bien du PHP... Si tu pouvais faire une première analyse et ne mettre ici QUE ce qui te bloque, on pourrait se pencher avec toi sur ce qui bloque. Genre UN exemple, un résultat attendu et le résultat obtenu jusque-là...

    Et puisque tu sembles penser dans ton titre que ton problème vient de tes requêtes, contente toi de nous filer le SQL, les tables, les jointures, la logique relationnelle des données, bref, ce que tu saisis quand tu es direct dans ton PHPmyadmin quoi...

    Au passage, un détail :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT * FROM repjaimeall WHERE date_rep = DATE( NOW()) ORDER BY id_rep DESC;
    /*date(now()) ? il y a  plus direct ! */
    SELECT * FROM repjaimeall WHERE date_rep = curdate() ORDER BY id_rep DESC;
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  5. #5
    Membre averti
    Homme Profil pro
    Responsable d'équipe
    Inscrit en
    Novembre 2015
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Responsable d'équipe
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2015
    Messages : 42
    Par défaut
    Bonjour

    @Dendrite

    Merci de m'avoir répondu et de prendre du temps pour te pencher sur mon problème.

    A la base j'avais un problème SQL.

    Après avoir poster mon problème la solution m'est venu tout seul.

    Je vais essayer de faire simple voici 4 vues successifs MySql

    Nom : jaime1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SELECT *, SUM(jaime) AS jamais 
    FROM jaime GROUP BY id_rep2, pseudo2jamais
    Nom : jaime2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SELECT *, COUNT(pseudo2) AS jamais2 
    FROM jaime1 GROUP BY id_rep2jamais2
    jamais2 me donne le nombre de jaime par id avec la condition qu'un utilisateur ne peut voter qu'une fois.

    Nom : repjaimeall
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT * 
    FROM rep 
    LEFT JOIN jaime2
    ON rep.id_rep=jaime2.id_rep2
    rep
    Le résultat de cette requête me donne la réponse unique de l'id (valeur unique de la colonne de gauche) et le COUNT de la vue jaime2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $request="SELECT * FROM repjaimeall WHERE date_rep = DATE( NOW()) ORDER BY id_rep DESC";
    Jusque la ca fontionne nickel.

    C'est après que ca se corse.

    J'ai voulu recréer une requête directement en PHP à la suite, pour disposer de toutes les valeurs de rep_v2 sur condition à la suite de la précédente requête:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $reponse = $bdd->query('SELECT * FROM rep_v2 WHERE id_rep_v2_2='. $id_rep2.'');
    Je voulais afficher tous les commentaires (la dernière requête) qui correspondent à id_rep de repjaimeall.

    Mes requêtes focntionnent.

    C'est l'affichage PHP qui me bloque.

    Je ne sais pas comment faire pour que ca me fasse une présentation du genre réponse, puis en dessous toutes les sous-réponses à la réponse.

    j'ai remit ma nouvelle requête PHP à la suite de la précédente requête, je pense que c'est ca qui ne va pas...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $reponse = $bdd->query('SELECT * FROM rep_v2 WHERE id_rep_v2_2='. $id_rep2.'');
     
    			while ($donnees = $reponse->fetch())
    				{			   
    			echo htmlspecialchars($donnees['rep_v2']) . " : <strong>" . htmlspecialchars($donnees['pseudo_rep_v2']) . "</br>";

    Je vais essayer ce soir de la mettre dans une boucle {} et voir ce que ca donne...

    J'ai essayé de faire le plus simple possible...

    En te remerciant de ton aide.

  6. #6
    Membre Expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 59
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Billets dans le blog
    8
    Par défaut
    Du sql, je ne veux voir que du sql.
    Qu'y a t il dans la table jaime, et jaime1 et jaime2, et j'aimeall ?
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  7. #7
    Membre averti
    Homme Profil pro
    Responsable d'équipe
    Inscrit en
    Novembre 2015
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Responsable d'équipe
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2015
    Messages : 42
    Par défaut
    @Dendrite,

    J'ai bien lu ton post mais je n'ai pas eût le temps de m'y remettre.

    Je vais te mettre les tables SQL dès que j'aurais un moment dans la semaine.

    Encore merci!

  8. #8
    Membre averti
    Homme Profil pro
    Responsable d'équipe
    Inscrit en
    Novembre 2015
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Responsable d'équipe
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2015
    Messages : 42
    Par défaut
    @Dendrite,

    Je vais te mettre mes tables

    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
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    <?php
    if(!isset($_SESSION))
    {
    session_start();
    }
    ?>
    <!DOCTYPE>
    <html>
    	<head>
    		<meta name="viewport" content="width=device-width"/>
    		<title>Question du jour</title>
    		<link rel="stylesheet" href="style.css"/>
    	</head>	
     
    	<body>
     
    <header>
    <?php 
    include("en_tete.php");
    $heure;
    $rep20;
    ?>
    </header>
     
     
    <?php
    if($pseudo=="") 
    {
    header('Location: index.php');
    exit();
    }
    ?>
    <div>
    <p>Vos propositions d'amélioration : <a class="red" href="suggestion.php">ICI</a></p>
     
    <p>Vos suggestions de noms : <a class="red" href="nom.php">ICI</a></p>
    </div>
     
     
    		<section class="question_du_jour">
    		<h3>Question Sécurité du jour : </h3>
    		<?php
    	//se connecte à la base de données
    			try
    			{
    				$bdd = new PDO('mysql:host=localhost;dbname=acheminement','root','$$$')	;		
    			}
    			catch (Exception $e)
    			{
    				die('Erreur : '.$e->getMessage());			
    			}
    			$reponse = $bdd->query("SELECT * FROM question_du_jour WHERE date_quest = DATE( NOW()) ORDER BY id_quest DESC LIMIT 1");
    			?>
    			<p>
    			<?php
    			//affichage la derniere question du jour
    			while ($donnees=$reponse->fetch())
    			{
    				$id_quest=$donnees['id_quest'];
    			echo "<p><strong>".htmlspecialchars($donnees['quest']) . "</strong></p>";
    			}
    	$reponse->closeCursor();
    			?>
    <?php			
    			echo "<form action='reponse.php' method='post'>
    		<input type='hidden' name='pseudo' value=" . $pseudo . ">
    		<textarea class='element_en_tete' name='rep' rows='3' cols='42'>Réagissez ici.</textarea>
    		<input type='hidden' name='date_rep' value=" . date('Y-m-d') . ">
    		<input type='hidden' name='id_rep_question' value=" .$id_quest .">
    		<input type='submit' value='Valider' /></form>";
    		?>
    			</p>
    			</section>
     
    		<nav class="administrateur">
    		<?php
    		//session administrateur
    		if($pseudo=='$$$')
    		{
    		include("admin_real.php");		
    		}
    		?>
    		</nav>				
     
     
    		<section class="best_rep">
    		<p><strong>Toutes les réponses du jour : </strong></p>
    		<?php
    		//réponses des utilisateurs par ordre décroissant
    		$request="SELECT * FROM repjaimeall WHERE date_rep = DATE( NOW()) ORDER BY id_rep DESC";
     
    		$reponse=$bdd->query($request);   
     
     
    		while($donnees=$reponse->fetch())
    		{
    			$donnees['id_rep'];
    			$id_rep2=$donnees['id_rep'];
    			$donnees['rep'];
    			$rep2=htmlspecialchars($donnees['rep']);
    			$donnees['pseudo'];
    			$repondant=htmlspecialchars($donnees['pseudo']);
     
     
     
    		//les réponses affichages des résultats des pouces + formulaire vote
    		echo "<aside class='pouce1'>
    		<!--voter +1 jaime-->
    		<table><tr><form action='vote.php' method='post'>
    			 <input type='hidden' name='id_rep2' value='" . $id_rep2 . "'>
    			 <input type='hidden' name='repondantjaime' value='" . $pseudo . "'>
    			 <input type='hidden' name='jaime' value=1>
    			 <input type='hidden' name='date_jaime' value=" . date('Y-m-d') . ">
    			 <input class='pouce2' src='img/jaime_15.png' type=image value='submit'></form>".  $donnees['jamais2'];
    		//voter +1 jaime pas
    			echo "<form action='vote1.php' method='post'>
    			 <input type='hidden' name='id_rep3' value='" . $id_rep2 . "'>
    			 <input type='hidden' name='repondantjaimepas' value='" . $pseudo . "'>
    			 <input type='hidden' name='jaimepas' value=1>
    			 <input type='hidden' name='date_jaimepas' value=" . date('Y-m-d') . ">
    			 <input class='pouce3'src='img/jaime_pas_15.png' type=image value='submit'></form>" . $donnees['jamaispas2'] . "</tr></table></aside></div>";	
     
    	echo "<div class='suggestion_2'<p>" . $rep2 . " :<strong> ". htmlspecialchars($donnees['pseudo']) ."</strong></p>";		
     
    		}
    		$reponse->closeCursor();	
    			 ?>
    			</section>
     
    		</section>			
    		<?php
    		include("anterieur.php");	
    		?>
    	</body>
    	</html>

    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
    -- Structure de la table `question_du_jour`
    --
     
    CREATE TABLE `question_du_jour` (
      `id_quest` int(11) NOT NULL,
      `quest` text NOT NULL,
      `date_quest` date NOT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
     
     
    -- Structure de la table `rep`
    --
     
    CREATE TABLE `rep` (
      `id_rep` int(11) NOT NULL,
      `pseudo` varchar(40) NOT NULL,
      `rep` text NOT NULL,
      `date_rep` date NOT NULL,
      `id_rep_question` int(11) NOT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
     
     
    -- Doublure de structure pour la vue `repjaime`
    --
    CREATE TABLE `repjaime` (
    `id_rep` int(11)
    ,`pseudo` varchar(40)
    ,`rep` text
    ,`date_rep` date
    ,`id_jaime` int(11)
    ,`pseudo2` varchar(40)
    ,`jaime` int(11)
    ,`date_jaime` date
    ,`id_rep2` int(11)
    ,`jamais` decimal(32,0)
    ,`jamais2` bigint(21)
    );
     
     
    -- Doublure de structure pour la vue `repjaimeall`
    --
    CREATE TABLE `repjaimeall` (
    `id_rep` int(11)
    ,`pseudo` varchar(40)
    ,`rep` text
    ,`date_rep` date
    ,`id_jaime` int(11)
    ,`pseudo2` varchar(40)
    ,`jaime` int(11)
    ,`date_jaime` date
    ,`id_rep2` int(11)
    ,`jamais` decimal(32,0)
    ,`jamais2` bigint(21)
    ,`id_jaime_pas` int(11)
    ,`voteur_jaime_pas` varchar(40)
    ,`jaime_pas` int(11)
    ,`date_jaime_pas` date
    ,`id_rep3` int(11)
    ,`jamaispas` decimal(32,0)
    ,`jamaispas2` bigint(21)
    );

    Bon ça c'est mes codes en entiers qui fonctionnent.

    Le principe est simple, une question est posée et tous les utilisateurs peuvent répondre. Ensuite chacun peut mettre un j’aime ou un j’aime pas. Que un utilisateur clique 1 fois ou 15 fois, un seul j’aime sera affiché (d’où mes 2 vues).

    Je souhaite rajouter des sous formulaire pour chaque réponse et c'est la que ça bloque...

    Je le rajoute à la suite

    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
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    <?php
    if(!isset($_SESSION))
    {
    session_start();
    }
    ?>
    <!DOCTYPE>
    <html>
    	<head>
    		<meta name="viewport" content="width=device-width"/>
    		<title>Question du jour</title>
    		<link rel="stylesheet" href="style.css"/>
    	</head>	
     
    	<body>
     
    <header>
    <?php 
    include("en_tete.php");
    $heure;
    $rep20;
    ?>
    </header>
     
     
    <?php
    if($pseudo=="") 
    {
    header('Location: index.php');
    exit();
    }
    ?>
    <div>
    <p>Vos propositions d'amélioration : <a class="red" href="suggestion.php">ICI</a></p>
     
    <p>Vos suggestions de noms : <a class="red" href="nom.php">ICI</a></p>
    </div>
     
     
    		<section class="question_du_jour">
    		<h3>Question Sécurité du jour : </h3>
    		<?php
    	//se connecte à la base de données
    			try
    			{
    				$bdd = new PDO('mysql:host=localhost;dbname=acheminement','root','$$$')	;		
    			}
    			catch (Exception $e)
    			{
    				die('Erreur : '.$e->getMessage());			
    			}
    			$reponse = $bdd->query("SELECT * FROM question_du_jour WHERE date_quest = DATE( NOW()) ORDER BY id_quest DESC LIMIT 1");
    			?>
    			<p>
    			<?php
    			//affichage la derniere question du jour
    			while ($donnees=$reponse->fetch())
    			{
    				$id_quest=$donnees['id_quest'];
    			echo "<p><strong>".htmlspecialchars($donnees['quest']) . "</strong></p>";
    			}
    	$reponse->closeCursor();
    			?>
    <?php			
    			echo "<form action='reponse.php' method='post'>
    		<input type='hidden' name='pseudo' value=" . $pseudo . ">
    		<textarea class='element_en_tete' name='rep' rows='3' cols='42'>Réagissez ici.</textarea>
    		<input type='hidden' name='date_rep' value=" . date('Y-m-d') . ">
    		<input type='hidden' name='id_rep_question' value=" .$id_quest .">
    		<input type='submit' value='Valider' /></form>";
    		?>
    			</p>
    			</section>
     
    		<nav class="administrateur">
    		<?php
    		//session administrateur
    		if($pseudo=='$$$')
    		{
    		include("admin_real.php");		
    		}
    		?>
    		</nav>				
     
     
    		<section class="best_rep">
    		<p><strong>Toutes les réponses du jour : </strong></p>
    		<?php
    		//réponses des utilisateurs par ordre décroissant
    		$request="SELECT * FROM repjaimeall WHERE date_rep = DATE( NOW()) ORDER BY id_rep DESC";
     
    		$reponse=$bdd->query($request);   
     
     
    		while($donnees=$reponse->fetch())
    		{
    			$donnees['id_rep'];
    			$id_rep2=$donnees['id_rep'];
    			$donnees['rep'];
    			$rep2=htmlspecialchars($donnees['rep']);
    			$donnees['pseudo'];
    			$repondant=htmlspecialchars($donnees['pseudo']);
     
     
     
    		//les réponses affichages des résultats des pouces + formulaire vote
    		echo "<aside class='pouce1'>
    		<!--voter +1 jaime-->
    		<table><tr><form action='vote.php' method='post'>
    			 <input type='hidden' name='id_rep2' value='" . $id_rep2 . "'>
    			 <input type='hidden' name='repondantjaime' value='" . $pseudo . "'>
    			 <input type='hidden' name='jaime' value=1>
    			 <input type='hidden' name='date_jaime' value=" . date('Y-m-d') . ">
    			 <input class='pouce2' src='img/jaime_15.png' type=image value='submit'></form>".  $donnees['jamais2'];
    		//voter +1 jaime pas
    			echo "<form action='vote1.php' method='post'>
    			 <input type='hidden' name='id_rep3' value='" . $id_rep2 . "'>
    			 <input type='hidden' name='repondantjaimepas' value='" . $pseudo . "'>
    			 <input type='hidden' name='jaimepas' value=1>
    			 <input type='hidden' name='date_jaimepas' value=" . date('Y-m-d') . ">
    			 <input class='pouce3'src='img/jaime_pas_15.png' type=image value='submit'></form>" . $donnees['jamaispas2'] . "</tr></table></aside></div>";	
     
    	echo "<div class='suggestion_2'<p>" . $rep2 . " :<strong> ". htmlspecialchars($donnees['pseudo']) ."</strong></p>";		
     
     
    			echo "<form action='reponse2.php' method='post'>
    		<input type='hidden' name='pseudo_rep_v2' value="?><?php echo $pseudo ?><?php echo ">
    		<textarea class='element_en_tete' name='rep_v2' rows='2' cols='38'>Réagissez ici.</textarea>
    		<input type='hidden' name='date_rep_v2' value=" ?><?php echo date('Y-m-d') ?><?php echo ">
    		<input type='hidden' name='id_rep_v2_2' value=" ?><?php echo $id_rep2 ?><?php echo ">
    		<input type='submit' value='Valider' />
    		</form></aside></div>";		 	
     
    $reponse = $bdd->query('SELECT * FROM rep_v2 WHERE id_rep_v2_2='. $id_rep2.'');
     
    			while ($donnees = $reponse->fetch())
    				{			   
    			echo htmlspecialchars($donnees['rep_v2']) . " : <strong>" . htmlspecialchars($donnees['pseudo_rep_v2']) . "</br>";		
    			}
     
     
    		}
    		$reponse->closeCursor();	
    			 ?>
    			</section>
     
    		</section>			
    		<?php
    		include("anterieur.php");	
    		?>
    	</body>
    	</html>
    Les requêtes fonctionnent, les sous commentaires s'affichent à la suite du dernier commentaire associé mais seul le dernier commentaire reste affiché.

    J'espère t'avoir mieux renseigné...

    En tout cas merci de toute l'aide que vous pourrez m'apporter.

  9. #9
    Membre Expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 59
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Billets dans le blog
    8
    Par défaut
    Donc je résume pour les humains
    `question_du_jour` () `id_quest` ,`quest` ,`date_quest`)

    `rep` ( `id_rep`,`pseudo`,`rep`,`date_rep`,`id_rep_question`)

    `repjaime` (`id_rep`,`pseudo`,`rep`,`date_rep`,`id_jaime`,`pseudo2`,`jaime`,`date_jaime`,`id_rep2`,`jamais`,`jamais2`)

    `repjaimeall` (`id_rep`,`pseudo` ,`rep`,`date_rep` ,`id_jaime`,`pseudo2`,`jaime`,`date_jaime`,`id_rep2`,`jamais`,`jamais2`,`id_jaime_pas`,`voteur_jaime_pas`,`jaime_pas`,`date_jaime_pas` date,`id_rep3`,`jamaispas`,`jamaispas2`)

    tu trouves ça logique et bien rangé toi ? ton SQL ?

    Moi j'aurais fait

    TES TABLES

    client(c_id, c_pseudo,c_date)
    question(q_id,q_lib,q_date)
    reponse(r_id,q_id,c_id,r_lib,r_date)
    like (l_id,r_id,r_choix,r_date)

    Et avec ça, tu as tout, absolument tout...

    La requête qui constitue ta vue maintenant (tu feras tes group by sur la vue plus tard)

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    create or replace view v_questions as
     
    select q.q_id,q.q_lib,q.q_date,r.r_id,r.r_lib,r.r_date,c.c_id,c.c_pseudo,c.c_date,l.l_id,l.r_choix,l.r_date
     
    from question q
    /*ici on s'interesse aux réponses des clients*/
    left join reponse r 
       inner join client c on r.c_id=c.c_id
    on r.q_id=q.q_id
    /*ici on s'interesse aux votes sur les réponses des clients - ce qui n'a rien à voir*/
    left join reponse vote on vote.q_id=q.q_id
    left join like l on l.r_id=vote.r_id
    Bon, là, c'est un premier jet, mais ton TP me plait bien, je vais jouer avec ça en base de données, et je reviens avec un truc qui marche...
    Dans mon jargon, lib=libelle, toujours mettre en premier le préfixe de la table, pour plus de lisibilité, et n'oublie pas de poser les clés d'unicité (vitales) et les clés étrangères... Si tu utilises intelligemment toute la puissance de ton SGBD (relation entre tes tables), tu ne t'en occupes plus dans ton PHP... Laisse SQL gérer la difficulté, il est fait pour ça.
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  10. #10
    Membre Expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 59
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Billets dans le blog
    8
    Par défaut
    Coucou

    Quelques exemples valent mieux que plein de blabla...

    J'avais à peu près bon...

    Voici le schéma relationnel entre tes tables, si j'ai bien tout compris

    Nom : sondage.jpg
Affichages : 1624
Taille : 103,7 Ko
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  11. #11
    Membre Expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 59
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Billets dans le blog
    8
    Par défaut
    Et voici le SQL de ta vue v_reponse

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    create or replace view v_reponse as
     
    select q.q_id,q.q_lib,q.q_date,r.r_id,r.r_lib,r.r_date,c.c_id,c.c_pseudo,c.c_date
     
    from question q
     
    inner join reponse r on r.q_id=q.q_id
    inner join client c on r.c_id=c.c_id

    puis le sql de ta vue v_vote, qui s'appuie bien sûr sur la v_reponse

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    create or replace view v_vote as
     
    select r.q_id,r.q_lib,r.q_date,r.r_lib,r.r_date,r.c_pseudo as r_pseudo,if(l.l_choix=1,"LIKE","DISLIKE") as l_vote,c.c_pseudo as l_pseudo,l.l_date
     
     
    from like_or_not l
    inner join client c on l.c_id=c.c_id
    inner join v_reponse r on l.r_id=r.r_id
     
    order by l.c_id,l_vote

    Et enfin, pour plus de compréhension, un petit tableau te montre ici comment les gens ont voté (v_vote)... On imagine qu'Abdel est un mec sympa qui a voté Like pour tout le monde, que Barbara est une fille mesquine qui a voté Like pour elle, et Dislike pour tous les autres, et que les 2 derniers ont... voté like pour eux et rien pour les autres...
    Nom : tableau.jpg
Affichages : 1555
Taille : 121,8 Ko

    Bon, une dernière chose, bien réfléchir à tes clés d'unicité...
    Si tu as des questions... ton problème, ça n'est pas le group by, c'est toute la conception de ta base, me semble-t-il...
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  12. #12
    Membre averti
    Homme Profil pro
    Responsable d'équipe
    Inscrit en
    Novembre 2015
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Responsable d'équipe
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2015
    Messages : 42
    Par défaut
    Bonjour,

    @Dendrite,

    Ton analyse est pertinente. C'est vrai que ma base n'est pas super bien conçu et je n'aurais pas pensé que c'est ça qui aurait posé problème.

    A la base j'ai juste créer une seule relation qui est q_id de question (clef primaire) et q_id de réponse (clef étrange).

    Le reste s'est rajouter et les relations ne se font que via les jointure.

    Cela ma permit de garder les même tables like_or_not car je les utilise également 2 autres thématiques.

    Je devais faire un truc rapidement et grâce à ça j'ai pu faire une multitude de copier collé.

    Si j'ai plus de temps ce dimanche, je remettrais bien tout a plat, et je vais créer des tables bien dissociés, dans mon cas j'ai question du jour, suggestion d'amélioration et proposition de nom.

    Je suis un peu bousculé ce samedi et je n'ai pas pris le temps de tout bien lire.

    Je te tiendrais au courant demain.

    Encore un grand merci!

  13. #13
    Membre Expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 59
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Billets dans le blog
    8
    Par défaut
    Mais de rien, ça m'a bien amusée.
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  14. #14
    Membre averti
    Homme Profil pro
    Responsable d'équipe
    Inscrit en
    Novembre 2015
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Responsable d'équipe
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2015
    Messages : 42
    Par défaut
    Bonjour,

    J'ai compris ce que tu as expliqué mais je bloque un peu plus loin...

    J'ai refait mes tables et mis des vrais relations entre toutes les tables (clefs primaires et étrangères).

    J'affiche a coté de la réponse (r_lib) un formulaire renvoyant la possibilité de voter (un like ou dislike), et à coté est affiché le nombre total des votes (avec un COUNT + GROUP BY pour la table like).

    Après je souhaite remettre un autre formulaire renvoyant vers une autre table ou un espèce de chat s'affiche à la suite de la réponse (r_lib) et du résultat des vote de like.

    C'est ça qui me bloque.

    Je souhaite faire un truc qui ressemble à un mélange des 2 images (les chiffres à coté des pouces verts et rouges sont le résultat du COUNT GROUP BY et seraient affiché à coté de la réponse...) :

    Nom : Sans titre2.png
Affichages : 1478
Taille : 34,4 Ko

    Nom : Sans titre3.png
Affichages : 1439
Taille : 18,7 Ko

    Comment ferais-tu avec tes tables?

    Un grand merci si tu pourrais m'aider.
    Images attachées Images attachées  

  15. #15
    Membre averti
    Homme Profil pro
    Responsable d'équipe
    Inscrit en
    Novembre 2015
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Responsable d'équipe
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2015
    Messages : 42
    Par défaut
    J'ai identifié mon problème mais je ne trouve pas la solution.....

    Ça ne vient ni de la conception de la base, ni du GROUP BY,

    Le problème c'est que je ne sais pas comment afficher plusieurs commentaires à la suite d'un commentaire, faisant lui aussi parti d'un groupe de plusieurs commentaire d'une réponse...

    L'image précédente illustre bien ce que je souhaite faire.

    Ça à l'air simple comme ça mais je ne vois pas trop quel est la logique.

    Ma page aime pas quand il y a une succession de plus de 2 requêtes et c'est la que ça coince...

    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
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    <?php
    if(!isset($_SESSION))
    {
    session_start();
    }
    ?>
    <!DOCTYPE>
    <html>
    	<head>
    		<meta name="viewport" content="width=device-width"/>
    		<title>Question du jour</title>
    		<link rel="stylesheet" href="style.css"/>
    	</head>	
     
    	<body>
     
    <header>
    <?php 
    include("en_tete.php");
    $heure;
    $rep20;
    ?>
    </header>
     
     
    <?php
    if($pseudo=="") 
    {
    header('Location: index.php');
    exit();
    }
    ?>
    <div>
    <p>Vos propositions d'amélioration : <a class="red" href="suggestion.php">ICI</a></p>
     
    <p>Vos suggestions de noms : <a class="red" href="nom.php">ICI</a></p>
    </div>
     
    		<nav class="administrateur">
    		<?php
    		//session administrateur
    		if($pseudo=='$$$')
    		{
    		include("admin_real.php");		
    		}
    		?>
    		</nav>				
     
     
    		<section><article class="question_du_jour">
    		<h3>Question Sécurité du jour : </h3>
    		<?php
    	//se connecte à la base de données
    			try
    			{
    				$bdd = new PDO('mysql:host=localhost;dbname=acheminement','root','$$$')	;		
    			}
    			catch (Exception $e)
    			{
    				die('Erreur : '.$e->getMessage());			
    			}
    			$reponse = $bdd->query("SELECT * FROM question_du_jour WHERE date_quest = DATE( NOW()) ORDER BY id_quest DESC LIMIT 1");
    			?>
    			<p>
    			<?php
    			//affichage la derniere question du jour
    			while ($donnees=$reponse->fetch())
    			{
     
    				$id_quest=$donnees['id_quest'];
    			echo "<p><strong>".htmlspecialchars($donnees['quest']) . "</strong></p>";
     
    {
    			if($id_quest!="") {
    			echo "<form action='reponse.php' method='post'>
    		<input type='hidden' name='pseudo' value=" . $pseudo . ">
    		<textarea class='element_en_tete' name='rep' rows='3' cols='42'>Réagissez ici.</textarea>
    		<input type='hidden' name='date_rep' value=" . date('Y-m-d') . ">
    		<input type='hidden' name='id_rep_question' value=" .$id_quest .">
    		<input type='submit' value='Valider' /></form>";}
    		?>
    			</p></article>
     
     
     
    		<article class="best_rep">
    		<p><strong>Toutes les réponses du jour : </strong></p>
    		<?php
     
     
    		$request="SELECT * FROM rep WHERE id_rep_question=". $id_quest."  ORDER BY id_rep ASC";
     
    		$reponse=$bdd->query($request);   
     
     
    		while($donnees=$reponse->fetch())
    		{
    			$donnees['id_rep'];
    			$id_rep2=$donnees['id_rep'];
    			$donnees['rep'];
    			$rep2=htmlspecialchars($donnees['rep']);
    			$donnees['pseudo'];
    			$repondant=htmlspecialchars($donnees['pseudo']);
     
    			echo "<article class='suggestion_2'<p>" . $rep2 . " :<strong> ". htmlspecialchars($donnees['pseudo']) ."</strong></p></article>";	
     
    	{		
    if($id_rep2!="") {
    			echo "<article><form action='reponse2.php' method='post'>
    		<input type='hidden' name='pseudo_rep_v2' value=" .  $pseudo . ">
    		<textarea class='element_en_tete' name='rep_v2' rows='2' cols='38'>Réagissez ici.</textarea>
    		<input type='hidden' name='date_rep_v2' value=" . date('Y-m-d') . ">
    		<input type='hidden' name='id_rep_v2_2' value=" . $id_rep2 . ">
    		<input type='submit' value='Valider' />
    		</form>";		} 	
     
     
    $reponse = $bdd->query('SELECT * FROM rep2_inner WHERE id_rep_v2_2='. $id_rep2.'');
     
    			while ($donnees = $reponse->fetch())
    				{			   
    			echo htmlspecialchars($donnees['rep_v2']) . " : <strong>" . htmlspecialchars($donnees['pseudo_rep_v2']) . "</br></article>";			
     
    }
    		}}}}
    			 ?>
     
     
    		</section>			
    		<?php
    		include("anterieur.php");	
    		?>
    	</body>
    	</html>
    Voila ma dernière page, ou j'ai essayé tant bien que mal de mettre des boucles....

    Bon un grand merci pour toute l'aide que je pourrais avoir.

  16. #16
    Membre averti
    Homme Profil pro
    Responsable d'équipe
    Inscrit en
    Novembre 2015
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Responsable d'équipe
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2015
    Messages : 42
    Par défaut
    Pour schématiser mon soucis :

    Requête 1 => affichage d'une question 1 (unique)

    Requête 2 ==> affichage des réponses 2 à la question 1

    Requête 3 ==> affichage des commentaires 3 des réponses 2

    Puis fin de boucle --

    PH affiche la requête 1, puis la dernière ligne de la requête 2 et enfin toutes les lignes de la requête 3 puis l'instruction est terminé.

    Je souhaite qu'il y ait une boucle qui après la fin de l'instruction de la requête 3 retournerai à la requête 2 et ainsi de suite...

    J'ai regardé du coté des while, for, break et continue et les ai essayé à tour de rôle mais toujours rien... le résultat ne fonctionne pas...

    La je sèche...

  17. #17
    Membre Expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 59
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Billets dans le blog
    8
    Par défaut
    Peu importe le type de boucle, elles se valent toutes...
    Là, la difficulté, c'est que tu as 3 boucles imbriquées.
    Si tu n'indentes pas parfaitement ton code et que tu ne mets pas des noms très lisibles à tes variables, c'est l'horreur.

    Code PHP : 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
     
    try{
    	//la connexion
    	$encodage=array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES "UTF8"');
    	$dbh = new PDO('mysql:host=myhost;dbname=mydb', 'login', 'password', $encodage); 
     
     
    	$sql='SELECT q_id,q_lib from question
    	WHERE q_date=curdate();';
    	$stmt = $dbh->prepare($sql);
    	$stmt->execute();
    	$row=$stmt->fetch(PDO::FETCH_ASSOC);
    	if(sizeof($row)>0){
    		echo '<pre>';
    		print_r($row);
    		echo '</pre>';
    		$reponses=array();
    		$sql='SELECT r_id,r_lib,r_pseudo from reponse
    		WHERE q_id=?;';
    		$stmt = $dbh->prepare($sql);
    		$stmt->execute(array($row['q_id']));
    		foreach($reponse=$stmt->fetch(PDO::FETCH_ASSOC)){
    			$reponses[]=$reponse;
    		}
    		if(sizeof($reponses)>0){
    			echo '<pre>';
    			print_r($reponses);
    			echo '</pre>';
    			$commentaires=array();
    			foreach($reponses as $reponse){
    				$sql='SELECT c_id,c_lib,c_pseudo from commentaire
    				WHERE r_id=?;';
    				$stmt = $dbh->prepare($sql);
    				$stmt->execute(array($reponse['r_id']));
    				foreach($commentaire=$stmt->fetch(PDO::FETCH_ASSOC)){
    					$commentaires[]=$commentaire;
    				}
    				if(sizeof($commentaires)>0){
    					echo '<pre>';
    					print_r($commentaires);
    					echo '</pre>';
    				}
    			}
    		}
    	}
    	unset($dbh);
    }
    catch( PDOException $Exception ) {
    	echo $Exception->getMessage();
    }
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  18. #18
    Membre averti
    Homme Profil pro
    Responsable d'équipe
    Inscrit en
    Novembre 2015
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Responsable d'équipe
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2015
    Messages : 42
    Par défaut
    Je vais faire des tests avec 3 requêtes simple et voir comment s'affichent les résultats.

    Bon au moins j'ai pu améliorer la conception du site avec des vrais relations.

    Je ne pense pas pouvoir beaucoup coder cette semaine. Je te tiendrais au courant.

    En tout cas un grand merci pour le temps et l'aide que tu m'as accordé.



    ++++

  19. #19
    Membre averti
    Homme Profil pro
    Responsable d'équipe
    Inscrit en
    Novembre 2015
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Responsable d'équipe
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2015
    Messages : 42
    Par défaut
    Mon probleme de vote est résolue je vais clore cette discussion.

    Un grand merci!

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

Discussions similaires

  1. [MySQL] Récupérer le nom de tous les champs d'une table
    Par cruntett dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 09/09/2008, 15h18
  2. [MySQL] Récupérer tous les ID d'une table
    Par Jiraiya42 dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 30/04/2006, 20h12
  3. afficher tous les champs d'une table
    Par julio84 dans le forum ASP
    Réponses: 8
    Dernier message: 19/01/2005, 10h31
  4. Retrouver tous les champs d'une table
    Par tripper.dim dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 11/07/2004, 20h40
  5. Afficher tous les champs d'une table avec dbexpress et MySQL
    Par LHT dans le forum Bases de données
    Réponses: 2
    Dernier message: 25/06/2004, 17h11

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