pb: affichage des message de mon forum

Avatar du membre
ViPHP
ViPHP | 3008 Messages

27 déc. 2006, 13:18

Regardes bien? Tu as 2 clauses WHERE. Quel mot permet d'inclure plusieurs conditions dans une requête ?

Eléphanteau du PHP | 20 Messages

27 déc. 2006, 13:22

Code : Tout sélectionner

$query = "SELECT * FROM forum_rep, forum_suj WHERE forum_rep.sujet = forum_suj.id AND id=".$_GET['id']."

Avatar du membre
ViPHP
ViPHP | 3008 Messages

27 déc. 2006, 13:27

Si je ne me trompe pas tu dois dire que l'ID appartient à la table forum_suj, donc mettre : forum_suj.id=".$_GET['id'].

Donc en gros :
$query = "SELECT * FROM forum_rep, forum_suj WHERE forum_rep.sujet = forum_suj.id AND forum_suj.id=".$_GET['id'];
Testes la requête sous phpMyAdmin.

Eléphanteau du PHP | 20 Messages

27 déc. 2006, 13:31

Ouai sa marche sous phpmyadmin!! ducou sa donne :

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_rep, forum_suj WHERE forum_rep.sujet = forum_suj.id AND forum_suj.id=".$_GET['id']; $resultatSujets = 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)) { ?> 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'); ?>
Je fais comment pour $donneesReponse ??? Car la chui pomer lol
Modifié en dernier par DuK3 le 27 déc. 2006, 13:35, modifié 1 fois.

Avatar du membre
ViPHP
ViPHP | 3008 Messages

27 déc. 2006, 13:34

Il ne te reste plus qu'à continuer ;)

Cette requête te retourne maintenant bien ce que tu désires, tu vois donc que ta condition n'est plus utile ;)

Eléphanteau du PHP | 20 Messages

27 déc. 2006, 14:00

C bon j'ai trouver!!!!!
Chui trop a coter mdrrrrr merci de ton aide charabia si jai encore besoin de toi jte fé signe lol (finalement c'est toi qui m'aura fait le forum lol )

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 AND forum_suj.id=".$_GET['id']; $resultatReponses = 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($resultatReponses)) { ?> 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, 15:32

Maintenant il me reste un dernier probleme et mon forum sera terminé (oufff :P ) C'est que sur la page pour envoyer une reponse au sujet je n'arrive pas a récupérer la valeur de l'id du sujet lorsque je fait:

Code : Tout sélectionner

$sujet= $_GET['id'];
il me renvoi une valeur de 0 par defaut dans phpmyadmin
lorsque je fait

Code : Tout sélectionner

$sujet= print $_GET['id'];
il me renvoi 1 par defaut... si jcecri dans un autre sujet avec sa il va donc me renvoyer le message dans le sujet qui a l'id 1 lol...
voila mon code pour la page envoyer une reponse (ajouter_rep):

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"); if (isset($_POST['pseudo']) && isset($_POST['message']) && isset($_POST['email'])) { $pseudo = $_POST['pseudo']; $message = $_POST['message']; $email= $_POST['email']; $sujet= $_GET['id']; //$date = date("d-m-Y H:i"); htmlentities($auteur,ENT_QUOTES); $msg = htmlentities($message,ENT_QUOTES); $msg2 = nl2br($msg); $query = "INSERT INTO forum_rep (id,email_rep,sujet,pseudo_rep,date_rep,message_rep,heure_rep) VALUES ('','$email','$sujet','$pseudo','','$msg2','')" or die ("erreur requête"); mysql_query($query); mysql_close(); header('location: http://duk3killer.club.fr//index.php?option=com_forum'); } ?>
Et celui de mon formulaire:

Code : Tout sélectionner

<form method="post" action="components/com_forum/ajouter_rep.php"> <input type="hidden" name="reponse_id" value="<? echo $_GET['id']; ?>" /> <table border="0" width="350" align="center"> <tr> <td width="100"><b>Pseudo</b></td> <td width="250"><input type="text" name="pseudo"></td> </tr> <tr> <td width="100"><b>E-Mail</b></td> <td width="250"><input type="text" name="email"></td> </tr> <td colspan="2" align="left"><b>Message</b></td> </tr> <tr> <td colspan="2" align="center"> <textarea name="message" wrap="VIRTUAL" cols="40" rows="10" onFocus="message.value=''">Entrez votre texte ici...</textarea> </td> </tr> <tr> <td colspan="2" align="center"><p> <input type="submit" name="submit" value="Enregistrer"><input type="reset" value="Effacer" /><input type="button" value="Retour" onClick="javascript:history.back();"> </p> </td> </tr> </table> </form>

Avatar du membre
ViPHP
ViPHP | 3008 Messages

27 déc. 2006, 15:50

Tu t'es trompé sur un tit point.

Dans ton formulaire tu récupères bien l'ID du sujet avec :
<input type="hidden" name="reponse_id" value="<? echo $_GET['id']; ?>" />
Mais lorsque tu envoies le formulaire, la variable que tu dois utiliser est "reponse_id" et non plus id.

Donc dans ta page ajouter_rep tu dois faire :
$sujet= $_POST['reponse_id'];

Eléphanteau du PHP | 20 Messages

27 déc. 2006, 15:58

D'accord mais sa marche toujours pas, la valeur de sujet est de 0 le probleme doit venir du formulaire. J'ai essayer avec button au lieu de hidden

Code : Tout sélectionner

<input type="button" name="reponse_id" value="<? echo $_GET['id']; ?>" />
Et sur le bouton aucun numero s'affiche alors qu'il devrai retourner la valeur de l'id du sujet...
j'envoi le code lorque l'on lit un sujet (lecture.php):

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 AND forum_suj.id=".$_GET['id']; $resultatReponses = 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($resultatReponses)) { ?> 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'); ?>
reponse.php est donc mon formulaire

Avatar du membre
ViPHP
ViPHP | 3008 Messages

27 déc. 2006, 16:03

Ton problème se situe au niveau des liens. Apparemment le $_GET['id'] n'est pas reconnu.

Tu transmets bien l'ID dans l'URL ?

Eléphanteau du PHP | 20 Messages

27 déc. 2006, 16:09

Ben jpense oui exemple pour le sujet bienvenue :
http://duk3killer.club.fr//index.php?op ... cture&id=1 et le

Code : Tout sélectionner

$donneesSujet['id']
dans la page lecture fonctionne

Avatar du membre
ViPHP
ViPHP | 3008 Messages

27 déc. 2006, 16:17

Je commence à m'y perdre...je ne vois plus l'arborescence de tes pages...

Ce que tu dois savoir c'est que si tu passes l'ID dans l'URL, dans la page de récupération tu dois utiliser $_GET['id'].

Ensuite dans cette même page tu peux passer l'ID dans un champ texte. A la 3è page tu récupéreras cet ID avec $_POST['nom_du_champ'].

Tu vois mieux ? Le souci c'est que je n'ai pas tes pages devant moi et c'est difficile de voir.

Eléphanteau du PHP | 20 Messages

27 déc. 2006, 16:34

Bon lol jvé tout filer lol comme sa sera clair enfin jespere lol :lol:
page forum.php : // C'est la page principal du forum

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 ORDER BY heure DESC"; $resultatSujets = 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><hr></p> <? } ?> <? include('nouveau.php'); ?>
page nouveau: //contien le formulaire pour ajouter un sujet:

Code : Tout sélectionner

<form method="post" action="components/com_forum/ajouter.php"> <table border="0" width="350" align="center"> <tr> <td width="100"><b>Pseudo</b></td> <td width="250"><input type="text" name="pseudo"></td> </tr> <tr> <td width="100"><b>E-Mail</b></td> <td width="250"><input type="text" name="email"></td> </tr> <td width="100"><b>Sujet</b></td> <td width="250"><input type="text" name="sujet"></td> </tr> <td colspan="2" align="center"><b>Message</b></td> </tr> <tr> <td colspan="2" align="center"> <textarea name="message" wrap="VIRTUAL" cols="40" rows="10" onFocus="message.value=''">Entrez votre texte ici...</textarea> </td> </tr> <tr> <td colspan="2" align="center"><input type="submit" name="submit" value="Enregistrer"><input type="reset" value="Effacer" /></td> </tr> </table> </form>

page ajouter: //permet d'ajouter dans la base de donnée les rensignement du formulaire nouveau

Code : Tout sélectionner

if (isset($_POST['pseudo']) && isset($_POST['message']) && isset($_POST['email']) && isset($_POST['sujet'])) { $mysql_host = 'localhost'; $mysql_user = 'root'; $mysql_password = ''; $mysql_base = 'site'; $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"); $sujet = $_POST['sujet']; $pseudo = $_POST['pseudo']; $message = $_POST['message']; $email= $_POST['email']; //$date = date("d-m-Y H:i"); htmlentities($sujet,ENT_QUOTES); htmlentities($auteur,ENT_QUOTES); $msg = htmlentities($message,ENT_QUOTES); $msg2 = nl2br($msg); $query = "INSERT INTO forum_suj (id,titre,pseudo,date,message,email,heure) VALUES ('','$sujet','$pseudo','','$msg2','$email','')" or die ("erreur requête"); mysql_query($query); mysql_close(); header('location: http://duk3killer.club.fr//index.php?option=com_forum'); } else { unset($_POST['sujet']); unset($_POST['pseudo']); unset($_POST['message']); unset($_POST['email']); header('location: http://duk3killer.club.fr//index.php?option=com_forum'); } ?>
page lecture: // permet de visioner un 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 AND forum_suj.id=".$_GET['id']; $resultatReponses = 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($resultatReponses)) { ?> 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'); ?>
page reponse : //contient le formulaire pour ajouter une reponse o formulaire choisi (lecture.php)

Code : Tout sélectionner

<form method="post" action="components/com_forum/ajouter_rep.php"> <input type="hidden" name="reponse_id" value="<? echo $_GET['id']; ?>" /> <table border="0" width="350" align="center"> <tr> <td width="100"><b>Pseudo</b></td> <td width="250"><input type="text" name="pseudo"></td> </tr> <tr> <td width="100"><b>E-Mail</b></td> <td width="250"><input type="text" name="email"></td> </tr> <td colspan="2" align="left"><b>Message</b></td> </tr> <tr> <td colspan="2" align="center"> <textarea name="message" wrap="VIRTUAL" cols="40" rows="10" onFocus="message.value=''">Entrez votre texte ici...</textarea> </td> </tr> <tr> <td colspan="2" align="center"><p> <input type="submit" name="submit" value="Enregistrer"><input type="reset" value="Effacer" /><input type="button" value="Retour" onClick="javascript:history.back();"> </p> </td> </tr> </table> </form>
et enfin ajouter_rep: // qui va mettre dans la base de donnée les infos pour ajouter la reponse

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"); if (isset($_POST['pseudo']) && isset($_POST['message']) && isset($_POST['email'])) { $pseudo = $_POST['pseudo']; $message = $_POST['message']; $email= $_POST['email']; $sujet= $_POST['reponse_id']; //$date = date("d-m-Y H:i"); htmlentities($auteur,ENT_QUOTES); $msg = htmlentities($message,ENT_QUOTES); $msg2 = nl2br($msg); $query = "INSERT INTO forum_rep (id,email_rep,sujet,pseudo_rep,date_rep,message_rep,heure_rep) VALUES ('','$email','$sujet','$pseudo','','$msg2','')" or die ("erreur requête"); mysql_query($query); mysql_close(); header('location: http://duk3killer.club.fr//index.php?option=com_forum'); } ?>
Voila lol :D

Avatar du membre
ViPHP
ViPHP | 3008 Messages

27 déc. 2006, 16:42

Si je vois bien, la page reponse.php est un include de la page lecture.

Dans cette page lecture tu récupères bien l'ID puisque $query = "SELECT * FROM forum_suj WHERE id=".$_GET['id'].""; fonctionne.

Et comme <input type="hidden" name="reponse_id" value="<? echo $_GET['id']; ?>" /> est inclus dans cette même page, je ne vois pas pourquoi là l'ID n'est pas reconnu...

Quand tu affiche la source de ta page, que vois tu au niveau de ce bouton ?

Eléphanteau du PHP | 20 Messages

27 déc. 2006, 16:49

Ben que ce soit a la source ou dans un sujet rien ne s'affiche sur le bouton:
http://duk3killer.club.fr//index.php?option=com_forum