Page 1 sur 2

Un UPDATE SET qui supprime mais ne met pas ce qu'il faut

Posté : 25 sept. 2005, 21:23
par cicom
Bonjour à tous
Je vien chercher de l'aide, une fois de plus, sur ce forum.
J'ai un UPDATE SET qui supprimer l'ancienne valeure mais ne met pas la nouvelle à la place. Je ne sais pas ca vien de php ou sql mais quand je demande à php d'afficher les variables il le fait correctement. De plus SQL ne renvoi aucune erreur duand je lui demande de les afficher.
Merci de votre aide je joind les script ci dessous
<?php
session_start();
$pseudo = $_SESSION['pseudo'];
include ('scripts.php'); //contient tout ce qu'il faut pour se connecter correctement
include ('skin.php'); //contient l'habillage de la page en html et un peu de php
if($_SESSION['pseudo'] == "") 
{ 
?>
Vous n'êtes pas logué, veuillez le faire <a href="login.htm">ici</a></div>
</div> 
<?php 
} 
if(isset($_SESSION['pseudo']) && $_SESSION['pseudo'] != "") 
{
$mail = $_POST['mail'];
$sql1 = mysql_query("SELECT count(*) FROM users WHERE mail = '".$mail."'");
$sql2 = mysql_result($sql1,0,0);
if($sql2 == 1)
{
?>
<p> Il y a déjà un compte avec cette adresse <a href="cmail1.php">retour</a></div>
<?php
}
else
{
mysql_query("UPDATE users SET mail = '".$mail."' WHERE pseudo = '".$pseudo."'") or die(mysql_error());
?>
Votre nouvelle adresse : <?php echo($mail) ?><br><a href="im.php">retour</a></div>
<?php
}
}
?>

Posté : 25 sept. 2005, 22:31
par Cyrano
Fais afficher la requête de UPDATE et essaye la directement dans phpMyAdmin, à première vue, je ne vois pas d'autre possibilité qu'une variable vide.

Posté : 26 sept. 2005, 19:00
par cicom
Alors $pseudo d'affiche correctement ainsi que $mail, la requete SQL marche très bien en direct alors je vois pas pourquoi les deux ensembles marchent pas. Si quelqu'un a une idée svp...

Posté : 26 sept. 2005, 19:09
par Truc
pas de solution mais une demande d'affichage de la requete concatènée (comme demandé) pour voir les espaces etc...
$sql="UPDATE users SET mail = '".$mail."' WHERE pseudo = '".$pseudo."'";
echo $sql;
mysql_query($sql) or die(mysql_error());

Posté : 26 sept. 2005, 20:41
par cicom
Ca commence à m'énerver parceque je ne comprend pas pourquoi ça ne marche pas, UPDATE users SET mail = '[email protected]' WHERE pseudo = 'cicom' voila ce qu'il m'affiche avec la fonction echo ce qui est normal. Par contre la valeure précédente est éffacée mais la nouvelle valuere n'est pas sauvegardée dans SQL...

Posté : 26 sept. 2005, 21:24
par Truc
effectivement il n'y a pas d'erreur visible dans la requete...
autre idée, essai juste comme ça

mysql_query("UPDATE users SET mail = '".$mail."' WHERE pseudo = '".$pseudo."'");
sans "or die(mysql_error())"

Posté : 27 sept. 2005, 17:03
par cicom
non il sauvegarde toujours pas la donnée...

Posté : 28 sept. 2005, 18:53
par cicom
help porfavor! je ne comprend pas pourquoi il ne sauvegarde pas cette donée et ce n'est pas faute d'avoir essayé!

Posté : 28 sept. 2005, 18:57
par pjl
as tu testé ta requête dans PHPMyadmin comme il a été demandé ? Que se passe-t-il ?

Posté : 28 sept. 2005, 19:03
par cicom
Ahhhhhhhhhhh! J'ai trouvé! Je n'arraitais pas d'essayer avec firefox... et ça marchait pas. Et là j'ai fait un essait IE et ça marche correctement! Le problème étant pourquoi ça ne marche pas avec firefox? je vous joint le script qui demande $mail
<?php
session_start();
$pseudo = $_SESSION['pseudo'];
include ('scripts.php');
include ('skin.php');
if($_SESSION['pseudo'] == "") 
{ 
?>
Vous n'êtes pas logué, veuillez le faire <a href="login.htm">ici</a></div>
</div> 
<?php 
} 
if(isset($_SESSION['pseudo']) && $_SESSION['pseudo'] != "") 
{
?>
<form method="post" action="cmail.php">
Votre nouvelle adresse mail :
<input type=text name=mail size="17">
<div style="position: absolute; width: 77px; height: 28px; z-index: 1; left: 213px; top: 40px" id="couche4">
<input type="submit" value="modifier"></div>
</form>
<?php
}
?>

Posté : 28 sept. 2005, 19:07
par cicom
Désolé pjl on a dû poster en même temps et je n'avait pas vu ta question. Oui j'ai essayé dans myadmin et il a exécuté la requète correctement...

Posté : 28 sept. 2005, 19:07
par Cyrano
À priori, je ne vois rien d'anormal si ce n'est pas possibilité de simplifier un détail:
<?php
session_start();
$pseudo = $_SESSION['pseudo'];
include ('scripts.php');
include ('skin.php');
if(!isset($_SESSION['pseudo']) || $_SESSION['pseudo'] == "")
{
?>
Vous n'êtes pas logué, veuillez le faire <a href="login.htm">ici</a></div>
</div>
<?php
}
else
{
?>
<form method="post" action="cmail.php">
Votre nouvelle adresse mail :
<input type=text name=mail size="17">
<div style="position: absolute; width: 77px; height: 28px; z-index: 1; left: 213px; top: 40px" id="couche4">
<input type="submit" value="modifier"></div>
</form>
<?php
}
?>

Posté : 28 sept. 2005, 19:12
par cicom
oué je sais mais le détails est sur toutes mes pages alors...lol Sinon personne sait pourquoi firefox ne fait pas ce qu'il faut?

Posté : 28 sept. 2005, 20:16
par Cyrano
oué je sais mais le détails est sur toutes mes pages...
Tu n'as pas songé à mettre ça dans un fichier unique et à faire un include sur toutes tes pages à la place ?

Posté : 28 sept. 2005, 20:25
par cicom
c'est ce que je suis entrain de faire passer tout sous include mais d'ici là que ce soit fini ca restera comme ca sinon certaines pasge riquent de ne pas aimer... Mais e attendant il faudrait que je trouve pour firefox nous fait une crise...