Problème PHP - Messages privés?
le 24/01/2009 à 23:22
ouye
Bonjour,
J'ai essayé aujourd'hui de me servir du code php dans la section comment faire pour envoyer des messages privés.
J'ai donc fait un grossier copier coller du code pour voir si cela fonctionnait et malheureusement, l'affichage des messages ne fonctionne pas.
Tous les champs se rentrent bien dans ma base de donnée, mais lorsque je me log sur mon site, il m'affiche aucun message (alors que pourtant je m'en suis envoyé 2 ou 3 pour tester, et qu'ils figurent bien dans la base de donnée).
Il m'affiche : "aucun message reconnu", donc je suppose qu'il ya une erreur du fichier lire.php.
Auriez-vous une idée de quel peut être le problème?
Merci
le 24/01/2009 à 23:26
ouye
Petite pr
D'après le code PHP de lire.php, tu as ce message pour deux raisons possibles :
- quand tu n'as pas d'id de message dans l'URL
- quand la requete SQL ne retourne aucun message
Donc vérifie que tu as bien un paramètre id_message dans l'URL, et fais un echo de la requete SQL. Ne vois tu rien qui manque ?
le 25/01/2009 à 12:53
ouye
Alors en effet, je n'avais pas d'id de message dans l'url.
Du coup j'ai rajouté l'id : http://localhost/lire.php?id_message=2 et j'affiche la requète comme tu me le dis. Et la voici ce qui apparait :
"Resource id #3 Vous avez aucun message."
Le pb n'est tjs pas résolu.
Ca, c'est parce que tu fais un echo de $req et pas de $sql.
le 25/01/2009 à 13:16
ouye
Exact, donc voici l'affichage :
SELECT titre, date, message, membres.login as expediteur FROM messages, membres WHERE id_destinataire="demo" AND id_expediteur=membres.id AND messages.id="2" Vous avez aucun message.
Donc ca c'est en effet le code que j'ai rentré et il a l'air de bien tout sélectionné. (ps : le message est bien situé dans le champ message de ma table messages mais il ne s'affiche tjs pas).
id_destinataire="demo" ce n'est pas bon ca.
Tu devrais avoir un chiffre (cela correspond à $_SESSION['id']).
Tu as donc un problème de session, et le problème doit se situer au niveau de la page de login (la ou les données rentrent en session).
Tu as quoi en faisant un print_r de $_SESSION ?
le 25/01/2009 à 13:55
ouye
Je ne comprends pas pourquoi le id_destinataire n'est pas bon et pourquoi je devrais avoir un chiffre.
En faisant un print_r de $_SESSION, j'obtiens :
Array ( [login] => demo ).
Ca m'a l'air d'être correct non?
Non, il en manque un bout : $_SESSION['id'].
Et si le "demo" est arrivé dans la requete SQL, cela veut dire que tu mis $_SESSION['login'] dans la requete et non $_SESSION['id'].
N'aurais tu pas modifié le comment faire ?
Sinon, id_destinataire doit etre un chiffre, car en base (si tu n'as rien modifié), cela correspond à un chiffre.
le 25/01/2009 à 15:40
ouye
Ah oui exact, j'ai bien un session['id'] dans ma requète, mais du coup quand je remplace le login par le id dans le $_SESSION, j'ai une erreur me disant que mon id n'est pas défini (Undefined index).
EN fait pour résumé , j'ai recopier exactement le membre.php, le lire.php, le envoyer.php et le supprimer.php.
Ce qui diffère est mon formulaire d'enregistrement, dans lequel je stocke ma variable login dans un champ login de ma table membres.
Du coup la seule ligne que j'ai modifié dans tous les .php présent sur ce site est :
$sql = 'SELECT titre, date, membres.login as expediteur, messages.id as id_message FROM messages, membres WHERE id_destinataire="'.$_SESSION['login'].'" AND id_expediteur=membres.id ORDER BY date DESC'; et non un $_SeSSION['id'] comme tu l'as dit car il ne comprends pas le $_SESSION['id'].