Page 1 sur 2
probleme avec UPDATE
Posté : 11 sept. 2005, 16:53
par 001cod10
salut,
j'arrive à afficher les données d'un membre. Lorsque je modifie et que je valide le script marche bien mais la modification n'est pas signalée dans ma table.
Voici mon code de mise à jour.
<?php
$BD_serveur = "localhost";
$BD_utilisateur = "root";
$BD_motDePasse = "";
$BD_base = "mabase";
$pseudo = isset($_POST["pseudo"]) ? $_POST["pseudo"] : "";
$motdepasse = isset($_POST["motdepasse"]) ? $_POST["motdepasse"] : "";
$nom = isset($_POST["nom"]) ? $_POST["nom"] : "";
$prenom = isset($_POST["prenom"]) ? $_POST["prenom"] : "";
echo "Bonjour $prenom $nom,<br>";
mysql_pconnect($BD_serveur, $BD_utilisateur, $BD_motDePasse)
or die("Impossible de se connecter au serveur de bases de données.");
@mysql_select_db($BD_base) or die("Impossible de se connecter à la base de données.");
$requete="UPDATE Table SET
non='".$_POST["nom"]."',prenom='".$_POST["prenom"]."',adresse='".$_POST["adresse"]."' WHERE pseudo='$pseudo' AND motdepase='$motdepasse'";
$result = @mysql_query($requete);
if (!$result) {
echo "Vos données ont été mises à jour<br>";
} else {
echo "La mise à jour de vos données a échouée. Essayez plus tard<br>";
}
mysql_close();
?>
Posté : 11 sept. 2005, 16:58
par HD
j'ai l'impression qu'il a erreur au niveau de
if (!$result) {
car a mon avis :
if (!$result) { -->echec
else -->effectué
et de toute facon $result = @mysql_query($requete); donc $result est toujours verifié donc ta condition qui suit n'a pas lieu d'etre
met à la place de
$result = @mysql_query($requete);
$result = mysql_query($requete) or die('Erreur SQL !<br>'.$requete.'<br>'.mysql_error());
Posté : 11 sept. 2005, 16:58
par Vaedan
Merci de suivre la règle numéro 3.
tente : mysql_query( $requete ) or die( mysql_error() );
[/size]
Edit: décidément, on répond toujours avant moi. Résolu ?
Posté : 11 sept. 2005, 18:16
par 001cod10
tout rien dans la table j'ai le message vos données ont été mises à jour. je ne comprend pas pourquoi cela ne marche pas
Posté : 11 sept. 2005, 18:19
par HD
si tu avais bien lu et suivi mon post tu n'aurais pas ce message pour la simple raison que je t'ai dit de l'effacer et le remplacer par un autre code
(voir up)
Posté : 11 sept. 2005, 18:30
par 001cod10
En suivant à la lettre la modif voici ce que j'ai comme message
Bonjour Eric Dupont
Erreur SQL !
UPDATE Table SET non='Dupont',prenom='Eric',adresse='12,Rues des oliviers' WHERE pseudo='' AND motdepase=''
La table 'nombase.table' n'existe pas
Posté : 11 sept. 2005, 18:44
par Truc
salut,
vu ton mssage d'erreur qui me parrait très clair, la table "Table" n'existe pas dans ta BD verifi le nom
sinon tu te retrouve avec le champs pseudo et mdp sans valeur dans ta requete update, fait plustot un truc du genre:
WHERE pseudo='" . $pseudo . "' AND motdepase='" . $motdepasse ." '";
Posté : 11 sept. 2005, 18:45
par HD
ah ben tu l'as ton erreur :
soit la base n'exsite pas
soit c'est la table qui n'existe (le cas le plus probable)
Posté : 11 sept. 2005, 19:11
par 001cod10
Eh oui j'ai mal écrit ma table. mais rien ne bouge tjrs dans ma table
voici le message que j'ai Bonjour Eric françois Dupont,
Vos données ont été mises à jour
car j'ai modifié mon prénom en ajoutant françois Et j'ai tjr eric dans le champ prenom
Posté : 14 sept. 2005, 11:08
par 001cod10
Vous m'aviez abandonné à mon sort. je vous en prie pas ça mon script ne marche toujours pas
Posté : 14 sept. 2005, 11:19
par Cyrano
Bon, on va faire un arrêt sur image: regarde bien ta requête et en particulier les noms des champs:
$requete="UPDATE Table
SET non='".$_POST["nom"]."',
prenom='".$_POST["prenom"]."',
adresse='".$_POST["adresse"]."'
WHERE pseudo='$pseudo'
AND motdepase='". $motdepasse ."'";
Tu as marqué le champ "non" : ce ne serait pas "no
m" par hasard ?
Dans la clause WHERE, tu as le champ "motdepase" : ce ne serait pas "motdepas
se"

Posté : 14 sept. 2005, 11:33
par Tho
En même temps mysql aurait jamais accepté des champs qui n'existent pas. je sens que 001cod10 cache quelque chose...
Posté : 17 sept. 2005, 12:39
par 001cod10
Tho je ne cache rien. Je ne sais pas de quoi tu parles.
Je problème, Cyrano tu as raison j'ai c'est bien nom et motdepasse les champs qui comportent des erreurs. J'étais fatigué. Je m'excuse.
Apres correction voici ce que j'ai :
Bonjour Claude François Dupont,
Vos données ont été mises à jour
UPDATE membres SET nom='Dupont', prenom='Claude François', adresse='2, Rue des oliviers' WHERE pseudo='' AND motdepasse=''
Je remarque que j'ai un problème de POST avec pseudo et motdepasse
Ce que je ne comprends pas l'envoie des pseudo et motdepasse qui me permet d'afficher le formulaire du membre. J'ai seulement modifier prenom qui contenait "Claude". je ne sais pas comment régler ce problème.
Posté : 17 sept. 2005, 13:03
par Truc
Salut, tu as certainement des problemes coté formulaire, si tu pouvais mettre le code histoire de voir les passages et nom des champs ?!
Posté : 17 sept. 2005, 13:27
par Cyrano
Bon, on va repartir du script d'origine corrigé (vérifie bien les noms de varaible et de champ):
<?php
$BD_serveur = "localhost";
$BD_utilisateur = "root";
$BD_motDePasse = "";
$BD_base = "mabase";
$pseudo = isset($_POST["pseudo"]) ? trim($_POST["pseudo"]) : "";
$motdepasse = isset($_POST["motdepasse"]) ? trim($_POST["motdepasse"]) : "";
$nom = isset($_POST["nom"]) ? trim($_POST["nom"]) : "";
$prenom = isset($_POST["prenom"]) ? trim($_POST["prenom"]) : "";
if(!empty($pseudo) && !empty($motdepasse) && !empty($nom) && !empty($prenom))
{
?>
<p>Bonjour <?php echo($prenom ." ". $nom); ?></p>
<?php
mysql_pconnect($BD_serveur, $BD_utilisateur, $BD_motDePasse)
or die("Impossible de se connecter au serveur de bases de données.");
mysql_select_db($BD_base) or die("Impossible de se connecter à la base de données.");
$requete="UPDATE Table SET
nom='". $nom ."',
prenom='". $prenom ."',
adresse='". $adresse ."'
WHERE pseudo='". $pseudo ."'
AND motdepasse='". $motdepasse ."'";
$result = mysql_query($requete);
if (!$result)
{
echo "<p>Vos données ont été mises à jour</p>\n";
}
else
{
echo "<p>La mise à jour de vos données a échouée. Essayez plus tard</p>\n";
}
mysql_close();
}
else
{
echo("<p>Données incomplètes.</p>\n");
}
?>