pb: affichage des message de mon forum

Avatar du membre
ViPHP
ViPHP | 3008 Messages

26 déc. 2006, 19:53

Non tu n'as pas tout compris :)

Alors l'ID que tu passes en URL permet d'identifier un sujet.

Quand tu fais la requête :
SELECT champ1,champ2...etc FROM forum_rep WHERE id=".$_GET['id']." ORDER BY heure ASC
Tu affiches tous les champs que tu auras choisis mais juste les données qui correspondent à l'ID que tu donnes.

Par exemple si tu passes l'ID 1, tu auras tous les enregistrements de l'ID 1 mais pas le reste. C'est exactement ce que tu désires faire.

DuK3
Invité n'ayant pas de compte PHPfrance

26 déc. 2006, 19:59

Ok o fait c'est pas forum_rep c'est forum_suj car il faut mettre le message du sujet ainsi que son titre etc...
Donc il fodra que je face un $query2 pour forum_rep??

DuK3
Invité n'ayant pas de compte PHPfrance

26 déc. 2006, 20:00

nan jai rien dit pour le query2 lol c'est une connerie

DuK3
Invité n'ayant pas de compte PHPfrance

26 déc. 2006, 20:01

Comment sa se fait que

Code : Tout sélectionner

-Titre : <?php echo $resultatSujets['titre']; ?>
n'affiche rien?

Avatar du membre
ViPHP
ViPHP | 3008 Messages

26 déc. 2006, 20:03

C'est que ta requête ne retourne rien. Testes la sous phpMyAdmin pour voir.

Sinon as-tu fait comme prévu 2 tables différentes ?

DuK3
Invité n'ayant pas de compte PHPfrance

26 déc. 2006, 20:12

J'ai fait sous phpmyadmin:

Code : Tout sélectionner

SELECT * FROM `forum_suj` WHERE id =1
sa marche. Mais par contre ave le ORDER BY sa marcher pas...
Mais pourtant sa mrche toujours pas sur mon forum... :(
Oui j'ai 2 tables :
forum_suj qui comporte:
id
titre
pseudo
date
message
email
heure
et forum_rep:
id
sujet (qui renvoi a l'ID du sujet normalement lol)
pseudo
date
message

DuK3
Invité n'ayant pas de compte PHPfrance

26 déc. 2006, 20:19

Ouuuff c'est bon j'ai trouvé 8) deja premierement j'ai oublier de femer mysql et puis je voi qu'il faut que je mette une boule pour afficher le resultat

Avatar du membre
ViPHP
ViPHP | 3008 Messages

26 déc. 2006, 20:24

Alors alors :)

Pour quoi as-tu besoin de faire la clause WHERE dans ton forum_suj ?

On va procéder étape par étape :
1. Ta table forum_suj te permet d'afficher tous les sujets, donc pas utile d'avoir une clause WHERE ici.

2. Ta table forum_rep contient les réponses de chaque sujet. C'est donc là que tu dois utiliser la clause WHERE pour bien identifier les réponses de chaque sujets.

Ici c'est le champ sujet (INT) qui permet de faire une relation entre le sujet et la réponse. Donc la clause WHERE doit se baser dessus, c'est à dire que tu choisir les réponses où le sujet (INT) correspond à l'ID du sujet.

Tu vois mieux ?

DuK3
Invité n'ayant pas de compte PHPfrance

26 déc. 2006, 20:35

Ben on est bien obliger de mettre uen condition WHERE pour le forum_suj car on a besoin de l'id du sujet lorsque l'on clic dessus afin de l'afficher... :?

Avatar du membre
ViPHP
ViPHP | 3008 Messages

26 déc. 2006, 20:39

Non pas besoin. Pour cela tu fais une tite jointure de tes deux tables :
:arrow: http://www.phpdebutant.org/article117.php

DuK3
Invité n'ayant pas de compte PHPfrance

26 déc. 2006, 20:45

Et le pire c'est que je vois sa en cours pour la 2eme année lol.... Bon jvé essayer de me débrouiller.
Merci

DuK3
Invité n'ayant pas de compte PHPfrance

27 déc. 2006, 12:07

Maintenant je désire pour un sujet afficher sa reponse doc on fait une jointure entre les tables forum_suj et forum_rep :

Code : Tout sélectionner

$query = "SELECT * FROM forum_rep, forum_suj WHERE forum_rep.sujet = forum_suj.id";
J'ai tester le code sous phpmyadmin sa marche je recupere bien les 2 reponse qui s'associr par exemple au sujet 1 (id=1 et sujet dans forum_rep =1) mais rien ne s'affiche car les 2 reponse qui doivent aller dans le sujet 1 vont dans tous les sujet:

Code : Tout sélectionner

$db = mysql_connect($mysql_host,$mysql_user,$mysql_password) or die ("erreur de connexion"); mysql_select_db($mysql_base,$db) or die ("erreur de connexion base"); $query = "SELECT * FROM forum_suj WHERE id=".$_GET['id'].""; $resultatSujets = mysql_query($query); $query = "SELECT * FROM forum_rep, forum_suj WHERE forum_rep.sujet = forum_suj.id"; $resultatsReponses = mysql_query($query); mysql_close(); while ($donneesSujet = mysql_fetch_array($resultatSujets)) { ?> <strong>-Titre : <a href = "index.php?option=com_lecture&id=<?php echo $donneesSujet['id']; ?>"><?php echo $donneesSujet['titre']; ?></a> par <b><a href="mailto:<?php echo $donneesSujet['email'];?>"><?php echo $donneesSujet['pseudo']; ?></a> le <? echo $donneesSujet['date']; ?> à <? echo $donneesSujet['heure']; ?></p><br>-Message :<br> <div style="font-size:10px"><?php echo $donneesSujet['message']; ?></div><hr> <? } while ($donneesReponses = mysql_fetch_array($resultatsReponses)) { if ($donneesReponses['sujet'] == $donneesSujet['id'] ){ ?> Reponse de <a href="mailto:<?php echo $donneesReponses['email'];?>"><?php echo $donneesReponses['pseudo_rep']; ?></a> le <? echo $donneesReponses['date']; ?> à <? echo $donneesReponses['heure']; ?><br /> -Message :<br /> <div style="font-size:10px"><? echo $donneesReponses['message_rep']; ?></div><hr /> <? } } include('http://duk3killer.club.fr/components/com_forum/reponse.php'); ?>

Eléphanteau du PHP | 20 Messages

27 déc. 2006, 12:28

En fait sa afficher tous les sujet avant que je mette le

Code : Tout sélectionner

if ($donneesReponses['sujet'] == $donneesSujet['id'] ){
car en faisant sa jvouler dire que si $donneesReponse du sujet ne correspond pas a l'id du sujet alors on n'affiche rien mais sa marche pas...

Avatar du membre
ViPHP
ViPHP | 3008 Messages

27 déc. 2006, 12:55

Tu as fait plus compliqué pour rien. Tu peux faire tout ça en une requête et ainsi supprimer ta condition.

Tu as :
$query = "SELECT * FROM forum_suj WHERE id=".$_GET['id']."";
et
$query = "SELECT * FROM forum_rep, forum_suj WHERE forum_rep.sujet = forum_suj.id";
A ton avis comment dois-tu procéder pour n'en faire qu'une requête ?

Eléphanteau du PHP | 20 Messages

27 déc. 2006, 13:15

Code : Tout sélectionner

$query = "SELECT * FROM forum_rep, forum_suj WHERE forum_rep.sujet = forum_suj.".$_GET['id']."
??? lol je c'est pas du tout sa me paraitrai logik koi
Modifié en dernier par DuK3 le 27 déc. 2006, 13:18, modifié 1 fois.