Mise à jour requète UPDATE
Résolu/Fermé
LaChaux78
Messages postés
581
Date d'inscription
lundi 25 juillet 2016
Statut
Membre
Dernière intervention
21 novembre 2024
-
8 sept. 2018 à 11:16
LaChaux78 Messages postés 581 Date d'inscription lundi 25 juillet 2016 Statut Membre Dernière intervention 21 novembre 2024 - 10 sept. 2018 à 20:43
LaChaux78 Messages postés 581 Date d'inscription lundi 25 juillet 2016 Statut Membre Dernière intervention 21 novembre 2024 - 10 sept. 2018 à 20:43
A voir également:
- Mise à jour requète UPDATE
- Mise a jour chrome - Accueil - Applications & Logiciels
- Mise a jour windows 10 - Accueil - Mise à jour
- Mise a jour chromecast - Accueil - Guide TV et vidéo
- Mise a jour kindle - Guide
- Mise a jour windows 7 - Accueil - Mise à jour
12 réponses
jordane45
Messages postés
38371
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
7 janvier 2025
4 722
8 sept. 2018 à 12:31
8 sept. 2018 à 12:31
Bonjour,
Tu es dans le forum mysql.... donc .. seule la requête nous interesse... pas ton code php.
Autrement dit :
Donc.. tu prends cette requête, tu remplaces les différentes variables $condition et toutes les variable :xxxx
par leurs valeurs respectives (celles de ton array) .... et tu la testes DIRECTEMENT dans ta bdd via PHPMYADMIN
Là.. tu devrais voir ce qui bloque.
NB: Je pense voir déjà un souci...... les DATES.
Visiblement tu essayes de les envoyer en format "français" ( d/m/Y )... sauf que les champs date/datetime/timestamp des bdd doivent être au format Y-m-d
Il te faut donc convertir tes dates avant de vouloir les insérer dans la bdd....
Tu es dans le forum mysql.... donc .. seule la requête nous interesse... pas ton code php.
Autrement dit :
UPDATE cdc_gerer SET idpers = :idpers , idfonc = :idfonc , ddebut = :ddebut , dfin = :dfin $condition
Donc.. tu prends cette requête, tu remplaces les différentes variables $condition et toutes les variable :xxxx
par leurs valeurs respectives (celles de ton array) .... et tu la testes DIRECTEMENT dans ta bdd via PHPMYADMIN
Là.. tu devrais voir ce qui bloque.
NB: Je pense voir déjà un souci...... les DATES.
Visiblement tu essayes de les envoyer en format "français" ( d/m/Y )... sauf que les champs date/datetime/timestamp des bdd doivent être au format Y-m-d
Il te faut donc convertir tes dates avant de vouloir les insérer dans la bdd....
LaChaux78
Messages postés
581
Date d'inscription
lundi 25 juillet 2016
Statut
Membre
Dernière intervention
21 novembre 2024
32
8 sept. 2018 à 17:23
8 sept. 2018 à 17:23
Bonjour et merci pour ton aide. J'ai essayé de tester ma requète UPDATE dans phpmyadmin, je n'ai pas trop l'habitude de tester mes requète avec phpmyadmin. De ce fait cela me retourne aucune modification et aucune erreur. Voici ce que j'ai fait.
Merci.
UPDATE cdc_gerer SET idpers = 4, idfonc = 8, ddebut = 2016-09-01, dfin = 2018-08-31 WHERE (idpers=4 AND idfonc=8 AND ddebut= 2016-09-01 AND dfin= 0000-00-00); 0 ligne affectée. (traité en 0.0007 seconde(s))
Merci.
yg_be
Messages postés
23417
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
5 janvier 2025
1 557
8 sept. 2018 à 17:48
8 sept. 2018 à 17:48
bonjour,
connais-tu SQL? la requête que tu testes n'a aucun sens, ni aucun rapport avec ton programme.
tu as testé une requete UPDATE, mais ce n'est pas la requête que ton code php exécute.
je te suggère d'afficher les variables qui servent à ta requête de modification:
puis de construire une requête UPDATE qui est identique à celle que ton code exécute.
connais-tu SQL? la requête que tu testes n'a aucun sens, ni aucun rapport avec ton programme.
tu as testé une requete UPDATE, mais ce n'est pas la requête que ton code php exécute.
je te suggère d'afficher les variables qui servent à ta requête de modification:
// Construction de la requete de modification $sql = "UPDATE cdc_gerer SET idpers = :idpers, idfonc = :idfonc, ddebut = :ddebut, dfin = :dfin $condition"; $datas = array('idpers' => $idpers, 'idfonc' => $idfonc, 'ddebut' => $ddebut, 'dfin' => $dfin); // afficher $sql et $data $result = executeQuery($sql,$datas);
puis de construire une requête UPDATE qui est identique à celle que ton code exécute.
LaChaux78
Messages postés
581
Date d'inscription
lundi 25 juillet 2016
Statut
Membre
Dernière intervention
21 novembre 2024
32
8 sept. 2018 à 19:42
8 sept. 2018 à 19:42
Bonjour,
Malheureusement je suis obligé de revenir vers vous. J'ai un peu du mal à comprendre vox explications ne m'en voulez pas. J'ai analysé ma requète UPDATE et je l'ai comparée avec une autre page qui corresponds étrangement à celle là et elle fonctionne bien.
Pouvez-vous me donner encore quelques explications s'ils vous plait.
A propos de mes dates que Jordane45 me parlait en fait lorsque je déclare mes variables j'ai une fonction qui me retourne la date dans un autre format : JJ/MM/AAAA => AAAA-MM-JJ qui se trouve dans mon fichier init que je déclare en début de page. "require("libs/init.php"); "
Je vous remercie.
Malheureusement je suis obligé de revenir vers vous. J'ai un peu du mal à comprendre vox explications ne m'en voulez pas. J'ai analysé ma requète UPDATE et je l'ai comparée avec une autre page qui corresponds étrangement à celle là et elle fonctionne bien.
Pouvez-vous me donner encore quelques explications s'ils vous plait.
A propos de mes dates que Jordane45 me parlait en fait lorsque je déclare mes variables j'ai une fonction qui me retourne la date dans un autre format : JJ/MM/AAAA => AAAA-MM-JJ qui se trouve dans mon fichier init que je déclare en début de page. "require("libs/init.php"); "
Je vous remercie.
jordane45
Messages postés
38371
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
7 janvier 2025
4 722
8 sept. 2018 à 20:18
8 sept. 2018 à 20:18
Lorsque l'on ecrit une requête SQL dans PHPmyadmin certaines valeurs doivent absolument être mises entre quotes.
Dans l'idéal... tu les mets tous ainsi... comme ça tu n'as pas à réfléchir.
Donc, ta requête écrite correctement donnerait
Si cette requête ne met toujours rien à jour... fais donc un
et regarde si ça te retourne quelque chose ou non....
Si c'est non... c'est normal que ça ne mette rien à jour... les conditions ne trouvant aucune ligne.
Si le select te retourne bien un résultat... l'update doit obligatoirement fonctionner...
Si la requête d'UPDATE fonctionne dans phpmyadmin.. il faudra alors qu'on se penche sur ton code php.
Au passage (quand on en sera là....) il serait bien que tu nous redonnes le contenu de ta fonction executeQuery
Dans l'idéal... tu les mets tous ainsi... comme ça tu n'as pas à réfléchir.
Donc, ta requête écrite correctement donnerait
UPDATE cdc_gerer SET idpers = 4 , idfonc = 8 , ddebut = '2016-09-01' , dfin = '2018-08-31' WHERE idpers='4' AND idfonc= '8' AND ddebut= '2016-09-01' AND dfin= '0000-00-00'
Si cette requête ne met toujours rien à jour... fais donc un
SELECT * FROM cdc_gerer WHERE idpers='4' AND idfonc= '8' AND ddebut= '2016-09-01' AND dfin= '0000-00-00'
et regarde si ça te retourne quelque chose ou non....
Si c'est non... c'est normal que ça ne mette rien à jour... les conditions ne trouvant aucune ligne.
Si le select te retourne bien un résultat... l'update doit obligatoirement fonctionner...
Si la requête d'UPDATE fonctionne dans phpmyadmin.. il faudra alors qu'on se penche sur ton code php.
Au passage (quand on en sera là....) il serait bien que tu nous redonnes le contenu de ta fonction executeQuery
LaChaux78
Messages postés
581
Date d'inscription
lundi 25 juillet 2016
Statut
Membre
Dernière intervention
21 novembre 2024
32
8 sept. 2018 à 20:40
8 sept. 2018 à 20:40
Bonjour merci bonne nouvelle ma requète dans phpmyadmin a bien fonctionné donc ne pas oublié de mettre les quotes je m'en souviendrais.
Maintenant je te donne ma fonction executeQuery.
Merci de ton aide je regarde chaque ligne de code chaque virgule je ne vois pas ce qui cloche.
Maintenant je te donne ma fonction executeQuery.
Merci de ton aide je regarde chaque ligne de code chaque virgule je ne vois pas ce qui cloche.
function executeQuery($sql,$datas = NULL) { $bdd = bdd(); //exécution de la requête try { $requete = $bdd->prepare($sql); $requete->execute($datas); } catch(Exception $e) { // en cas d'erreur : echo " Erreur ! ".$e->getMessage(); exit(0); // en cas d'erreur.. arrête le script ! } return $requete; }
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
jordane45
Messages postés
38371
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
7 janvier 2025
4 722
8 sept. 2018 à 21:02
8 sept. 2018 à 21:02
Que donne ceci
// Constrution de la condition de modification ($oi = old ID) $oi = explode(",", $oldid); // Tableau des identifiants //récupération PROPRE des variable AVANT de les utiliser $oldId = !empty($oi[0]) ? $oi[0] : NULL ; $oldidfonc = !empty($oi[1]) ? $oi[1] : NULL ; $oldddebut = !empty($oi[2]) ? $oi[2] : NULL ; $datas = array(':idpers' => $idpers, ':idfonc' => $idfonc, ':ddebut' => $ddebut, ':dfin' => $dfin); //si il y a des valeurs dans $oi, on initialise le where $strWhere = !empty($oi) ? " WHERE " . ""; $cond = ""; // si il y une valeur dans oldId if( $oldId ) { $cond .= " idpers = :oldId "; // on complete le where $datas[':oldId'] = $oldId; } // si il y une valeur dans oldidfonc if( $oldidfonc ) { $cond = !empty($cond) ? " AND " : ""; $strWhere .= $oldId . " idfonc = :oldidfonc "; $datas[':oldidfonc'] = $oldidfonc; } // si il y une valeur dans oldddebut if( $oldddebut ) { $cond = !empty($cond) ? " AND " : ""; $strWhere .= $cond . " ddebut = :oldddebut "; $datas[':oldddebut'] = $oldddebut; } $strWhere .= $cond; // on complete le where avec les différentes conditions // Construction de la requete de modification $sql = "UPDATE cdc_gerer SET idpers = :idpers, idfonc = :idfonc, ddebut = :ddebut, dfin = :dfin $strWhere"; $result = executeQuery($sql,$datas); //-----------------------------// // le temps des tests : //-----------------------------// echo " <br> Requete SQL = ".$sql; echo "<br> Les datas : <pre>"; print_r($datas); echo "</pre>"; echo "<br>Resultat de la requête :" . $result; echo "<br>Nombre de lignes modifiées par la requête : " . $result->rowCount(); //-----------------------------// $typenr = "modififiée"; $reqmod = $sql; $sql = "SELECT idfonc,fonction FROM cdc_fonctions WHERE idfonc = :idfonc"; $datas = array(':idfonc' => $idfonc); $result = executeQuery($sql,$datas); $donnees = $result->fetch();
LaChaux78
Messages postés
581
Date d'inscription
lundi 25 juillet 2016
Statut
Membre
Dernière intervention
21 novembre 2024
32
8 sept. 2018 à 22:25
8 sept. 2018 à 22:25
Je pense qu'il y a un soucis avec cette ligne? car rien ne s'affiche.
//si il y a des valeurs dans $oi, on initialise le where $strWhere = !empty($oi) ? " WHERE " . "";
yg_be
Messages postés
23417
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
5 janvier 2025
1 557
Modifié le 8 sept. 2018 à 23:00
Modifié le 8 sept. 2018 à 23:00
je suis très perplexe en voyant to utilisation de oldid: qu'essais-tu de faire? veux-tu vraiment permettre de modifier le champ idpers d'un enregistrement?
dés le départ, tu nous as montré
dés le départ, tu nous as montré
[oldid] =>, donc que que l'UPDATE n'allait rien faire.
LaChaux78
Messages postés
581
Date d'inscription
lundi 25 juillet 2016
Statut
Membre
Dernière intervention
21 novembre 2024
32
8 sept. 2018 à 23:54
8 sept. 2018 à 23:54
oui c'est bien ça. modifier les champs idpers, idfonc, ddebut qui correspondent à $oldid.
jordane45
Messages postés
38371
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
7 janvier 2025
4 722
9 sept. 2018 à 01:16
9 sept. 2018 à 01:16
As tu testé ce que je t'ai donné ?
jordane45
Messages postés
38371
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
7 janvier 2025
4 722
9 sept. 2018 à 01:40
9 sept. 2018 à 01:40
Montre nous également le code de ton formulaire... si ta variable oldid est vide..Normal que ça ne mette rien à jour....
yg_be
Messages postés
23417
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
5 janvier 2025
1 557
9 sept. 2018 à 10:56
9 sept. 2018 à 10:56
veux-tu vraiment permettre à tout le monde de modifier tous les enregistrements? en effet, chacun peut choisir la valeur de retour de oldid.
LaChaux78
Messages postés
581
Date d'inscription
lundi 25 juillet 2016
Statut
Membre
Dernière intervention
21 novembre 2024
32
Modifié le 9 sept. 2018 à 08:42
Modifié le 9 sept. 2018 à 08:42
Bonjour
oui j'ai testé mais je pense qu'il y a une petit erreur sur cette ligne car ma page affiche une page blanche en fait et lorsque j'enlève cette ligne cela m'affiche bien mon formulaire.
oui j'ai testé mais je pense qu'il y a une petit erreur sur cette ligne car ma page affiche une page blanche en fait et lorsque j'enlève cette ligne cela m'affiche bien mon formulaire.
$strWhere = !empty($oi) ? " WHERE " . "";
echo '<form method="post" name="resp" action="'.$_SERVER["PHP_SELF"].'" onsubmit="return verif()">'; echo '<h1>'.$title.'</h1>'; echo '<table>'; echo '<tr>'; echo '<td class="libel">Adhérent</td>'; echo '<td class="data">'; echo $LDadhe->write($idpers).'</td>'; echo '</tr><tr>'; echo '<td class="libel">Fonction</td>'; echo '<td class="data">'; echo $LDfonc->write($idfonc).'</td>'; echo '</tr><tr>'; echo '<td class="libel">Date de début</td>'; echo '<td class="data"><input type="text" name="ddebut" size="8" value="'.$ddebut.'" /> jj / mm / aaaa</td>'; echo '</tr><tr>'; echo '<td class="libel">Date de fin</td>'; echo '<td class="data"><input type="text" name="dfin" size="8" value="'.$dfin.'" /> jj / mm / aaaa</td>'; echo '</tr><tr>'; echo '<td>'; echo '<input type="hidden" name="haction" value="'.$action.'" />'; echo '<input type="hidden" name="oldid" value="'.$oldid.'" />'; echo '</td>'; echo '<td class="data"><input type="submit" name="submit" value="'.$btsub.'" /></td>'; echo '</tr>'; echo '</table>'; echo '</form>';
jordane45
Messages postés
38371
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
7 janvier 2025
4 722
9 sept. 2018 à 09:47
9 sept. 2018 à 09:47
$strWhere = !empty($oi) ? " WHERE " : "";
LaChaux78
Messages postés
581
Date d'inscription
lundi 25 juillet 2016
Statut
Membre
Dernière intervention
21 novembre 2024
32
9 sept. 2018 à 19:31
9 sept. 2018 à 19:31
Bonjour Jordane45,
Voici l'erreur qui me renvoie.
Voici l'erreur qui me renvoie.
Erreur ! SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
LaChaux78
Messages postés
581
Date d'inscription
lundi 25 juillet 2016
Statut
Membre
Dernière intervention
21 novembre 2024
32
Modifié le 9 sept. 2018 à 23:53
Modifié le 9 sept. 2018 à 23:53
Bonjour, VICTOIR j'ai trouvé et résolu mon problème merci à vous.
Cordialement.
Cordialement.
jordane45
Messages postés
38371
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
7 janvier 2025
4 722
10 sept. 2018 à 07:57
10 sept. 2018 à 07:57
Ce qui serait bien... ça serait d'expliquer comment...
LaChaux78
Messages postés
581
Date d'inscription
lundi 25 juillet 2016
Statut
Membre
Dernière intervention
21 novembre 2024
32
10 sept. 2018 à 08:16
10 sept. 2018 à 08:16
Bonjour en fait c'est une grosse erreur d'inattention de ma part, rien à voir avec le codage. Moi qui me focalisait sur la requète UPDATE. J'ai tout simplement oublié de mettre la variable "oldid" dans le lien qui me permet de faire les modifications.
Je vous remercie.
$lien = $_SERVER["PHP_SELF"].'?a=mod&idpers='.$idpers.'&idfonc='.$idfonc.'&ddebut='.$ddebut.'&oldid='.$oldid;
Je vous remercie.
jordane45
Messages postés
38371
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
7 janvier 2025
4 722
10 sept. 2018 à 08:50
10 sept. 2018 à 08:50
ce que Yg_be t'a indiqué dans un précédent message... et que j'essayai de te faire voir avec les lignes de debug que je t'avais fait ajouter....
je marque le sujet en RESOLU. (merci de le faire toi même la prochaine fois )
je marque le sujet en RESOLU. (merci de le faire toi même la prochaine fois )
LaChaux78
Messages postés
581
Date d'inscription
lundi 25 juillet 2016
Statut
Membre
Dernière intervention
21 novembre 2024
32
10 sept. 2018 à 20:43
10 sept. 2018 à 20:43
Bonjour merci je voulais le faire mais trop tard. merci