Message interne

01cod10 Messages postés 110 Date d'inscription mardi 30 août 2005 Statut Membre Dernière intervention 13 août 2007 - 24 sept. 2005 à 12:44
 malalam - 27 sept. 2005 à 12:55
Je suis en train de faire une messagerie interne sur mon site. Lorsque je clique sur le lien titre le message ne s'affiche pas.Pouvez vous me dire ce qui pose problème. Voici mon bout de code

// on prépare une requete SQL selectionnant la date, le titre et l'expediteur du message que l'on souhaite lire, tout en prenant soin de vérifier que le message appartient bien au membre connecté
$sql = 'SELECT titre, date, message, membres.pseudo as num_expediteur FROM messages, membres WHERE pseudo_destinataire="'.$_SESSION['pseudo'].'" AND pseudo_expediteur=membres.pseudo AND messages.pseudo="'.$_POST['pseudo_message'].'"';
// on lance cette requete SQL à MySQL
$req = mysql_query($sql) or die('Erreur SQL !
'.$sql.'
'.mysql_error());
$nb = mysql_num_rows($req);


if ($nb == 0) {
echo 'Aucun message reconnu.';
}
else {
// si le message a été trouvé, on l'affiche
$data = mysql_fetch_array($req);
echo $data['date'] , ' - ' , stripslashes(htmlentities(trim($data['titre']))) , ' [ Message de ' , stripslashes(htmlentities(trim($data['num_expediteur']))) , ' ]

';
echo nl2br(stripslashes(htmlentities(trim($data['message']))));

24 réponses

01cod10 Messages postés 110 Date d'inscription mardi 30 août 2005 Statut Membre Dernière intervention 13 août 2007
24 sept. 2005 à 14:26
Je viens de modifier mon code comme ceci

$sql = 'SELECT titre, date, message, membres.num as num_expediteur FROM messages, membres WHERE num_destinataire="'.$_SESSION['num'].'" AND num_expediteur=membres.num AND messages.num="'.$_POST['num_message'].'"';
// on lance cette requete SQL à MySQL
$req = mysql_query($sql) or die('Erreur SQL !
'.$sql.'
'.mysql_error());
$nb = mysql_num_rows($req);
if ($nb == 0) {
echo 'Aucun message reconnu.';
}
else {
// si le message a été trouvé, on l'affiche
$data = mysql_fetch_array($req);
echo $data['date'] , ' - ' , stripslashes(htmlentities(trim($data['titre']))) , ' [ Message de ' , stripslashes(htmlentities(trim($data['num_expediteur']))) , ' ]

';
echo nl2br(stripslashes(htmlentities(trim($data['message']))));

Et j'ai le message aucun message reconnu. Or il y a bel et bien un message enregistré dans la table messages. Comment puis-je résoudre cela
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
24 sept. 2005 à 15:42
Salut,



il faut vérifier la valeur de $_SESSION['num'] et $_POST['num_message']

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li>
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
24 sept. 2005 à 15:43
et essaie de remplacer $_POST['num_message'] par $_GET['num_message']

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li>
0
01cod10 Messages postés 110 Date d'inscription mardi 30 août 2005 Statut Membre Dernière intervention 13 août 2007
24 sept. 2005 à 17:19
Voici mon script au complet apres ta recommandation car cela n'a rien donné


<?php


session_start();


// on v
érifie toujours qu'il s'agit d'un membre qui est connecté


if (!isset($_SESSION['pseudo'])) {


// si ce n'est pas le cas, on le redirige vers l'accueil


header ('Location: index.php');


exit();


}


?>


<html>


<head>


<title>Espace membre</title>


</head>




[membres.php Retour à l'accueil]


<?php


// on teste si notre paramètre existe bien et qu'il n'est pas vide


if (!isset($_GET['num_message']) && empty($_GET['num_message'])) {


echo 'Aucun message reconnu.';


}


else


{


$host = 'localhost';


$user = 'root';


$pass = '';


$db = 'mabase';


// connection à la DB


mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() );


mysql_select_db($db) or die ('Erreur :'.mysql_error());




// on prépare une requete SQL selectionnant la date, le titre et l'expediteur du message que l'on souhaite lire, tout en prenant soin de vérifier que le message appartient bien au membre connecté


$sql = "SELECT titre, date, message, membres.num as num_expediteur ".


"FROM messages, membres ".


"WHERE num_destinataire = ".$_SESSION['num']." ".


"AND messages.num_message = ".$_GET['num_message'];




// on lance cette requete SQL à MySQL


$req = mysql_query($sql) or die('Erreur SQL !
'.$sql.'
'.mysql_error());


$nb = mysql_num_rows($req);


if ($nb == 0) {


echo 'message non reconnu.';


}


else {


// si le message a été trouvé, on l'affiche


$data = mysql_fetch_array($req);


echo $data['date'] , ' - ' , stripslashes(htmlentities(trim($data['titre']))) , ' [ Message de ' , stripslashes(htmlentities(trim($data['num_expediteur']))) , ' ]

';


echo nl2br(stripslashes(htmlentities(trim($data['message']))));




echo '

[supprimer.php?num_message=' , $_GET['num_message'] , ' Supprimer ce message]';


}


mysql_free_result($req);




}


?>



[deconnexion.php D
éconnexion]




</html>
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
24 sept. 2005 à 17:22
Salut,



if (!isset($_GET['num_message']) && empty($_GET['num_message'])) {


remplace-le par ça :



if (!isset($_GET['num_message']) OR empty($_GET['num_message']) OR !is_numeric($_GET['num_message'])) {



rajoute aussi un mysql_close() après le mysql_query()


<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li>
0
01cod10 Messages postés 110 Date d'inscription mardi 30 août 2005 Statut Membre Dernière intervention 13 août 2007
24 sept. 2005 à 17:44
La correction n'a rien donné.J'ai enlevé cette partie


// on teste si notre paramètre existe bien et qu'il n'est pas vide


if (!isset($_GET['num_message']) OR empty($_GET['num_message']) OR !is_numeric $_GET['num_message'])) {





echo 'Aucun message reconnu.';


}


else


{

Voici le message que j'ai

Notice: Undefined index: num_message in c:\easyphp1-8\www\web\liremessage.php on line 41
Erreur SQL !SELECT titre, date, message, membres.num as num_expediteur FROM messages, membres WHERE num_destinataire 2 AND messages.num_message
Erreur de syntaxe près de '' à la ligne 1
0
01cod10 Messages postés 110 Date d'inscription mardi 30 août 2005 Statut Membre Dernière intervention 13 août 2007
24 sept. 2005 à 17:46
voici la ligne 41


$sql = "SELECT titre, date, message, membres.num as num_expediteur ".


"FROM messages, membres ".


"WHERE num_destinataire = ".$_SESSION['num']." ".


"AND messages.num_message = ".$_GET['num_message'];
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
24 sept. 2005 à 17:48
il ne reconnait pas le num_message



je précise que ton url pour consulter un message doit être de cette forme :



url.php?num_message=x ou x étant un nombre.



Par contre quelle est ta version de php ? (tu peux l'obtenir en utilisant la fonction phpinfo() qui va te générer du code html)



tu tapes <?php phpinfo() ?> dans ton fichier et hop :-)

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li>
0
01cod10 Messages postés 110 Date d'inscription mardi 30 août 2005 Statut Membre Dernière intervention 13 août 2007
24 sept. 2005 à 18:01
PHP Version 4.3.10
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
24 sept. 2005 à 18:15
ok ça devrait fonctionner alors, quand tu cliques sur ton lien quelle est l'url de ta page ?

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li>
0
01cod10 Messages postés 110 Date d'inscription mardi 30 août 2005 Statut Membre Dernière intervention 13 août 2007
24 sept. 2005 à 18:21
c:\easyphp1-8\www\web\liremessage.php
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
24 sept. 2005 à 18:26
bah c'est normal ton lien n'est pas de la form "liremessage.php?num_message=x"

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li>
0
01cod10 Messages postés 110 Date d'inscription mardi 30 août 2005 Statut Membre Dernière intervention 13 août 2007
24 sept. 2005 à 18:39
J'y arrive pas car le num_message est un champ de type int auto- increment
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
24 sept. 2005 à 18:42
Je vois pas le rapport avec le lien... file-moi le code que tu utilises
pour afficher la liste des messages du membre (et donc le lien
correspondant)



merci :-)

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li>
0
01cod10 Messages postés 110 Date d'inscription mardi 30 août 2005 Statut Membre Dernière intervention 13 août 2007
24 sept. 2005 à 18:47
<?php


session_start();


// on v
érifie toujours qu'il s'agit d'un membre qui est connecté


if (!isset($_SESSION['pseudo'])) {


// si ce n'est pas le cas, on le redirige vers l'accueil


header ('Location: index.php');


exit();


}


?>


<html>


<head>


<title>Espace membre</title>


</head>




Bienvenue <?php echo stripslashes(htmlentities(trim($_SESSION['pseudo']))); ?> !


<?php


// information pour la connection à le DB


$host = 'localhost';


$user = 'root';


$pass = '';


$db = 'mabase';


// connection à la DB


$link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() );


mysql_select_db($db) or die ('Erreur :'.mysql_error());


// 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,message, membres.pseudo as expediteur, messages.num_message as pseudo_message FROM messages, membres WHERE num_destinataire="'.$_SESSION['num'].'" AND num_expediteur=membres.num 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


while ($data = mysql_fetch_array($req)) {


echo $data['date'] , ' - [liremessage.php?message=',$data['message'],' ' , stripslashes(htmlentities(trim($data['titre']))) , '][ Message de ', stripslashes(htmlentities(trim($data['expediteur']))) ,']
';


}


}


mysql_free_result($req);


mysql_close();


?>



[envoyer_message.php Envoyer un message]




</html>
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
24 sept. 2005 à 19:08
[liremessage.php?num_message=',$data['pseudo_message'],' '
ou encore



]'
<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li>
0
01cod10 Messages postés 110 Date d'inscription mardi 30 août 2005 Statut Membre Dernière intervention 13 août 2007
24 sept. 2005 à 19:35
En utlisant cette ligne
'
j'ai eu ce message
Erreur SQL !SELECT titre, date, message, membres.num as num_expediteur FROM messages, membres WHERE num_destinataire 2 AND messages.num comment vas tu
Erreur de syntaxe près de 'vas tu' à la ligne 1
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
24 sept. 2005 à 20:08
et en utilisant la première ?


[liremessage.php?num_message=',$data['pseudo_message'],' '
<hr size="2" width="100%"><li>]Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li>
0
01cod10 Messages postés 110 Date d'inscription mardi 30 août 2005 Statut Membre Dernière intervention 13 août 2007
24 sept. 2005 à 21:00
J'ai :
Parse error: parse error in c:\easyphp1-8\www\web\message.php on line 30


$sql = 'SELECT titre,date,message,membres.pseudo as expediteur, messages.num_message as pseudo_message FROM messages, membres WHERE num_destinataire='".$_SESSION['num']."' AND num_expediteur=membres.num ORDER BY date DESC';
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
24 sept. 2005 à 21:15
non mais regarde bien avant de copier-coller un code sans faire attention :-)

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li>
0
Rejoignez-nous