Mysql_query

Fermé
anatolekadel Messages postés 102 Date d'inscription jeudi 26 mai 2011 Statut Membre Dernière intervention 18 novembre 2011 - 28 juin 2011 à 01:21
anatolekadel Messages postés 102 Date d'inscription jeudi 26 mai 2011 Statut Membre Dernière intervention 18 novembre 2011 - 28 juin 2011 à 11:26
Bonjour,

voilà, je suis en train de coder une petite interface de messagerie pour un jeu (comme O-Game, Travian, etc...) en PHP.
//Donc, pour ma messagerie, j'utilise PHPMyAdmin.
Pour envoyer un message à un joueur, j'ai un formulaire relativement simple; un INPUT TYPE=TEXT pour le sujet et un TEXTAREA pour le message. Sur click du bouton envoyer, la page MessageEnvoi.php reçoit les variables suivantes:
-$Dest = $_GET['idDestinataire'] //C'est l'identifiant du joueur qui doit recevoir le message.
-$Exp = $_SESSION['idJoueur'] //C'est l'identifiant de l'expediteur
-$sujet = $_POST['SujetMessage'] //Le sujet du message
-$message = $_POST['PostContent'] //Le corps du message

Voilà, avec toutes ces variables, je lance cette requête MySQL:
INSERT INTO message (SujetMessage, CorpsMessage, DateEnvoi, idExpediteur, idDestinataire, Lu) VALUES ($sujet, $message, NOW(), $Exp, $Dest, 0)

//Lu étant un booléen qui sert à savoir si le message a déjà été lu ou pas...

Mon problème est que la requête s'éxécute 2 fois. La première est celle que j'ai besoin, la deuxième fois, elle enregistre que certaines choses comme l'idMessage (c'est un auto-increment)...
Donc, j'ai testé combien de fois la page se lancait, 1 seule fois.
J'ai testé combien de fois le mysql_query se réalisait 2 fois.
J'ai fait un echo 'test 1' avant le mysql_query et un echo 'test 2' après. Le résultat est qu'il n'y a pas de boucle ou que sais-je... Donc franchement, je ne vois absolument pas d'où peut venir l'erreur, c'est la raison de ma question.

Voilà mon code (un petit extrait):
<?php
echo 'debut PHP';
$NomBase = 'jeu';
$connexion = mysql_connect("****","****","****");
mysql_select_db($NomBase,$connexion);
$Dest = $_GET['idDestinataire'];
$Exp = $_SESSION['idJoueur'];
$sujet = $_POST['sujet'];
$sujet = '"'.$sujet.'"';
$message = $_POST['postContent'];
$message = "'".$message."'";
$requete = "INSERT INTO message (SujetMessage, CorpsMessage, DateEnvoi, idExpediteur, idDestinataire, Lu) VALUES ($sujet, $message, NOW(), $Exp, $Dest, 0)";
echo 'la requete se lance une ligne plus bas<br>';
if (mysql_query($requete, $connexion))
{
echo 'Ajout effectué avec succès !';
}
else
{
echo 'Problème dû à la requête :<br>';
echo htmlentities($requete)."<br>";

}
?>
Lors de l'exécution du script, il affiche:

la requete se lance une ligne plus bas
Ajout effectué avec succès !

Et, là, j'aurai besoin d'aide, parce que je ne vois pas d'où vient l'erreur...

2 réponses

wyllos Messages postés 160 Date d'inscription dimanche 3 juin 2007 Statut Membre Dernière intervention 15 septembre 2011 5
28 juin 2011 à 01:44
déjà au lieu de cela : $message = $_POST['postContent'];
$message = "'".$message."'";

tu ferais mieux de faire '.mysql_real_escape_string($message).'
et pour les autres aussi.
quand a ton double insert, vue comme cela je ne voix pas, tu n'as pas à un autre endroit mysql_query($requete, $connexion) ?
0
anatolekadel Messages postés 102 Date d'inscription jeudi 26 mai 2011 Statut Membre Dernière intervention 18 novembre 2011 3
28 juin 2011 à 11:26
C'est vrai qu'en lisant PHP.net, j'aurai mieux fait de faire mysql_real_escape_string() que j'avoue ne pas connaître...
Mais le problème persiste toujours, j'ai beau chercher partout, j'ai bien quelques mysql_query mais pas sur la même page et les 'queries' ne sont pas des INSERT...
Est-ce possible que cela vienne de la BDD ? Un Update On Cascade ou autre...
0