|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() Inscription : novembre 2010 Messages : 5 ![]() |
Bonsoir à tous,
J'ai créé une interface administrateur qui permet à celui-ci de modifier les textes de sa page, en l'occurrence "Contact". J'ai donc utilisé du php et une base de donné. J'ai mis en place différents champs où il peut changer le texte et un bouton qui valide la saisie, l'enregistre dans la BDD et l'affiche sur la page "Contact" du site quand on l'a rafraichie. Je vous expose maintenant le problème, quand celui-ci clic sur le bouton, la BDD est modifié, un message disant que la modification a été prise en compte s'affiche mais la zone de texte (input) garde l'ancien contenu et donc n'affiche pas ce qui a été modifié. On est obligé de rafraichir la page admin après avoir cliqué sur le bouton pour que nos modifications apparaissent dans les champs. Je vous montre une partie du code : Code :
Si quelqu'un à une idée de commun rafraichir la page ou si il voit une erreur, je vous remercie. |
||
|
|
00
|
|
|
#2 |
|
Expert Confirmé
![]() Inscription : janvier 2010 Messages : 2 691 ![]() |
Salut
C'est à mon sens dû au faite que dans la chronologie du code, tu récupère les données de la Bdd en 1er, et c'est après que tu effectue la mise à jour (le UPDATE). Il est donc normal qu'au moment où tu récupère les données, la nouvelle version n'y soit pas encore effectuée. Faut donc procéder de manière inverse, soit mettre à jour en 1er, puis après récupérer. Ne pas perdre de vue que le code ici est très procédural, donc exécuté ligne pas ligne, le déroulement a donc une importance.
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20 Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra] |
|
|
00
|
|
|
#3 | ||
|
Membre Expert
![]() ![]() Mathieu ROBINDéveloppeur Web Inscription : mai 2006 Messages : 1 116 ![]() |
C'est normal.
Quand tu cliques sur ton bouton pour valider le formulaire, tu envoies au serveur différentes données. La valeur de Responsable1 et la valeur du bouton lui même, c'est d'ailleurs sur cette valeur que tu détermines si il faut faire l'update ou non. Au premier affichage, tu affiches juste ton formulaire puis tu testes si il connait la valeur du bouton, vu que non, il ne fait pas d'update. Pas de soucis. Après clic, second affichage donc, tu affiches ton formulaire puis tu testes si il connait la valeur du bouton, vu que oui, il fait l'update. Et c'est là que ça coince. Tu fais ton update après ton affichage. Quand tu cliqueras sur F5, tu renvoies toutes les données, ce qui fondamentalement ne change rien vu qu'au deuxième passage, tu as mis à jour ta base. C'est pour ça que l'affichage se met alors à jour. Mais au passage, t'auras mis 2 fois à jour ta base de la même façon. Ce qui n'est pas forcément l'idéal. Déplace donc ton bloc if avant ta requête SELECT et ça marchera mieux. Au passage. Vu que tu ne chopes qu'un seul enregistrement, pas besoin de le mettre dans un while. Ton code corrigé vite fait: Code :
EDIT: ah runcodephp a été plus rapide
__________________
Mon blog techno et son billet hebdomadaire sur l'actualité jQuery. Et mon blog cuisine pour une personne. Le bouton ne masse pas les pieds, mais ça aide la communauté.
|
||
|
00
|
|
|
#4 |
|
Invité de passage
![]() Inscription : novembre 2010 Messages : 5 ![]() |
Ha mais oui c'est évident j'y avais pas pensé, je m'excuse du dérangement et vous remercie c'est beaucoup mieux comme ça
@gwinyam : En fait je n'ai mis qu'une partie du code car je ne voyais pas l'intérêt de tout vous mettre. Mais en fait la boucle while est utile vu qu'il y a une dizaine d'enregistrements. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com