Fonction update pas completement executée

Résolu/Fermé
geoffreyvp - 14 déc. 2012 à 17:27
 geoffreyvp - 15 déc. 2012 à 10:45
Bonjour,
Voila ca fait plusieurs jours que je suis sur ce probleme.
Je n'arrive vraiment pas a comprendre le probleme, sachant que une des 2 modifications est faite.

Voici le code


<?php
session_start();
include('../../functions.php');
connection();
up();
if(isset($_COOKIE['membre']) == FALSE)
{
$pseudo = $_SESSION['membre'];
}
else
{
$pseudo = $_COOKIE['membre'];
}
$reponse = addslashes($_POST['reponse']);
$refer = $_POST['refer'];
$hours = date('H') + 1;
$date = date('d-m-Y ').$hours.date(':i');
$auteur = '';$destinataire = '';
$req = mysql_query("SELECT * FROM messages WHERE ID = '$refer'") OR DIE(mysql_error());
while($donnees = mysql_fetch_array($req))
{
$auteur = $donnees['auteur'];
$destinataire = $donnees['destinataire'];
}
mysql_query("INSERT INTO messages_reponses VALUES ('','$reponse','$pseudo','$date','$refer')") OR DIE(mysql_error());
if($pseudo == $auteur)
{
	mysql_query("UPDATE messages SET lu_destinataire = 'non-lu',date = '$date' WHERE ID = '$refer'") OR DIE(mysql_error());
	echo 'envoi de votre réponse';
}
elseif($pseudo == $destinataire)
{
	mysql_query("UPDATE messages SET lu_auteur = 'non-lu',date = '$date' WHERE ID = '$refer'") OR DIE(mysql_error());
	echo 'envoi de votre réponse';
}
else
{
echo 'probleme lors de l\'envoi';
redirect('index.php','2','parent');
exit();
}
redirect('index.php?id='.$refer,'2','');
down();
?>


Alors je vous explique l'interet du code en lui meme.
Donc je commence par appeller une page ou j'ai mis plusieurs fonctions.
- La fonction connection , c'est ma connexion sql.
- Up ,c'est le haut de page (l'entete , etc...)

Et alors la on commence, on attribue une valeur a $pseudo(selon le choix d'utiliser les cookies ou pas de l'utilisateur)
Ensuite on recupere la reponse , et la reference envoyé par le formulaire sur une autre page.
Ensuite on crée une variable date , pour plus tard.
On recherche toutes les informations liées au message de base.
On recupere ces informations (en ayant pris soin de les declarer juste avant)

ensuite on insere dans une autre base de données le message liés , avec la reference etc...

Et le probleme se situe principalement ici ->
En fonction de notre statut par rapport au message , on va modifier un champ special dans la base de données.
Il devrait changer donc , soit lu_destinataire, soit lu_auteur, et une date.
La date , aucun probleme , mais par contre pour les 2 autres champs ,c 'est autre chose.

Et alors le reste de la page n'est lui pas important.

Auriez vous une idée qui pourrait resoudre mon probleme ?
(Est ce que mysql n'accepterait pas les underscores dans des requetes ?)

Merci d'avance

4 réponses

personne n'a d'idée ?
0
Guiver Messages postés 262 Date d'inscription mardi 30 novembre 2010 Statut Membre Dernière intervention 20 mai 2021 87
14 déc. 2012 à 23:06
Ben écoute, j'ai essayé de répondre il y'a quelques heures, mais mon message n'est pas la....

Pour faire bref, tu n'as aucun message d'erreur ??
0
Utilisateur anonyme
14 déc. 2012 à 23:10
Bonsoir
Ça veut dire quoi, "c'est autre chose" ? Qu'est ce qui se passe ? Veux-tu dire que le champ date est mis à jour, mais ni le champ lu_destinataire, ni le champ lu_auteur ? J'ai du mal à imaginer qu'une requête ne soit qu'à moitié exécutée.
0
Guiver Messages postés 262 Date d'inscription mardi 30 novembre 2010 Statut Membre Dernière intervention 20 mai 2021 87
14 déc. 2012 à 23:47
Idem, c'est pour ce que je demande le message d'erreur. J'ai jamais vu ça ^_^
0
C'est exactement ca , la requete ne mettait a jour que une partie de la requete.

C'est justement ce qui me semblait vachement bizarre.
Mais en fait , depuis hier , apres plusieurs manipulations , je suis arrivé a resoudre le problème sans trop savoir comment ...

J'ai enlevé les underscores entre les noms des tables , et j'ai inversé la declaration de pseudo, et etrangement maintenant ca marche...

Fin bref , voila le code
<?php
session_start();
include('../../functions.php');
connection();
up();
$pseudo = '';
if(isset($_SESSION['membre']) == FALSE)
{
$pseudo = $_COOKIE['membre'];
}
else
{
$pseudo = $_SESSION['membre'];
}
$reponse = addslashes($_POST['reponse']);
$refer = $_POST['refer'];
$hours = date('H') + 1;
$date = date('d-m-Y ').$hours.date(':i');
$auteur = '';$destinataire = '';
$req = mysql_query("SELECT * FROM messages WHERE ID = '$refer'") OR DIE(mysql_error());
while($donnees = mysql_fetch_array($req))
{
$auteur = $donnees['auteur'];
$destinataire = $donnees['destinataire'];
}
mysql_query("INSERT INTO messages_reponses VALUES ('','$reponse','$pseudo','$date','$refer')") OR DIE(mysql_error());
	if($auteur == $pseudo)
	{
		$champ = 'ludestinataire';
	}
	else
	{
		$champ = 'luauteur';
	}
	mysql_query("UPDATE messages SET $champ = 'non-lu',date = '$date' WHERE ID = '$refer'") OR DIE(mysql_error());
	echo 'envoi de votre réponse';
redirect('index.php?id='.$refer,'2','');
down();
?>
0
et il n'y avait aucun message d'erreur , je tiens a le dire
0