je galère pour traiter la commande de l'update pour un formulaire simple sur quelques champs dans la base de donnée. J'avoue que c'est toujours difficile pour moi d'écrire les commandes, ca ne passe jamais du premier coup. et quand ça passe, après moult essais, je prends note mais je ne sais pas toujours pourquoi.
Pourriez vous m'aider pour mon update. Sois en prépare soit en execute ?
<link rel="stylesheet" type="text/css" href="style_inter_ins.css" />
<!--<p><a href="formulaire_inter.php">Retour aux formulaires de recherche et d'insertion</a></p>-->
<?php
// Connexion à la base de données
try
{
$bdd = new PDO('mysql:host=localhost;dbname=test_ocr;charset=utf8', 'root', 'root');
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
foreach ($_POST as $key => $value) {
echo "P".$key."=".$value."<br />";
}
// Modification
if (isset($_POST['modifier']))
{
//requete update sql
$id_saisine=$_POST['id_saisine'];
$req = $bdd-> prepare('UPDATE saisines SET numero_saisine = ?,
date_saisine = ?,
nom_intervenant = ?,
objet_saisine = ?,
statut = ?,
WHERE id_saisine = $id_saisine');
$req->execute(array($_POST['date_saisine'],
$_POST['nom_intervenant'],
$_POST['objet_saisine'],
$_POST['date_limite'],
$_POST['statut']));
echo 'La saisine '.$id_saisine.'a bien été modifiée !';
//or die(mysql_error());
include ("formulaire_inter.php");
}
?>
Le problème est qu'il me dit que la saisine a bien étét modifiée mais rien ne se passe dans la BDD.
Merci. Les erreurs ont été activées dès le début des cours sur OCR. Je vais tester en retirant la , et en essayant de modifier la concaténation.
EN fait ca ne change pas. D'ailleurs, je viens remarquer un truc :
Lorsque je clique sur un des resultat l'id de ma saisine est bien transmis via l'url et les champs du formulaire de modification sont bien incrémentés par les valeurs concernées. Mais dès que je modifie quelque chose et que j'envoie via le "modifier", la valeur "id" que je fais afficher par la premiere formule (celle du $key) et dans la phrase echo "la saisine n° a bien été modifiée... ben l'idée est à +10. Je m'explique, j'ai transmis via l'url l'id 9, les champs remplis correspondent bien à cet id et lorsque la nouvelle page s'affiche il me parle de la 19. qui de toutes les façons n'est pas modifiée dans la bdd.
En fait j'avais des fatal error et des mauvaise synthaxe avec des ' et de " qui semblaient mal placés sur certaines lignes mais maintenant il ne les affiche plus... pour autant la bdd n'en est pas plus modifiée.
<link rel="stylesheet" type="text/css" href="style_inter_ins.css" />
<!--<p><a href="formulaire_inter.php">Retour aux formulaires de recherche et d'insertion</a></p>-->
<?php
// Connexion à la base de données
try
{
$bdd = new PDO('mysql:host=localhost;dbname=test_ocr;charset=utf8', 'root', 'root');
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
C'est pas ça activer les Erreurs ? C'est ce qui était précisé sur les OCR en début du cours de Mathieu Nebra?
Excuse mais je ne comprends pas tout...
En ce qui concerne l'url, oui, l'id est transmis dans le formulaire par un get afin de remplir automatiquement les champs :
<?php
// Connexion à la base de données
try
{
$bdd = new PDO('mysql:host=localhost;dbname=test_ocr;charset=utf8', 'root', 'root');
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
// initialisation des variables POST
$id_saisine = "";
$numero_saisine = "";
$date_saisine = "";
$nom_intervenant = "";
$objet_saisine = "";
$date_limite = "";
$statut = "";
if (isset($_GET['id']))
{
$reponse= $bdd -> query("SELECT * FROM saisines WHERE id_saisine = ".$_GET['id']."");
while ($donnees = $reponse ->fetch())
{
echo "<h4> \"ID\" de la saisine à modifier : " .$donnees['id_saisine']. "</h4>";
$id_saisine = $donnees['id_saisine'];
//echo "<br>numero de la saisine : " .$donnees['numero_saisine']. "<br />";
$numero_saisine = $donnees['numero_saisine'];
//echo "<br>date de la saisine : " .$donnees['date_saisine']. "<br />";
$date_saisine = $donnees['date_saisine'];
//echo "<br>nom de l'intervenant : " .$donnees['nom_intervenant']. "<br />";
$nom_intervenant = $donnees['nom_intervenant'];
//echo "<br>objet : " .$donnees['objet_saisine']. "<br />";
$objet_saisine = $donnees['objet_saisine'];
//echo "<br>date de réponse attendue : " .$donnees['date_limite']. "<br />";
$date_limite = $donnees['date_limite'];
//echo "<br>statut de la saisine : " .$donnees['statut']. "<br />";
$statut = $donnees['statut'];
if(strlen($donnees['piece_jointe'])>0)
{
echo "<a href='uploads/".$donnees['piece_jointe']."'class=id_formulaire target='_blank'>";
echo "<img src='images/pj.png' width='2%'/>";
echo "</a>";
}
else
{echo "- Aucune pièce-jointe liée à cette saisine -";} ;
}
}
?>
<fieldset>
<h3>Inscrivez ici les éléments qui composent votre nouvelle saisine </h3>
<!--<p> <h2>Inscrivez ici les éléments qui composent votre nouvelle saisine <h2></p>-->
<form method="post" action="req_modif_inter.php" ENCTYPE="multipart/form-data">
<input type="hidden" name="id_saisine" value="1<?php echo $id_saisine; ?>"/><label for= "id_saisine"></label>
<input type="text" name="numero_saisine" placeholder="numéro de saisine" required value="<?php echo $numero_saisine; ?>"/><label for= "numero_saisine"></label>
<input type="date" name="date_saisine" placeholder="date de saisine" required value="<?php echo $date_saisine; ?>"/><label for= "date_saisine"></label>
<input type="text" name="nom_intervenant" placeholder="nom de l'intervenant" required value="<?php echo $nom_intervenant; ?>"/><label for= "nom_intervenant"></label>
<input type="text" name="objet_saisine" class= "objet_saisine" placeholder="objet de la saisine" requiered value="<?php echo $objet_saisine; ?>"/><label for= "objet_saisine" ></label>
<input type="date" name="date_limite" placeholder="numéro limite de réponse" value="<?php echo $date_limite; ?>"><label for= "date_limite" /></label><br />
<div class="div1"><h5>Indiquez le statut de votre saisine :</h5><br />
<input type="radio" name="statut" id="en_cours" value="en_cours"<?php
if ($statut == "en_cours") { echo "checked=checked"; }
?>/> <label for="en_cours">En Cours</label><br />
<input type="radio" name="statut" id="waiting_4" value="attente" <?php
if ($statut == "attente") { echo "checked=checked"; }
?>/> <label for="waiting_4">En attente d'éléments</label><br />
<input type="radio" name="statut" id="end_saisine" value="traite" <?php
if ($statut == "traite") { echo "checked=checked"; }
?>/> <label for="end_saisine">Traité</label>
</div>
</fieldset>
<input class="button" type="submit" value="modifier" name="modifier" />
<!--<input class="button" type="reset" value="Réinitialiser"/>-->
</form>
Et ensuite mon formulaire _POST vers ma requete PHP... qui du coup ne fonctionne pas ;-)
En fait j'avais des fatal error et des mauvaise synthaxe avec des ' et de " qui semblaient mal placés sur certaines lignes mais maintenant il ne les affiche plus... pour autant la bdd n'en est pas plus modifiée.
J'avais un problème similaire sur un formulaire d'inscription et aucune erreur ne s'affichait, pour ma part l'erreur venait de ma table dans ma BDD vérifie bien si tout correspond parfaitement et n'oublie pas l'AUTO-INCREMENT pour les id.
la bdd est bonne. je suis dessus depuis une dizaine de jours et jouant avec les requetes de mon formulaires. Je peux insérer, rechercher, visualiser mais en ce qui concerne la modification... nada.
Est-ce que tu vois quelque chose dans mon code qui bloque ? Si je passe en direct par execute ?
Modificatif 5h35:
Bonjour à tous. Ca y est ca fonctionne. En ce qui concerne le +10 j'au re-épluché mon code de formulaire et dans le champs qui devait récupérer les données il y a avait un 1 qui trainait.
Ensuite pleine d'espoir j'ai fait quelques modifs dans la commande de l'update et miracle ça fonctionne.
Je le laisse au cas où si ça peut aider quelqu'un ou si quelqu'un souhaite me le modifier ...
Merci de votre patience.
$id_saisine=$_POST['id_saisine'];
if (isset($_POST['modifier']))
{
//requete update sql
$req = $bdd-> prepare("UPDATE saisines SET numero_saisine = ?,
date_saisine = ?,
nom_intervenant = ?,
objet_saisine = ?,
date_saisine = ?,
statut = ?
WHERE id_saisine = ".$id_saisine."");
$req->execute(array($_POST['numero_saisine'],
$_POST['date_saisine'],
$_POST['nom_intervenant'],
$_POST['objet_saisine'],
$_POST['date_limite'],
$_POST['statut']));
echo "La saisine ".$id_saisine."a bien été modifiée !";
include ("formulaire_inter.php");
}
- Edité par MélissaWillemin 24 mai 2018 à 5:39:08
UPDATE une bdd via un formulaire
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Activer les erreurs PDO / (julp) htmlspecialchars / FAQ PHP / Pas d'aide par MP