Comment faire un UPDATE sur un nom de champ SQL variable?
Résolu
sluggy10
Messages postés
20
Date d'inscription
Statut
Membre
Dernière intervention
-
Fallentree Messages postés 2309 Date d'inscription Statut Membre Dernière intervention -
Fallentree Messages postés 2309 Date d'inscription Statut Membre Dernière intervention -
Je m'explique, (bonjour à tous déjà :D) j'ai une BDD pour l'agenda de mes utilisateurs, et je DOIS afficher tous les utilisateurs (en ligne) , sur un mois complets (30-31 jours en colonne), sur une seule page de mon intranet. chaque case étant remplie par un contenu, mais peu importe le contenu.
J'ai fait un formulaire pour ajouter une entrée avec un <form> classique, qui envoie sur une page de traitement php (après avoir vérifié la validité des dates en javascript).
Et, c'est la que vient la difficultés, pour éviter de faire 31 requetes UPDATE couvrant chacune des possibilités, j'aimerai que le "AGENDA_1" soit remplacé par une variable, puisque le chiffre est variable et dépend de ce qui a été entré dans le formulaire. Voici la requête UPDATE à modifier.
$rep = $bdd->exec("UPDATE z_agenda
SET AGENDA_1='$code'
WHERE AGENDA_NOM='$agent'
AND AGENDA_TYPE='code'");
Quelqu'un a une idée prodigieuse? Parce que le SQL n'aime pas que je lui envoie des field name sous forme de variable...
J'ai fait un formulaire pour ajouter une entrée avec un <form> classique, qui envoie sur une page de traitement php (après avoir vérifié la validité des dates en javascript).
Et, c'est la que vient la difficultés, pour éviter de faire 31 requetes UPDATE couvrant chacune des possibilités, j'aimerai que le "AGENDA_1" soit remplacé par une variable, puisque le chiffre est variable et dépend de ce qui a été entré dans le formulaire. Voici la requête UPDATE à modifier.
$rep = $bdd->exec("UPDATE z_agenda
SET AGENDA_1='$code'
WHERE AGENDA_NOM='$agent'
AND AGENDA_TYPE='code'");
Quelqu'un a une idée prodigieuse? Parce que le SQL n'aime pas que je lui envoie des field name sous forme de variable...
A voir également:
- Comment faire un UPDATE sur un nom de champ SQL variable?
- Windows update bloqué - Guide
- Winget update - Guide
- Asus live update - Télécharger - Utilitaires
- Nom de l'adresse - Forum Réseaux sociaux
- Trouver un nom avec une adresse ✓ - Forum Loisirs / Divertissements
6 réponses
Bonjour
Sii j'ai bien compris ta demande :
Entre nous, si tu es amené à écrire ce genre de choses, je pense que tu devrais re-réfléchir à l'organisation de tes données, genre avoir un seul champ AGENDA et ajouter un champ JOUR. Je dis ça sans connaître tout ton problème, c'est toi qui vois.
Sii j'ai bien compris ta demande :
$rep = $bdd->exec("UPDATE z_agenda SET AGENDA_".$jour."='$code' WHERE AGENDA_NOM='$agent' AND AGENDA_TYPE='code'");
Entre nous, si tu es amené à écrire ce genre de choses, je pense que tu devrais re-réfléchir à l'organisation de tes données, genre avoir un seul champ AGENDA et ajouter un champ JOUR. Je dis ça sans connaître tout ton problème, c'est toi qui vois.
Oui tu n'es pas le seul à le dire, et en le faisant je trouvais ça super crade, je sais bien, mais j'ai déjà masse informations et je ne savais vraiment pas comment l'ordonner...
J'ai peur que si j'enlève tous les champs "AGENDA_1" et les 30 qui suivent pour les remplacer par un champs unique "AGENDA_JOUR" par exemple, je ne puisse plus extraire les infos aussi facilement.
Même si c'est vrai que ça réglerait mon problème dans l'immédiat...
Sinon oui, tu as compris mon problème, mais aussi bien
SET AGENDA_".$jour."=
que
SET '$var'='$code' (avec $var="AGENDA_1")
Ne fonctionnent pas. Je n'ai pas de retour d'erreur sql, pas plus que d'ajout dans la bdd. Juste... Rien.
J'ai peur que si j'enlève tous les champs "AGENDA_1" et les 30 qui suivent pour les remplacer par un champs unique "AGENDA_JOUR" par exemple, je ne puisse plus extraire les infos aussi facilement.
Même si c'est vrai que ça réglerait mon problème dans l'immédiat...
Sinon oui, tu as compris mon problème, mais aussi bien
SET AGENDA_".$jour."=
que
SET '$var'='$code' (avec $var="AGENDA_1")
Ne fonctionnent pas. Je n'ai pas de retour d'erreur sql, pas plus que d'ajout dans la bdd. Juste... Rien.
Parce que je dois afficher 75 lignes de 30-31 cases chacune.
Ca prend déjà pas mal de temps (presque deux secondes), du coup si je dois boucler avec "trouve moi le 1", affiche, "trouve moi le 2", affiche, etc etc, je perdrais un max de temps de traitement non? La c'est simple, je cherche le mois, le nom du user, et tac, j'affiche la ligne.
Ca prend déjà pas mal de temps (presque deux secondes), du coup si je dois boucler avec "trouve moi le 1", affiche, "trouve moi le 2", affiche, etc etc, je perdrais un max de temps de traitement non? La c'est simple, je cherche le mois, le nom du user, et tac, j'affiche la ligne.
SET '$var'='$code' (avec $var="AGENDA_1")
Normal que ça ne marche pas. Tu as mis des apostrophes autour de $var, qui représente un nom de champ : il ne faut pas d'apostrophes autour des identifiants SQL, seulement autour des valeurs.
SET AGENDA_".$jour."=
Sûr et certain que ça marche, sous réserve qu'il n'y ait pas de problème ailleurs. MySQL n'a aucune raison de faire la distinction avec
SET AGENDA_1=si $jour=1, car c'est php qui remplace la variable par sa valeur, et MySQL ne "voit" jamais de variable php.
Pour voir :
echo "UPDATE z_agendaça t'affiche quoi ?
SET AGENDA_".$jour."='$code'
WHERE AGENDA_NOM='$agent'
AND AGENDA_TYPE='code'";
Ca m'affiche la requête comme il faut en effet.
Diantre, j'essaye ça dès demain matin :D.
*affaire à suivre*
Tu aura ton croissant demain matin si ça fonctionne promis.
Diantre, j'essaye ça dès demain matin :D.
*affaire à suivre*
Tu aura ton croissant demain matin si ça fonctionne promis.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question