Requête UPDATE ajoute des entrées [Résolu/Fermé]

Signaler
Messages postés
1139
Date d'inscription
jeudi 13 septembre 2012
Statut
Membre
Dernière intervention
25 mai 2021
-
Messages postés
1139
Date d'inscription
jeudi 13 septembre 2012
Statut
Membre
Dernière intervention
25 mai 2021
-
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

Messages postés
32944
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
12 juin 2021
3 557
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
Messages postés
1139
Date d'inscription
jeudi 13 septembre 2012
Statut
Membre
Dernière intervention
25 mai 2021
99
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
Messages postés
32944
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
12 juin 2021
3 557
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); 

Messages postés
1139
Date d'inscription
jeudi 13 septembre 2012
Statut
Membre
Dernière intervention
25 mai 2021
99
Merci ça marche bien.