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 :wink:

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 "nom" par hasard ?
Dans la clause WHERE, tu as le champ "motdepase" : ce ne serait pas "motdepasse" :?:

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");
}
?>