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

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Un UPDATE SET qui supprime mais ne met pas ce qu'il faut

par cicom » 16 oct. 2005, 18:07

Pour ce que ça interesse j'ai trouvé la solution à mon problème. (les UPDATE SET qui supprimaient mais ne sauvergardaient pas la donnée. En fait il ne faut pas couper php après avoir déclaré la variable POST ex avec le script ci dessus(le tout premier) le script correcte est celui ci dessous où comme vous le voyez j'ai mis un écho pour ne pas arrêter le script php.
<?php
session_start();
$mail = $_POST['mail'];
$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'] != "") 
{
$sql1 = mysql_query("SELECT count(*) FROM users WHERE mail = '".$mail."'");
$sql2 = mysql_result($sql1,0,0);
if($sql2 <> 0)
{
echo 'Il y a déjà un compte avec cette adresse <a href="cmail1.php">retour</a></div>';
exit();
}
else
{
mysql_query("UPDATE users SET mail = '".$mail."' WHERE pseudo = '".$pseudo."'");
echo 'Votre nouvelle adresse : '.$mail.' <br><a href="im.php">retour</a></div>';
}
}
?>

par cicom » 28 sept. 2005, 20:25

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...

par Cyrano » 28 sept. 2005, 20:16

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 ?

par cicom » 28 sept. 2005, 19:12

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?

par Cyrano » 28 sept. 2005, 19:07

À 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
}
?>

par cicom » 28 sept. 2005, 19:07

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...

par cicom » 28 sept. 2005, 19:03

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
}
?>

par pjl » 28 sept. 2005, 18:57

as tu testé ta requête dans PHPMyadmin comme il a été demandé ? Que se passe-t-il ?

par cicom » 28 sept. 2005, 18:53

help porfavor! je ne comprend pas pourquoi il ne sauvegarde pas cette donée et ce n'est pas faute d'avoir essayé!

par cicom » 27 sept. 2005, 17:03

non il sauvegarde toujours pas la donnée...

par Truc » 26 sept. 2005, 21:24

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())"

par cicom » 26 sept. 2005, 20:41

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...

par Truc » 26 sept. 2005, 19:09

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());

par cicom » 26 sept. 2005, 19:00

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...

par Cyrano » 25 sept. 2005, 22:31

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.