Modifier une table MySQL avec un formulaire

Résolu
Pascal-Jr -  
chico200987 Messages postés 856 Statut Membre -
Bonjour à tous.
Je voudrais modifier une table MySQL avec un formulaire.
En fait, j'ai un système d'annonce pour un site de moto où l'utilisateur met des motos à vendre.
Mon problème :
Je n'arrive pas à me servir de la fonction UPDATE (que j'ai trouvé après un peu de recherche).
Merci d'avance pour toutes vos réponses et votre patience.

3 réponses

Résumé de la discussion

Mettre à jour une ligne MySQL à partir d'un formulaire PHP via l'instruction UPDATE et en utilisant l'identifiant de l'annonce est le problème central abordé. Des solutions essentielles préconisent d'utiliser une requête préparée avec PDO et de lier tous les paramètres, y compris l'id, plutôt que de concaténer des valeurs dans la requête. La réponse recommandée montre notamment d'écrire UPDATE article SET modele=:modele, cylindree=:cylindree, km=:km, annee=:annee, prix=:prix, description=:description WHERE id = :id et d'exécuter avec un tableau associatif incluant 'id'. En cas d'erreur, il faut aussi vérifier la correspondance des noms de colonnes et des variables POST et éviter d'inclure directement l'id dans la requête SQL.

Généré automatiquement par IA
sur la base des meilleures réponses
  1. Pascal-Jr
     
    Il manque deux points, ce qui donne :
    <?php
    try
    {
    $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
    $bdd = new PDO('mysql:host=localhost;dbname=annonces' , 'root' , '' , $pdo_options);

    $id = $_GET['id'];
    $req = $bdd->prepare('UPDATE article SET modele=:modele, cylindree=:cylindree, km=:km, annee=:annee, prix=:prix, description=:description WHERE id = ' .$id .' ');
    $req->execute(array(
    'modele' => $_POST['modele'],
    'cylindree' => $_POST['cyl'],
    'km' => $_POST['km'],
    'annee' => $_POST['annee'],
    'prix' => $_POST['prix'],
    'description' => $_POST['description'],
    ));
    echo "L'annonce a bien été modifiée";
    }
    catch(Exception $e)
    {
    die('Erreur : '.$e->getMessage());
    }
    ?>
    7
    1. chico200987 Messages postés 856 Statut Membre 144
       
      GG vous avez reussi, sorry je m'etais absente :p
      0
  2. Vardok Messages postés 386 Statut Membre 133
     
    Salut,

    Tu code en php ?
    La syntaxe pour modifier une table est la suivante :
    UPDATE "nom de ta table" SET "nom de ta colonne" = [valeur]
    WHERE {condition}


    Pour inclure ceci en php tu dois utiliser la fonction $variable=mysql_query("ta requete sql")

    Pour plus de précision demande.
    1
    1. Pascal-Jr
       
      J'utilise PDO c'est plus sécurisé, le seul truc que je ne comprends pas c'est comment modifier plusieurs la fonction UPDATE avec plusieurs champ en même temps.
      Voici les champs que je voudrais modifier :
      -modele,
      -cylindree,
      -km,
      -annee,
      -prix,
      -description
      0
    2. Vardok Messages postés 386 Statut Membre 133
       
      Ta requete :
      UPDATE "nomDeTaTable" SET "modele" = 'motorola', "cylindree" = '150', "km" = '8000', "annee" = '2008', "prix" = '5000', "description" = 'la meilleur moto du monde qui va très vite :p'
      WHERE ta condition (par exemple WHERE "modele"='mototrola')
      0
    3. chico200987 Messages postés 856 Statut Membre 144
       
      Salut,

      Tout simplement quelque chose comme :

      UPDATE "nom de table"
      SET modele = "Peugeot 103", cylindree = 5, km = 9000, annee = 1990, prix = 50, description = "103 a jamais"
      WHERE {condition}
      
      0
    4. chico200987 Messages postés 856 Statut Membre 144
       
      Oh bah même pas drôle tu me devances :(
      0
    5. Pascal-Jr
       
      et avec le formulaire sais-tu ce que ça donnerai a peu près ?
      0
  3. Pascal-Jr
     
    Il manqué simplement deux points, ce qui donne :
    <?php
    try
    {
    $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
    $bdd = new PDO('mysql:host=localhost;dbname=annonces' , 'root' , '' , $pdo_options);

    $id = $_GET['id'];
    $req = $bdd->prepare('UPDATE article SET modele=:modele, cylindree=:cylindree, km=:km, annee=:annee, prix=:prix, description=:description WHERE id = ' .$id .' ');
    $req->execute(array(
    'modele' => $_POST['modele'],
    'cylindree' => $_POST['cyl'],
    'km' => $_POST['km'],
    'annee' => $_POST['annee'],
    'prix' => $_POST['prix'],
    'description' => $_POST['description'],
    ));
    echo "L'annonce a bien été modifiée";
    }
    catch(Exception $e)
    {
    die('Erreur : '.$e->getMessage());
    }
    ?>
    0
    1. Vardok Messages postés 386 Statut Membre 133
       
      Résolu alors ?

      Ps : fais un vote négatif sur ma première réponse pour que notre blablatage descende...
      Bonne continuation
      0
    2. Vardok Messages postés 386 Statut Membre 133
       
      NEGATIF (trois fois de suite pour avoir -1 maintenant) ! Ma première réponse n'est PAS intéressante donc il faut mettre ta réponse de 17h16 en avant pas les miennes !
      0
    3. Pascal-Jr
       
      Erf ... j'ai fait une connerie.
      Il faudrait que quelqu'un vote en plus
      0
    4. Vardok Messages postés 386 Statut Membre 133
       
      Nan tu peux encore voter négatif sur moi normalement.
      Je t'ai encore augmenté de 1 avec un proxy ^^
      0
    5. Pascal-Jr
       
      gg ^^
      0