message interne

Eléphant du PHP | 131 Messages

24 sept. 2005, 17:53

ok je vois effectivement il y a une erreur le champ num_message est généré automatique dans ma table messages et ne provient pas d'un formulaire

Eléphant du PHP | 131 Messages

24 sept. 2005, 22:16

Erreur SQL !
SELECT titre, date, message, membres.num as num_expediteur FROM messages, membres WHERE num_destinataire = 2AND messages.num = 2
Erreur de syntaxe près de 'messages.num = 2' à la ligne 1

qui est celle ci

<?php

Mammouth du PHP | 19672 Messages

24 sept. 2005, 22:57

Ajoute un espace entre le "2" et le "AND"
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 131 Messages

25 sept. 2005, 16:05

Je ne m'en sort pas du tout. Voici l'erreur que j'ai

Bienvenue Toto !

Vous n'avez aucun message.SELECT titre, date, membres.pseudo as expediteur, messages.num_message as pseudo_message FROM messages, membres WHERE num_destinataire='' AND num_expediteur=membres.num ORDER BY date DESC
Envoyer un message

Déconnexion
Alors je vous transmet les deux scripts que j'utilise :

messages.php

Code : Tout sélectionner

<?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_rencontre.php'); exit(); } ?> <html> <head> <title>Espace membre</title> </head> <body> Bienvenue <?php echo stripslashes(htmlentities(trim($_SESSION['pseudo']))); ?> !<br /><br /> <?php // information pour la connection à le DB $host = 'localhost'; $user = 'root'; $pass = ''; $db = 'mabse'; // 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 cherchant tous les titres, les dates ainsi que l'auteur des messages pour le membre connecté $sql ="SELECT titre, date, 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 !<br />'.$sql.'<br />'.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_message.php?num_message=' , $data['pseudo_message'] , '">' , stripslashes(htmlentities(trim($data['titre']))) , '</a> [ Message de ' , stripslashes(htmlentities(trim($data['expediteur']))) , ' ]<br />'; } } mysql_free_result($req); mysql_close(); echo $sql; ?> <br /><a href="envoyer_message.php">Envoyer un message</a> <br /><br /><a href="deconnexion.php">Déconnexion</a> </body></html>
lire.php

Code : Tout sélectionner

<?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_rencontre.php'); exit(); } ?> <html> <head> <title>Espace membre</title> </head> <body> <a href="membres_message.php">Retour à l'accueil</a><br /><br /> <?php // 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']) ) { 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 = ".$_GET['num_message']; // on lance cette requete SQL à MySQL $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.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']))) , '</a> [ Message de ' , stripslashes(htmlentities(trim($data['num_expediteur']))) , ' ]<br /><br />'; echo nl2br(stripslashes(htmlentities(trim($data['message'])))); echo '<br /><br /><a href="supprimer.php?num_message=' , $_GET['num_message'] , '">Supprimer ce message</a>'; } mysql_free_result($req); mysql_close(); } ?> <br /><br /><a href="deconnexion.php">Déconnexion</a> </body> </html>

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

25 sept. 2005, 16:14

Salut,

On va reprendre tout ca serieusement avec le couteau entre les dents :wink:

Déja première chose a verifié -> la variable de session "num"
WHERE num_destinataire=''
Il y a un vide, donc $_SESSION['num']=NULL :?: :?:

Déja un point de départ, je regarde le reste .....

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 131 Messages

25 sept. 2005, 16:54

ok c'est sympa je suis entrain de revoir ma $_SESSION['num']

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

25 sept. 2005, 17:24

ça ne doit pas être sorcier, quand tu crée ta session tu affecte l'id du membre a $SESSION['num'] je pense, non ?!

si c'est fait tu peut tester ta requete dans phpmyadmin (par exemple) et voir si elle retourne ce que tu souhaite.

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 131 Messages

25 sept. 2005, 18:19

#1064 - Erreur de syntaxe pr賠de '".
"FROM messages, membres".
"WHERE num_destinataire = ".$_S' ࠬa ligne 1

voici la requete qui pose problème

$sql ="SELECT titre, date, message, membres.num as num_expediteur ".
"FROM messages, membres".
"WHERE num_destinataire = ".$_SESSION['num']."".
"AND messages.num = ".$_GET['num_message'];

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

25 sept. 2005, 18:25

:shock:
tu as certainement retouché la requete, donc celle que j'ai n'est certainement plus bonne... et puis tu balance un message d'erreur comme ça ?!

copie la requete ici ou verifi les espaces entre les attributs de la requete, assur toi de fermer les quotes et guillemets apres les avoir ouvert (ou inversement)

EDIT: tu t'y est repris a 2 fois, c mieux comme ça :wink:
Je ne te dirai pas l'erreur, si tu suit les verification d'usage que j'ai mentionné tu trouvera par toi meme :D

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

25 sept. 2005, 18:58

aller, je suis sur que tu as trouvé par toi meme mais je te la donne quand meme la requete (sans erreur en principe)
$sql ="SELECT titre, date, message, membres.num as num_expediteur  ".
"FROM messages, membres ".
"WHERE num_destinataire = ".$_SESSION['num']." ".
"AND messages.num = ".$_GET['num_message'];
Manque d'espaces entre les attributs, pour voir ce genre d'erreur il est onseillé de faire un echo $sql et tu le vois de suite. Courage :lol:

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 131 Messages

25 sept. 2005, 19:07

$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']."
LIMIT 0 , 30";


MySQL a répondu:

#1064 - Erreur de syntaxe pr賠de '".
"FROM messages, membres ".
"WHERE num_dest' ࠬa ligne 1

Franchement c'est depuis hier que je cherche je ne sais plus quoi faire

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

25 sept. 2005, 19:10

euh... rassure moi ... quand tu teste dans phpmysql tu ne met pas la requete avec $_SESSION['num'] dedans ??
as tu fait un echo $sql ? et c'est ce résultat qu'il faut exécuter !!

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 131 Messages

25 sept. 2005, 19:20

quand je fais echo $sql

SELECT titre, date,message, membres.pseudo as expediteur, messages.num_message as num_message FROM messages, membres WHERE num_destinataire="" AND num_expediteur=membres.num ORDER BY date DESC

Voici ce que j'ai

Ensuite dans phphMyadmin voici ce que j'ai

requête SQL:
SELECT titre, date, message, membres.pseudo AS expediteur, messages.num_message AS num_message
FROM messages, membres
WHERE num_destinataire = ""
AND num_expediteur = membres.num
ORDER BY date DESC
LIMIT 0 , 30

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

25 sept. 2005, 19:23

tu n'a toujours pas de $_SESSION['num'] dans la requette la variable est NULL

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Mammouth du PHP | 19672 Messages

25 sept. 2005, 19:26

ouais, avec une valeur num_destinataire vide : comme c'est une valeur numérique, il ne devrait même pas y avoir de guillemets ; dans les deux cas, la requête est fausse. En tous ça, ça veut dire que tu as une variable de session qui n'est pas initialisée.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe: