Précédent   Forum des professionnels en informatique > PHP > Langage > Syntaxe
Syntaxe Forum d'entraide sur la syntaxe de PHP et la POO. Avant de poster -> FAQ syntaxe, Cours d'initiation et cours de POO
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 01/12/2010, 00h06   #1
Débutant
 
Inscription : mai 2005
Messages : 1 957
Détails du profil
Informations personnelles :
Localisation : Suisse

Informations forums :
Inscription : mai 2005
Messages : 1 957
Points : 615
Points : 615
Bonjour,

J'espere etre dans le bon forum car il y a aussi du MySQL, dans ma question.

Je veux extraire toutes les réponses d'un utilisateur a une annonce.
Je souhaiterais que le titre de l'annonce soit affichée une fois et que toutes les réponses soient affichés en dessous.

Mes réponses sont stockées dans une table et mes annonces dans une autre.

Donc je parcours ma table de réponse et j'affiche toues les réponses.

Ce code fonctionne mais l'annonce est affichée pour chaque réponse
Code PHP :
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
 
//je parcours mes réponse
// OU LA REPONSE APPARTIENT A l?UTILISATEUR AUTHENTIFIE
$sql_replies = "
SELECT * FROM tb_replies
INNER JOIN tb_annonces ON tb_replies.tb_annonces_id_annonce=tb_annonces.id_annonce
 
WHERE tb_replies.tb_users_id_users LIKE '".$_SESSION['user_id']."' AND tb_replies.fd_active LIKE 1 AND tb_annonces.fd_active LIKE 1";
$query_replies = mysql_query($sql_replies)or die(mysql_error());
 
$nb_replies = mysql_num_rows($query_replies);
// S IL Y A DES REPONSE, JE CONTINUE
if($nb_replies > 0){
// ET JE "BOUCLE"
while($data_replies = mysql_fetch_assoc($query_replies)){ 
// J AFFICHE ICI LE TITRE DE L ANNONCE			
// MAIS JE SOUHAITE QU IL SOIT AFFICHE UNE FOIS S IL Y A PLUSIEURS REPONSES
// JE SUIS PEUT ETRE TROP FATIGUE MAIS JE N'ARRIVE PAS TROUVER COMME FAIRE POUR QUE CA S AFFICHE QU UNE FOIS. J AI POURTANT REGARDER TOUTES LE FONCTION DIFFERENTE DES array
//http://www.php.net/manual/fr/function.array-keys.php
echo '<a href="index.php?annonce='.$data_replies['tb_annonces_id_annonce'].'" class="pColor">'.$data_replies['fd_title'].'</a> ';
 
// ICI J AFFICHE LES REPONSES
echo '<div class="annonce_message bg-blanc">';
							if ($data_replies['tb_users_id_users'] == $_SESSION['user_id']){
								echo '<span style="float:right; margin-right:5px;">';
								echo '<a href="'.$root.'iframe/delete_reply.iframe.php?id='.$data_replies['id_reply'].'" class="delete_reply" title="'.$langue->msg_add_replies_delete_reply.'" alt="'.$langue->msg_add_replies_delete_reply.'"><img src="'.$root.'img/icon_delete.gif" /></a>';
								echo '</span>';
							}
							echo stripslashes($data_replies['fd_reply']);
 
 
							echo '</div>';
						}
 
					}else{
						echo '<div class="annonce_message bg-blanc"><p>';
						echo $langue->msg_add_replies_reply_no_replies;
						echo '</p></div>';
					}
 
				?>

J'ai aussi essayé avec DISTINTC et GROUP BY dans ma requetes MySQL

je post ce message ici, car je pense pouvoir résoudre mon probleme avec un fonction array
http://www.php.net/manual/fr/function.array-keys.php
non?

Milles mercis pour vos idees

En fait, ne devrais pas plus me pencher vers
LEFT JOIN ou RIGHT JOIN?

Es-ce qu'un modérateur pourrait déplacer ce message dans :
http://www.developpez.net/forums/f62...gbd/php-mysql/

J'ai pourtant essayé RIGHT JOIN, mais sans succes
__________________
Il ne suffit pas de tout savoir. Vouloir et persévérer, c'est déjà presque tout!
pierrot10 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2010, 00h17   #2
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
Il serait plus logique de requeter d'un côté le titre et d'une autres les éléments multiples car la tu vas recuperes x fois le titre pour ne l'utiliser qu'une fois.

Sinon un truc tout simple :

Code :
1
2
3
4
5
6
 
$affiche_titre = TRUE;
while($data_replies = mysql_fetch_assoc($query_replies)){
    if ($affiche_titre) { echo $data_replies['titre']; $affiche_titre = FALSE; }
    ......
}
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2010, 00h25   #3
Débutant
 
Inscription : mai 2005
Messages : 1 957
Détails du profil
Informations personnelles :
Localisation : Suisse

Informations forums :
Inscription : mai 2005
Messages : 1 957
Points : 615
Points : 615
Salut Sabotage.

Merci pour ta réponse. Oui je sais que sur ce coup, la logique me manque :o)

Dans ta solution, je ne pense pas que ca va jouer, car il ne vas plus m'afficher les tritres des annonces suivantes, non?

Pourrais-tu déplacer mon post? dans
http://www.developpez.net/forums/f62...gbd/php-mysql/
Je n'aurais pas du le mettre là.

Milles mercis
__________________
Il ne suffit pas de tout savoir. Vouloir et persévérer, c'est déjà presque tout!
pierrot10 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2010, 00h32   #4
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
Tu ne parlais d'afficher qu'une annonce mais ce ne sont pas les solutions qui manquent :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$sql_replies = "
SELECT * FROM tb_replies
INNER JOIN tb_annonces ON tb_replies.tb_annonces_id_annonce=tb_annonces.id_annonce
WHERE tb_replies.tb_users_id_users LIKE '".$_SESSION['user_id']."' AND tb_replies.fd_active LIKE 1 AND tb_annonces.fd_active LIKE 1
ORDER BY fd_title";
$query_replies = mysql_query($sql_replies)or die(mysql_error());
 
$current_title = "";
while($data_replies = mysql_fetch_assoc($query_replies)){
    if ($data_replies['fd_title'] != $current_title) {
           echo '<h1>' . $data_replies['fd_title'] . '</h1>';
           $current_title = $data_replies['fd_title'];
    }
....
}
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2010, 00h47   #5
Débutant
 
Inscription : mai 2005
Messages : 1 957
Détails du profil
Informations personnelles :
Localisation : Suisse

Informations forums :
Inscription : mai 2005
Messages : 1 957
Points : 615
Points : 615
Oui excuse moi si j'ai pas été assez précis.

Arch, je crois que je vais aller me coucher. Ca marche et comme je vois comme tu l'as fait, ca me semble tellement simple.

Tout grand merci pour "tes lumières" et bonne nuit!!
__________________
Il ne suffit pas de tout savoir. Vouloir et persévérer, c'est déjà presque tout!
pierrot10 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h43.


 
 
 
 
Partenaires

Hébergement Web