Modifier table
Résolu
papyclic
Messages postés
446
Date d'inscription
Statut
Membre
Dernière intervention
-
papyclic Messages postés 446 Date d'inscription Statut Membre Dernière intervention -
papyclic Messages postés 446 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Voilà je ne comprends pas pourquoi mes modifications de table SQL ne fonctionne pas.
Pouvez-vous s'ils vous plait m'aider un petit peu à essayer de résoudre mon soucis.
Au niveau des INSERT il n'y a pas de problème simplement sur le UPDATE où le soucis
Voici ce que j'ai fait pour le moment.
Merci vraiment de me donner vos avis.
La class avec ses méthodes
les appels aux fonctions
simplement 1 input de mon formulaire dans le soucis de ne pas alourdir la page
Merci beaucoup
Voilà je ne comprends pas pourquoi mes modifications de table SQL ne fonctionne pas.
Pouvez-vous s'ils vous plait m'aider un petit peu à essayer de résoudre mon soucis.
Au niveau des INSERT il n'y a pas de problème simplement sur le UPDATE où le soucis
Voici ce que j'ai fait pour le moment.
Merci vraiment de me donner vos avis.
La class avec ses méthodes
class Gestion_Sortie_class { private $id_calendrier; private $date_sortie; private $lieu_sortie; private $objet_sortie; private $rdv_sortie; private $bdd; public function __construct($id_calendrier, $date_sortie, $lieu_sortie, $objet_sortie, $rdv_sortie) { $this->id_calendrier = $id_calendrier; $this->date_sortie = $date_sortie; $this->lieu_sortie = $lieu_sortie; $this->objet_sortie = $objet_sortie; $this->rdv_sortie = $rdv_sortie; $this->bdd = bdd(); } public function DateSortie() { $sql = "SELECT * FROM tb_calendrier WHERE id_calendrier = :id_calendrier"; $requete = $this->bdd->prepare($sql); $requete->execute(array( 'id_calendrier' => $this->id_calendrier, )); $donnees = $requete->fetch(); } public function ModifDateSortie() { $sql = "UPDATE tb_calendrier SET date_sortie = :date_sortie, lieu_sortie = :lieu_sortie, objet_sortie = :objet_sortie, rdv_sortie = :rdv_sortie WHERE id_calendrier = :id_calendrier"; $requete = $this->bdd->prepare($sql); $requete->execute(array( 'id_calendrier' => $this->id_calendrier, 'date_sortie' => $this->date_sortie, 'lieu_sortie' => $this->lieu_sortie, 'objet_sortie' => $this->objet_sortie, 'rdv_sortie' => $this->rdv_sortie, )); return 'success'; } }
les appels aux fonctions
if(isset($_POST['action'])) { $id_calendrier = isset($_POST['id_calendrier']) ? Security::clean($_POST['id_calendrier']) : ''; $date_sortie = isset($_POST['date_sortie']) ? Security::clean($_POST['date_sortie']) : ''; $lieu_sortie = isset($_POST['lieu_sortie']) ? Security::clean($_POST['lieu_sortie']) : ''; $objet_sortie = isset($_POST['objet_sortie']) ? Security::clean($_POST['objet_sortie']) : ''; $rdv_sortie = isset($_POST['rdv_sortie']) ? Security::clean($_POST['rdv_sortie']) : ''; $sortie = new Gestion_Sortie_class($id_calendrier, $date_sortie, $lieu_sortie, $objet_sortie, $rdv_sortie); $verif = $sortie->DateSortie(); if($verif == 'success') { if($sortie->ModifDateSortie()) { $erreur[] = "L'enregistrement c'est bien effectué"; } else { $erreur[] = "Une erreur est survenue"; } } else { $erreur[] = $verif; } } if (isset($erreur)) { echo output_errors($erreur); }
simplement 1 input de mon formulaire dans le soucis de ne pas alourdir la page
<td width="20%">Date de la sortie :</td> <td width="30%"><input name="date_sortie" id="date_sortie" class="ajout_date" size="30" type="text" value="<?php echo isset($date_sortie) ? $date_sortie : ''; ?>" /></td>
Merci beaucoup
A voir également:
- Modifier table
- Modifier dns - Guide
- Table ascii - Guide
- Table des matières word - Guide
- Modifier liste déroulante excel - Guide
- Modifier story facebook - Guide
16 réponses
Bonjour
Si parmi vous quelqu'un pouurai juste essayer de m'aider à résoudre mon problème.
Je souhaiterai pouvoir modifier mes données SQL.
J'ai ma fonction UPDATE qui devrait aller pourtant.
Merci de votre aide.
Si parmi vous quelqu'un pouurai juste essayer de m'aider à résoudre mon problème.
Je souhaiterai pouvoir modifier mes données SQL.
J'ai ma fonction UPDATE qui devrait aller pourtant.
Merci de votre aide.
Bonjour
Je suis toujours avec mon soucis.
En fait si je ne met pas le WHERE les modifications ce font bien mais sur toutes les entrée ce qui est normal.
Mais pourquoi avec le WHERE aucune modification ne se fait.
Je vous redonne mes fonctions si quelqu'un pourrais éventuellement me donner des pistes.
Je vous remercie
Voici ma class
Mon appel aux fonctions
Je suis toujours avec mon soucis.
En fait si je ne met pas le WHERE les modifications ce font bien mais sur toutes les entrée ce qui est normal.
Mais pourquoi avec le WHERE aucune modification ne se fait.
Je vous redonne mes fonctions si quelqu'un pourrais éventuellement me donner des pistes.
Je vous remercie
Voici ma class
class Gestion_Sortie_class { private $id_calendrier; private $date_sortie; private $lieu_sortie; private $objet_sortie; private $rdv_sortie; private $bdd; public function __construct($id_calendrier, $date_sortie, $lieu_sortie, $objet_sortie, $rdv_sortie) { $this->id_calendrier = $id_calendrier; $this->date_sortie = $date_sortie; $this->lieu_sortie = $lieu_sortie; $this->objet_sortie = $objet_sortie; $this->rdv_sortie = $rdv_sortie; $this->bdd = bdd(); } public function ModifDateSortie() { $sql = "UPDATE tb_calendrier SET date_sortie = :date_sortie, lieu_sortie = :lieu_sortie, objet_sortie = :objet_sortie, rdv_sortie = :rdv_sortie WHERE id_calendrier = :id_calendrier"; $requete = $this->bdd->prepare($sql); $requete->execute(array( ':id_calendrier' => $this->id_calendrier, ':date_sortie' => $this->date_sortie, ':lieu_sortie' => $this->lieu_sortie, ':objet_sortie' => $this->objet_sortie, ':rdv_sortie' => $this->rdv_sortie, )); return 'success'; } }
Mon appel aux fonctions
if(isset($_POST['action'])) { $id_calendrier = isset($_POST['id_calendrier']) ? $_POST['id_calendrier'] : ''; $date_sortie = isset($_POST['date_sortie']) ? Security::clean($_POST['date_sortie']) : ''; $lieu_sortie = isset($_POST['lieu_sortie']) ? Security::clean($_POST['lieu_sortie']) : ''; $objet_sortie = isset($_POST['objet_sortie']) ? Security::clean($_POST['objet_sortie']) : ''; $rdv_sortie = isset($_POST['rdv_sortie']) ? Security::clean($_POST['rdv_sortie']) : ''; $inscription = new Gestion_Sortie_class($id_calendrier, $date_sortie, $lieu_sortie, $objet_sortie, $rdv_sortie); $verif = $inscription->ModifDateSortie(); if($verif == 'success') { $erreur[] = "Vos modifications ont été changé avec succès."; } } if (isset($erreur)) { echo output_errors($erreur); }
Salut,
Dans ta connexion à la bdd, as tu activé le rapport d'erreur PDO pour voir si tu avais une erreur sql ?
Si tu n'as pas d'erreur, il semblerait que tu n'as tout simplement pas de lignes dans ta bdd qui correspondent à la condition de la clause where. Vérifie la valeur du paramètre :id_calendrier.
D'ailleurs tu récupères cette valeur depuis un $_POST['id_calendrier'] mais ce champs n'est pas présent dans ton formulaire.
Bonne journée
Dans ta connexion à la bdd, as tu activé le rapport d'erreur PDO pour voir si tu avais une erreur sql ?
Si tu n'as pas d'erreur, il semblerait que tu n'as tout simplement pas de lignes dans ta bdd qui correspondent à la condition de la clause where. Vérifie la valeur du paramètre :id_calendrier.
D'ailleurs tu récupères cette valeur depuis un $_POST['id_calendrier'] mais ce champs n'est pas présent dans ton formulaire.
Bonne journée
bonjour
Merci pour ta réponse.
En fait je n'ai aucune erreur SQL lorsque je modifie ça passe les verif puisque ça me met mais pas de modif de fait.
si j'ai bien vérifié je fait un INSERT je vérifie dans ma BDD et ensuite j'essaie de faire un UPDATE.
Après je ne comprends plus pourtant j'ai analysé mon code mais quelque chose m'échappe.
j'ai fait un copié/coller de mon entrée de ma BDD
Si tu peux m'aider, voir me donner encore quelques indices peut-être petità petit je vais y arriver.
Merci
Merci pour ta réponse.
En fait je n'ai aucune erreur SQL lorsque je modifie ça passe les verif puisque ça me met mais pas de modif de fait.
$erreur[] = "Vos modifications ont été changé avec succès."
si j'ai bien vérifié je fait un INSERT je vérifie dans ma BDD et ensuite j'essaie de faire un UPDATE.
Après je ne comprends plus pourtant j'ai analysé mon code mais quelque chose m'échappe.
Modifier Effacer 27 Jeudi 26 Février 2015 Cruet Fête 0 H : 00
j'ai fait un copié/coller de mon entrée de ma BDD
Si tu peux m'aider, voir me donner encore quelques indices peut-être petità petit je vais y arriver.
Merci
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
juste pour info
Comme je le disais j'ai dans ma BDD 3 entrées j'ai enlevé le WHERE et id_calendrier dans ma class
et toutes les entrée ont été modifiée.
Comme je le disais j'ai dans ma BDD 3 entrées j'ai enlevé le WHERE et id_calendrier dans ma class
et toutes les entrée ont été modifiée.
Pour les erreurs sql ta vérification n'est pas correcte car ta méthode ModifDateSortie() retourne dans tous les cas la valeur 'success', même en cas d'erreur.
Si tu veux vérifier la bonne exécution de ta requête, il suffit de récupérer le résultat de la méthode $requete->execute().
Cette fonction retourne TRUE en cas de succès ou FALSE si une erreur survient.
Soit tout simplement :
// dans Gestion_Sortie_class
Puisque tu utilises la POO, il faudrait idéalement utiliser les Exceptions pour la gestion des erreurs PDO. Plus d'info : https://www.php.net/manual/fr/pdo.error-handling.php
As tu vérifier la valeur de $_POST['id_calendrier'] ?
Si tu veux vérifier la bonne exécution de ta requête, il suffit de récupérer le résultat de la méthode $requete->execute().
Cette fonction retourne TRUE en cas de succès ou FALSE si une erreur survient.
Soit tout simplement :
// dans Gestion_Sortie_class
public function ModifDateSortie() { $sql = "UPDATE tb_calendrier SET date_sortie = :date_sortie, lieu_sortie = :lieu_sortie, objet_sortie = :objet_sortie, rdv_sortie = :rdv_sortie WHERE id_calendrier = :id_calendrier"; $requete = $this->bdd->prepare($sql); $success = $requete->execute(array( ':id_calendrier' => $this->id_calendrier, ':date_sortie' => $this->date_sortie, ':lieu_sortie' => $this->lieu_sortie, ':objet_sortie' => $this->objet_sortie, ':rdv_sortie' => $this->rdv_sortie, )); if (!$success) { echo "\nPDOStatement::errorInfo():\n"; $arr = $sth->errorInfo(); print_r($arr); } return $success; }
Puisque tu utilises la POO, il faudrait idéalement utiliser les Exceptions pour la gestion des erreurs PDO. Plus d'info : https://www.php.net/manual/fr/pdo.error-handling.php
As tu vérifier la valeur de $_POST['id_calendrier'] ?
if(isset($_POST['action'])) { var_dump($_POST['id_calendrier']);
Bonjour
Merci pour ton aide mais je suis un peu perdu en fait, je ne comprends pas.
J'ai vérifié la valeur "id_calendrier" ça me retourne que cette variable n' est pas définit
et puis l'erreur print_r dans la class que tu m'a envoyé me retourne NULL
Peux tu encore m'aider s'il te plait.
Merci infiniment de ton aide, j'aurai tellement envie de pouvoir mettre mon site en ligne.
Merci pour ton aide mais je suis un peu perdu en fait, je ne comprends pas.
J'ai vérifié la valeur "id_calendrier" ça me retourne que cette variable n' est pas définit
Notice: Undefined index: id_calendrier in C................
et puis l'erreur print_r dans la class que tu m'a envoyé me retourne NULL
Peux tu encore m'aider s'il te plait.
Merci infiniment de ton aide, j'aurai tellement envie de pouvoir mettre mon site en ligne.
je ne comprends pas pourquoi ça me retourne aucune errreur malgrès cette condition à l'exception des erreur de mon précédent post.
"Vos modifications ont été changé avec succès"
et malgès le message de succes aucune modification dans le BDD
Merci
if (!$success) { echo "\nPDOStatement::errorInfo():\n"; $arr = $sth->errorInfo(); print_r($arr); }
"Vos modifications ont été changé avec succès"
et malgès le message de succes aucune modification dans le BDD
Merci
Pour la gestion des erreurs PDO j'ai fait fait une erreur de copié/collé depuis la doc, tu dois utiliser ta variable $requete (l'instance de PDOStatement) à la place de $sth :
Pour l'erreur undefined index, celle-ci n'existe pas puisque tu n'as aucun champ name="id_calendrier" dans ton formulaire : la variable $_POST['id_calendrier'] ne peut donc pas exister.
if (!$success) { echo "\nPDOStatement::errorInfo():\n"; $arr = $requete->errorInfo(); print_r($arr); }
Pour l'erreur undefined index, celle-ci n'existe pas puisque tu n'as aucun champ name="id_calendrier" dans ton formulaire : la variable $_POST['id_calendrier'] ne peut donc pas exister.
Bonjour,
Alors voilà où j'en suis.
En fait j'ai remplacé $_POST par $_REQUEST tout à fait par hazard et mes modifs fonctionnent.
par
par contre peut tu me donner une explication pourquoi mes UPDATE fonctionnent avec REQUEST et non avec POST malgrès les tutos que j'ai du mal à comprendre.
Merci
Alors voilà où j'en suis.
En fait j'ai remplacé $_POST par $_REQUEST tout à fait par hazard et mes modifs fonctionnent.
if(isset($_POST['action'])) { $id_calendrier = isset($_POST['id_calendrier']) ? $_POST['id_calendrier'] : ''; $date_sortie = isset($_POST['date_sortie']) ? Security::clean($_POST['date_sortie']) : ''; $lieu_sortie = isset($_POST['lieu_sortie']) ? Security::clean($_POST['lieu_sortie']) : ''; $objet_sortie = isset($_POST['objet_sortie']) ? Security::clean($_POST['objet_sortie']) : ''; $rdv_sortie = isset($_POST['rdv_sortie']) ? Security::clean($_POST['rdv_sortie']) : '';
par
if(isset($_POST['action'])) { $id_calendrier = isset($_REQUEST['id_calendrier']) ? $_REQUEST['id_calendrier'] : ''; $date_sortie = isset($_POST['date_sortie']) ? Security::clean($_POST['date_sortie']) : ''; $lieu_sortie = isset($_POST['lieu_sortie']) ? Security::clean($_POST['lieu_sortie']) : ''; $objet_sortie = isset($_POST['objet_sortie']) ? Security::clean($_POST['objet_sortie']) : ''; $rdv_sortie = isset($_POST['rdv_sortie']) ? Security::clean($_POST['rdv_sortie']) : '';
par contre peut tu me donner une explication pourquoi mes UPDATE fonctionnent avec REQUEST et non avec POST malgrès les tutos que j'ai du mal à comprendre.
Merci
Le tableau $_REQUEST rassemble les tableaux $_POST, $_GET et $_COOKIE. Je suppose donc que tu transmets ton paramètre id_calendrier soit via l'URL, soit via un cookie.
Ne serait-il pas renseigné dans l'attribut action de ton formulaire ?
Exemple :
-> dans cet exemple, le paramètre date_sortie est envoyé en POST (champ du formulaire) alors que id_calendrier est envoyé en GET (dans l'URL)
Ne serait-il pas renseigné dans l'attribut action de ton formulaire ?
Exemple :
<form action="fichier.php?id_calendrier=3" method="post"> <input name="date_sortie" type="text" /> <input type="submit" value="Envoyer" /> </form>
-> dans cet exemple, le paramètre date_sortie est envoyé en POST (champ du formulaire) alors que id_calendrier est envoyé en GET (dans l'URL)
En fait mon formulaire est envoyé avec la méthode $_POST
mon lien qui affiche le formulaire
<form id="formulaire" action="index.php?body=modif_calendrier&type=admin" method="post">
mon lien qui affiche le formulaire
<a href="./index.php?body=modif_calendrier&type=admin&id_calendrier=<?php echo $donnees['id_calendrier'];?>">
J'aimerai te poser une dernière question s'il te plait.
Lorsque j'ouvre mon formulaire que les champs soient affiché avec les données insérée.
Voilà mon formulaire et ce que j'ai mis dans les VALUE mais aucun champ ne s'affiche.
Lorsque j'ouvre mon formulaire que les champs soient affiché avec les données insérée.
Voilà mon formulaire et ce que j'ai mis dans les VALUE mais aucun champ ne s'affiche.
if(isset($_POST['action'])) { $id_calendrier = isset($_REQUEST['id_calendrier']) ? $_REQUEST['id_calendrier'] : ''; $date_sortie = isset($_POST['date_sortie']) ? Security::clean($_POST['date_sortie']) : ''; $lieu_sortie = isset($_POST['lieu_sortie']) ? Security::clean($_POST['lieu_sortie']) : ''; $objet_sortie = isset($_POST['objet_sortie']) ? Security::clean($_POST['objet_sortie']) : ''; $rdv_sortie = isset($_POST['rdv_sortie']) ? Security::clean($_POST['rdv_sortie']) : ''; $calendrier = new Modif_Calendrier_class($id_calendrier, $date_sortie, $lieu_sortie, $objet_sortie, $rdv_sortie); $verif = $calendrier->VerifDateSortie(); if($verif == 'success') { if($calendrier->ModifDateSortie()) { $erreur[] = "Vos modifications ont été changé avec succès."; } else { $erreur[] = "Une erreur est survenue"; } } else { $erreur[] = $verif; } } if (isset($erreur)) { echo output_errors($erreur); } ?> <br/> <div id="ajout_date"> <form id="formulaire" action="index.php?body=modif_calendrier&type=admin" method="post"> <fieldset> <legend class="legend">Modifier une Date du Calendrier</legend><br/> <table cellpadding="0" cellspacing="3"> <tr> <td width="20%">Date de la sortie :</td> <td width="30%"><input name="date_sortie" id="date_sortie" class="ajout_date" size="30" type="text" value="<?php echo isset($date_sortie) ? $date_sortie : ''; ?>" /></td> </tr> <tr> <td width="20%">Lieu de la sortie :</td> <td width="30%"><input name="lieu_sortie" class="ajout_date" size="40" type="text" value="<?php echo isset($lieu_sortie) ? $lieu_sortie : ''; ?>" /></td> </tr> <td width="20%">Objet de la sortie :</td> <td width="30%"><input name="objet_sortie" class="ajout_date" size="40" type="text" value="<?php echo isset($objet_sortie) ? $objet_sortie : ''; ?>" /></td> </tr> </tr> </table> <input name="action" value="ajouter" type="hidden" /> <input type="submit" class="submit" value="Enregistrer"/> </fieldset> </form> </div>
Bonjour
Excuse moi encore de te déranger.
Voilà je souhaiterai pouvoir ré-afficher les données du formulaire pour pouvoir les modifier si besoin.
Donc les modifs fonctionnent c'est déjà ça lol...........
Alors voici le lien qui appel l'id_calendrier
avec ce lien j'accède également à mon formulaire qui se trouve dans la page modif_calendrier.php
Merci en tout cas si tu peux voir d'où la solution à ce problème.
Excuse moi encore de te déranger.
Voilà je souhaiterai pouvoir ré-afficher les données du formulaire pour pouvoir les modifier si besoin.
Donc les modifs fonctionnent c'est déjà ça lol...........
Alors voici le lien qui appel l'id_calendrier
<a href="./index.php?body=modif_calendrier&type=admin&id_calendrier=<?php echo $donnees['id_calendrier'];?>">
avec ce lien j'accède également à mon formulaire qui se trouve dans la page modif_calendrier.php
Merci en tout cas si tu peux voir d'où la solution à ce problème.
Le code de ton avant dernier message correspond au fichier modif_calendrier.php ?
Je ne vois pas de raison pour que les modifications fonctionnent mais pas l'affichage puisque tes variables $date_sortie, $lieu_sortie, etc.. ne sont pas altérées et devraient donc s'afficher correctement.
Il semble que ce ne soit pas ce code qui gère le traitement du formulaire, et/ou peut-être que tu effectues une redirection à la fin du traitement du formulaire ? (dans ce dernier cas, les paramètres POST n'existe donc plus)
Je ne vois pas de raison pour que les modifications fonctionnent mais pas l'affichage puisque tes variables $date_sortie, $lieu_sortie, etc.. ne sont pas altérées et devraient donc s'afficher correctement.
Il semble que ce ne soit pas ce code qui gère le traitement du formulaire, et/ou peut-être que tu effectues une redirection à la fin du traitement du formulaire ? (dans ce dernier cas, les paramètres POST n'existe donc plus)
Bonjour
oui effectivement c'est bien le fichier
modif_calendrier.php
Ensuite pour le traitement du formulaire j'ai le fichier
Modif_Calendrier_class.php
J'ai analysé ce que m'a suggéré mais je ne vois pas ce qui bloque l'affichage des valeurs du formulaire.
Peux tu y jeter un oeil s'il te plait, par contre j'ai juste ses deux fichiers mis à part le lien qui se trouve sur une autre page.
Et pour finir actuellement toutes les modifs fonctionnent bien j'ai fait des dizaines d'essai, j'ai plus que cette histoire d'affichage.
Merci vraiment si tu peux me sauver, je suis vraiment très curieux de savoir.
Merci encore
oui effectivement c'est bien le fichier
modif_calendrier.php
Ensuite pour le traitement du formulaire j'ai le fichier
Modif_Calendrier_class.php
class Modif_Calendrier_class { private $id_calendrier; private $date_sortie; private $lieu_sortie; private $objet_sortie; private $rdv_sortie; private $bdd; public function __construct($id_calendrier, $date_sortie, $lieu_sortie, $objet_sortie, $rdv_sortie) { $this->id_calendrier = $id_calendrier; $this->date_sortie = $date_sortie; $this->lieu_sortie = $lieu_sortie; $this->objet_sortie = $objet_sortie; $this->rdv_sortie = $rdv_sortie; $this->bdd = bdd(); } public function ChampsVide() { return(empty($this->date_sortie) || empty($this->lieu_sortie) || empty($this->objet_sortie)) ? true : false; } public function VerifCalendrier() { if($this->ChampsVide()) { $erreur = 'Veuillez remplir les 3 champs, Date, Lieu et Objet'; } else { $erreur = 'success'; } return $erreur; } public function ModifCalendrier() { $sql = "UPDATE tb_calendrier SET date_sortie = :date_sortie, lieu_sortie = :lieu_sortie, objet_sortie = :objet_sortie, rdv_sortie = :rdv_sortie WHERE id_calendrier = :id_calendrier"; $requete = $this->bdd->prepare($sql); $success = $requete->execute(array( ':id_calendrier' => $this->id_calendrier, ':date_sortie' => $this->date_sortie, ':lieu_sortie' => $this->lieu_sortie, ':objet_sortie' => $this->objet_sortie, ':rdv_sortie' => $this->rdv_sortie, )); return $success; } }
J'ai analysé ce que m'a suggéré mais je ne vois pas ce qui bloque l'affichage des valeurs du formulaire.
Peux tu y jeter un oeil s'il te plait, par contre j'ai juste ses deux fichiers mis à part le lien qui se trouve sur une autre page.
Et pour finir actuellement toutes les modifs fonctionnent bien j'ai fait des dizaines d'essai, j'ai plus que cette histoire d'affichage.
Merci vraiment si tu peux me sauver, je suis vraiment très curieux de savoir.
Merci encore