8796 sujets

Développement web côté serveur, CMS

Bonjour,
J'ai un drôle de problème : Sur une première page, qu'on pourra appeler page mère, j'ai un formulaire qui insert des données dans une bdd. L'insertion se fait par la page elle-même ($_SERVER['PHP_SELF']). Toujours sur cette même page, un peu plus bas, dans un tableau, s'affichent les données précédemment envoyées par le formulaire. A côté de chaque information, est donnée la possibilité de modifier et de supprimer celle-ci, dans une pop-up respective. Une fois que les données ont été modifiées/ supprimées, l'utilisateur peut cliquer sur un lien fermant la fenêtre, mais qui rafraichit également la page mère via une fonction java-script. Et j'ai systématiquement dans une fenêtre dévoilée par le navigateur le message suivant
a écrit :
Pour afficher cette page, les informations précédemment transmises par Firefox doivent être renvoyées. Ceci répétera toute action entreprise précédemment.
Et là se trouve le problème : si je valide l'opération, la page mère se réaffiche effectivement, mais présente aussi dans le tableau les anciennes informations... C'est à dire que j'ai bien les données modifiées de montrées, mais j'ai aussi une nouvelle ligne dans le tableau avec les précédentes informations d'affectées. Concrètement, dans la table de la bdd, j'ai bien une ligne d'enregistrement modifiée, avec le même identifiant, mais aussi une avec un nouveau identifiant, mais contenant les précédentes données...
Ce que je comprends d'autant moins, c'est pourquoi la requête d'insertion est à chaque fois déclenchée si je valide le message d'avertissement du navigateur, et créée un nouvel enregistrement... Dans le code, elle ne peut que s'exécuter si l'utilisateur valide le formulaire :
if(isset($_POST['btn'])){
$insert= "INSERT INTO commandes (designation, quantite, section, idUser) VALUES ('$prod','$qt','$sections','$idUser')";
...
}?>

J'avoue être un peu perdu...
Maintenant, si je supprime la fonction java-script de rafraîchissement, que je ferme seulement la pop-up, et que j'effectue un 'F5' sur la page mère, je n'ai plus de problème... Les informations modifées sont bien affichées, et sans nouvel enregistrement.
Merci pour votre aide...
Modifié par albius (21 Jan 2009 - 15:53)
Salut,

à priori cela vient du fait que lorsque tu fais F5 dans Firefox sur une page qui vient de recevoir les données d'un formulaire tu as forcément droit à cette petite fenêtre te demandant s'il faut renvoyer ces mêmes données.

Je soupçonne donc ton code JavaScript de "simuler" un F5 alors qu'il faudrait faire autrement car sinon les données sont renvoyées et le traitement PHP est ré-effectué.

Edit: pour dire ça autrement il ne faudrait pas faire un reload mais une redirection.
Modifié par Heyoan (21 Jan 2009 - 14:15)
Ok, mais comment puis-je faire cette redirection ? J'ai déjà la page mère d'ouverte, et une nouvelle fenêtre (la pop-up, redimensionnée). Si je pointe sur la première page, soit elle s'ouvre dans la pop-up, soit une nouvelle fenêtre du navigateur est créée (en fonction du ciblage html)...
A moins qu'il y ait une autre technique que je connaisse pas encore...
merci,
Ok, java-script est venu à mon secours... Un 'window.opener.location = "url";'
sera suffisant...
Merci pour l'indice!
J'étais en train de te répondre ! Smiley smile

Si tu considères que ce sujet est [Résolu] merci de l'indiquer en éditant ton premier post et en modifiant le titre. Smiley cligne