Requête UPDATE ajoute des entrées

Résolu
barale61 Messages postés 1126 Date d'inscription   Statut Membre Dernière intervention   -  
barale61 Messages postés 1126 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Ma requête ne doit pas être très bonne car au lieu de mettre à jour, elle ajoute une entrée. Je vous remercie de votre aide.

$reponse = $bdd->prepare('UPDATE sites SET nom = '.$nom.' , url = '.$url.' , dateCreation = '.$dateCreation.' , idTypeCms = '.$idTypeCms.' , dateMiseEnLigne = '.$dateMiseEnLigne.' , dateDerniereModif = '.$dateDernireModif.' WHERE sites.id='.$id.''); 


2 réponses

  1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
     
    Bonjour,
    Prends l'habitude de sortir la requête de son exécution.
    Penses aussi à l'encapsuler avec des doubles quotes.

    $sql = "UPDATE sites SET nom = '$nom' 
                            , url = '$url'
                            , dateCreation = '$dateCreation' 
                            , idTypeCms = '$idTypeCms' 
                            , dateMiseEnLigne = '$dateMiseEnLigne' 
                            , dateDerniereModif = '$dateDernireModif' 
                 WHERE sites.id='$id' ";
    $reponse = $bdd->prepare($sql);
    
    


    Cordialement,
    Jordane
    0
  2. barale61 Messages postés 1126 Date d'inscription   Statut Membre Dernière intervention   113
     
    Merci mais ça fonctionne toujours pas de cette façon:

    <?php include('connexion.php'); ?>
    <?php include('fonctions.php'); ?>
    <title>Formulaire ajout site</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
    <link href="style.css" rel="stylesheet" type="text/css" />
    <?php
    $nom = ( isset($_POST['nom']) )? $_POST['nom'] : ''; 
    $url = ( isset($_POST['url']) )? $_POST['url'] : ''; 
    $dateCreation = ( isset($_POST['dateCreation']) )? $_POST['dateCreation'] : ''; 
    $idTypeCms = ( isset($_POST['idTypeCms']) )? $_POST['idTypeCms'] : ''; 
    $dateMiseEnLigne = ( isset($_POST['dateMiseEnLigne']) )? $_POST['dateMiseEnLigne'] : ''; 
    $dateDerniereModif = ( isset($_POST['dateDerniereModif']) )? $_POST['dateDerniereModif'] : '';
    $nomCms = ( isset($_POST['idTypeCms']) )? $_POST['idTypeCms'] : '';
    
    if (isset($_POST['envoyer'])) {
        
    $req = $bdd->prepare('UPDATE sites SET nom = :nom,  url = :url, dateCreation = :dateCreation, idTypeCms = :idTypeCms, dateMiseEnLigne = :dateMiseEnLigne, dateDerniereModif = :dateDerniereModif WHERE id = :nom');
    $req->execute(array(
    	'nom' => $nom,
    	'url' => $url,
    	'dateCreation' => datefrus($dateCreation),
    	'idTypeCms' => $idTypeCms,
    	'dateMiseEnLigne' => datefrus($dateMiseEnLigne),
    	'dateDerniereModif' => datefrus($dateDerniereModif)
    	)); 
    // On ferme la requête avant d'en faire une autre
    $req->closeCursor();
    //print_r ($req);
    ?>
    <script langage="javascript">
        document.location.href="index.php"
    </script>
    <?php
    }
    else { echo '';
    }
    ?>
    <div align="left" id="fiche">
    			<h3>Formulaire modifier un site </h3>
        <div class="conteneur">
            <form action="modification.php" method="post" enctype="multipart/form-data" name="ajoutSite" id="ajoutSite">
            <p><label for "nom">Nom</label></p>
            <p><input type="text" value="<?php echo $_GET['nom']; ?>" required name="nom" id="nom" /></p>
            <p><label for "URL">URL</label></p>
            <p><input type="url" value="<?php echo $_GET['url']; ?>" name="url" id="url" /></p>
            <p><label for "dateCreation">Date de création</label></p>
            <p><input value="<?php echo $_GET['dateCreation']; ?>" style="width:100px" pattern="\d{1,2}/\d{1,2}/\d{4}" type="date" name="dateCreation" id="dateCreation" /></p>
            <p><label for "typeCms">Type de CMS</label></p>
            
            <!--DEBUT SELECTION DU TYPE DE CMS-->   
    <?php
    try
    {
    $reponse = $bdd->query('SELECT cms.nomCms
    FROM cms');
     ?> 
            <select name="idTypeCms" id="idTypeCms">
            <option selected="selected"><?php echo $_GET['nomCms']; ?></option>
            <?php
            while ($donnees = $reponse->fetch())
            {
            ?>
            <option value="<?php echo $donnees['nomCms']; ?>"><?php echo $donnees['nomCms']; ?></option>
      <?php
      }
     ?>
        </select>
     <?php
        $reponse->closeCursor();
    } 
    catch(Exception $e)
    {
        die('Erreur : '.$e->getMessage());
    }
    ?> 
            <!--FIN SELECTION DU TYPE DE CMS--> 
            <p><label for "dateMiseEnLigne">Date d'ajout</label></p>
            <p><input value="<?php echo $_GET['dateMiseEnLigne']; ?>" style="width:100px" pattern="\d{1,2}/\d{1,2}/\d{4}" type="date" name="dateMiseEnLigne" id="dateMiseEnLigne" /></p>
            <p><label for "dateDerniereModif">Date de modification</label></p>
            <p><input value="<?php echo $_GET['dateDerniereModif']; ?>" style="width:100px" pattern="\d{1,2}/\d{1,2}/\d{4}" type="date" name="dateDerniereModif" id="dateDerniereModif" /></p>
            <p> </p>
            <p><input type="submit" name="envoyer" id="envoyer" value="Envoyer" /></p>       
            </form>
        </div>
        <a href="index.php">Liste des sites</a>
    </div>coc
    
    0
    1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
       
      1 - Tu n'as pas tenu compte de ma remarque concernant la "séparation de la requête" avec son execution
      2 - As tu testé ta requête en direct dans ta BDD ?
      3 - Tes variables sont elles conformes à ce que tu attends ?

      $sql = " UPDATE sites 
                    SET nom = :nom
                      , url = :url
                      , dateCreation = :dateCreation
                      , idTypeCms = :idTypeCms
                      , dateMiseEnLigne = :dateMiseEnLigne
                      , dateDerniereModif = :dateDerniereModif 
                WHERE id = :nom ";
      $params = array( 'nom' => $nom,
                        'url' => $url,
                        'dateCreation' => datefrus($dateCreation),
                        'idTypeCms' => $idTypeCms,
                        'dateMiseEnLigne' => datefrus($dateMiseEnLigne),
                        'dateDerniereModif' => datefrus($dateDerniereModif)
                       );   
      
      // ----- Le temps des tests : ------------------//
      echo "<br> La requête est : <br>".$sql;
      echo "<br>Params  : <br>";
      print_r($params);
      //-------------------------------------------------------//
      $req = $bdd->prepare($sql);
      $req->execute($params); 
      
      
      0
    2. barale61 Messages postés 1126 Date d'inscription   Statut Membre Dernière intervention   113
       
      Merci ça marche bien.
      0