probleme avec UPDATE

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 : probleme avec UPDATE

par Cyrano » 17 sept. 2005, 15:56

Rajoute un champ texte où il peut renommer la photo tout simplement et sers-toi de la clé primaire comme point de repère pour la requête d'update.

par 001cod10 » 17 sept. 2005, 15:09

Excusez moi j'aimerai donner la possibilité à l'utilisateur de changer sa photo. C'est le nom de la photo qui est stocké dans le champ photo. Comment faire ?

par 001cod10 » 17 sept. 2005, 14:42

Merci à tous et spécialement à Truc. Cela marche maintenant.

A+

par Truc » 17 sept. 2005, 13:58

si j'ai bien compris la MAJ se passe en 3 étapes (plusieurs pages en tout cas) lorsque tu arrive sur la page de MAJ les variables pseudo et motdepasse ne sont plus reconnues tu dois les placer dans des champs cachés pour les retrouver pour la requete de MAJ:
<form action="maj_membres.php" method="post">";
<?
while ($row = mysql_fetch_array($result)) 
{?>
   <input type="hidden" name="pseudo" value="<?echo $pseudo ?>">;
   <input type="hidden" name="motdepasse" value="<?echo $motdepass ?>">;      
   NOM : <input type=text name="nom" value="<? echo $row["nom"] ?>"><br>";
   PRENOM : <input type=text name="prenom" value="<? echo $row["prenom"]?>"><br>";
   ADRESSE : <input type=text name="adresse" value="<? echo $row["adresse"]?>"><br>";
   <input type=submit value="Modifier">";
   <?
}
echo "</form>"; 
PS: depuis le temps que tu est sur le forum tu devrai savoir utiliser les bonnes balises pour une meilleur lisibilité ->

par Cyrano » 17 sept. 2005, 13:52

:shock: Et alors.... :?:
Tu pourrais utiliser le bouton [php], ça aiderait à la lecture.

Ensuite, je constate que je corrige pour rien, ton code "mise à jour" est le même qu'au départ.

QU'est-ce qui marche pas au juste ?

par 001cod10 » 17 sept. 2005, 13:35

Code : Tout sélectionner

<html> <FORM action="modifie.php" method="POST"> <fieldset><legend>modifier mes données</legend> <table > <tr> <td>Pseudo</td> <td><input type="text" name="pseudo" maxlength="6"/><br /></td> </tr> <tr> <td>Mot de Passe</td> <td><input type="Password" name="motdepasse" maxlength="6"/><br /></td> </tr> <tr> <td></td> <td><INPUT type="submit" name="Confirmer" tabindex="" align="left"></td> </tr> </table> </FORM> </fieldset> </html>
code modification

Code : Tout sélectionner

<?php // information pour la connection à le DB $host = 'localhost'; $user = 'root'; $pass = ''; $db = 'nombase'; // connection à la DB $link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() ); mysql_select_db($db) or die ('Erreur :'.mysql_error()); $num = isset($_POST["num"]) ? $_POST["num"] : ""; $pseudo = isset($_POST["pseudo"]) ? $_POST["pseudo"] : ""; $motdepasse = isset($_POST["motdepasse"]) ? $_POST["motdepasse"] : ""; // requête SQL qui compte le nombre total d'enregistrement dans la table et qui //récupère tous les enregistrements $select = "SELECT * FROM Table ". "WHERE pseudo='".$pseudo."' AND motdepasse='".$motdepasse."'"; $result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() ); $total = mysql_num_rows($result); // si on a récupéré un résultat on l'affiche. if($total) { // lecture et affichage des résultats sur 2 colonnes, 1 résultat par ligne. while ($row = mysql_fetch_array($result)) { echo "<form action=\"maj_membres.php\" method=\"post\">\n"; //echo "<input type="hidden" name=\"num\" value=$num>\n"; echo "NOM : <input type=text name=\"nom\" value=\"" . $row["nom"] . "\"><br>\n"; echo "PRENOM : <input type=text name=\"prenom\" value=\"" . $row["prenom"] . "\"><br>\n"; echo "ADRESSE : <input type=text name=\"adresse\" value=\"" . $row["adresse"] . "\"><br>\n"; echo "<input type=submit value=\"Modifier\">"; echo "</form>"; } } else { echo "Désolé, mais cet utilisateur est inconnu<br>"; } mysql_close(); ?>
code mise à jour

Code : Tout sélectionner

<?php $BD_serveur = "localhost"; $BD_utilisateur = "root"; $BD_motDePasse = ""; $BD_base = "nombase"; $pseudo = isset($_POST["pseudo"]) ? $_POST["pseudo"] : ""; $motdepasse = isset($_POST["motdepasse"]) ? $_POST["motdepasse"] : ""; $nom = isset($_POST["nom"]) ? $_POST["nom"] : ""; $prenom = isset($_POST["prenom"]) ? $_POST["prenom"] : ""; $adresse = isset($_POST["adresse"]) ? $_POST["adresse"] : ""; 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 nom='".$_POST["nom"]."', prenom='".$_POST["prenom"]."', adresse='".$_POST["adresse"]."' WHERE pseudo='$pseudo' AND motdepasse='". $motdepasse ."'"; $result = mysql_query($requete) or die('Erreur SQL !<br>'.$requete.'<br>'.mysql_error()); if (!$result) { echo "La mise à jour de vos données a échouée. Essayez plus tard<br>"; } else { echo "Vos données ont été mises à jour<br>"; } mysql_close(); ?>

par Cyrano » 17 sept. 2005, 13:27

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

par Truc » 17 sept. 2005, 13:03

Salut, tu as certainement des problemes coté formulaire, si tu pouvais mettre le code histoire de voir les passages et nom des champs ?!

par 001cod10 » 17 sept. 2005, 12:39

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.

par Tho » 14 sept. 2005, 11:33

En même temps mysql aurait jamais accepté des champs qui n'existent pas. je sens que 001cod10 cache quelque chose...

par Cyrano » 14 sept. 2005, 11:19

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" :?:

par 001cod10 » 14 sept. 2005, 11:08

Vous m'aviez abandonné à mon sort. je vous en prie pas ça mon script ne marche toujours pas

par 001cod10 » 11 sept. 2005, 19:11

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

par HD » 11 sept. 2005, 18:45

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)

par Truc » 11 sept. 2005, 18:44

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 ." '";