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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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 : 1490
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 : 1490
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

+ 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