Les MP ne s'affichent pas

Répondre
raphlight
le 17/03/2007 à 22:39
raphlight
Bonsoir tout le monde.
J'ai créé une messagerie interne afin que les membres puissent s'envoyer des messages privés (=MP).

J'ai une page envoie ou se situe le formulaire pour envoyer un nouveau message.
J'ai une page reception où le nom des messages que l'on recoit s'affichent et quand on clique sur le nom, le message s'ouvre dans une autre page.

Mon problème :

Je peux envoyer des messages, j'ai le message de confirmation et aucune erreur MySQL.

Mais lorsque je vais dans la boite de reception du membre ayant recu un message que je lui ai envoyé... il s'affiche "Vous n'avez aucun message".

J'ai vérifier dans ma table MySQL, les messages s'affichent, le titre des messages s'affichent, l'id du destinataire aussi mais pas l'id de l'envoyeur (il marque 0 pour l'id de l'envoyeur alors que j'ai envoyé les messages avec le membre qui a l'id 2 et que aucun id 0 n'existe).

Est-ce de là que ca peut provenir ?

Comment corriger ce problème ?

Merci d'avance

PS: voilà le code que j'ai mis dans la page de reception des messages :

<?php
$base = mysql_connect ('machin', 'login', 'pass');
mysql_select_db ('nom_base', $base);

// on prépare une requete SQL cherchant tous les titres, les dates ainsi que l'auteur des messages pour le membre connecté
$sql = 'SELECT titre, date, membre.login as expediteur, messages.id as id_message FROM messages, membre WHERE id_destinataire="'.$_SESSION['id'].'" AND id_expediteur=membre.id ORDER BY date DESC';
// lancement de la requete SQL
$req = mysql_query($sql) or die('Erreur SQL !'.$sql.''.mysql_error());
$nb = mysql_num_rows($req);

if ($nb == 0) {
echo 'Vous n'avez aucun message.';
}
else {
// si on a des messages, on affiche la date, un lien vers la page lire.php ainsi que le titre et l'auteur du message
while ($data = mysql_fetch_array($req)) {
echo $data['date'] , ' - <a href="lire.php?id_message=' , $data['id_message'] , '">' , stripslashes(htmlentities(trim($data['titre']))) , '</a> [ Message de ' , stripslashes(htmlentities(trim($data['expediteur']))) , ' ]';
}
}
mysql_free_result($req);
mysql_close();
?>
http://raphlight.free.fr/trad.php
vengeur002
le 19/03/2007 à 01:31
vengeur002
t aurai pas oublier session_start (); des fois?

a mon avis t as oublier session_start (); partout puisque l id expediteur n est pas entrer dans ta table et tes message ne s affiche pas

et au fait

# echo 'Vous n'avez aucun message.';

ca ca donne parse error

ca c est mieux

# echo 'Vous n\'avez aucun message.';

smiley
Keika
le 19/03/2007 à 05:25
Keika
Oui ca doit etre ca puisqu'il fait une recherche dans sa base avec un $_SESSION['id'], et si y'a pas de session_start(), les variables globales $_SESSION ne fonctionnent pas. Enfin je crois...
Le PHP --> C'est dur !
raphlight
le 19/03/2007 à 13:28
raphlight
Non, non !
J'ai oublié de dire ; j'ai mis ca tout en haut de ma page ;)

<?php
session_start();
// est-ce un membre ?
if (!isset($_SESSION['login'])) {
// si c'en ai pas un : page d'accueil
header ('Location: index.php');
exit();
}
?>


Je vais toujours essayé de mettre "Vous n\'avez pas...".

Mais je pense pas que ca viendrait de là... quelqun aurait il une autre idée ?
http://raphlight.free.fr/trad.php
raphlight
le 24/03/2007 à 09:29
raphlight
non, ca ne vient pas de là ! :'(

Help ! ^^
http://raphlight.free.fr/trad.php
vengeur002
le 24/03/2007 à 17:12
vengeur002
Pour debuguer fais un echo de ta session je suis certain qu'elle n est pas déclarée, c est pas possible autreent t as un probleme soit au moment de sa déclaration, soit au moment de sa récuperation mais ca peux venir que de la
smiley

smiley
vengeur002
le 24/03/2007 à 17:18
vengeur002
Ah au fait pour info le probleme n est pas que lors de la récuperation du message mais lors de son enregistrement aussi .

donc la session n est pas declarée ni au moment de l enregistrement ni au moment de la récupération donc soit t as oublier la session_start partout soit t as session est mal ou pas declarée

quand tu declare ta session (si tu l a déclarée), fait attention qu'aucune ligne html n est presente avant.

je traduit ===> ton embre se log==> tu déclare ta session avant de lui dire t es connecté smiley

smiley
raphlight
le 26/03/2007 à 13:28
raphlight
euh, pourtant, dans chacune des pages (connection, envoie de message et reception), j'ai ce code:

session_start();
// c'est un membre ?
if (!isset($_SESSION['login'])) {
// redirection si c'en ai po un
header ('Location: index.php');
exit();
}


et y'a pas de html avant...
Ou alors, j'ai rien compris et c'est un autre session_start ?
http://raphlight.free.fr/trad.php
raphlight
le 26/03/2007 à 13:30
raphlight
t'es sûr que $_SESSION['id'] soit correcte ?


Euh, c'est à dire ?
http://raphlight.free.fr/trad.php
Répondre
LoadingChargement en cours