Bonjour
Petit résumé de mon problème:
Un utilisateur saisie une fiche avec une référence et d 'autre données. Lorsqu'il soumet la fiche je vérifie que le référence n'est pas déjà existante. Et si oui, je lui demande s'il veut l'écraser. Autrement je le renvoie au remplissage de la fiche.
Je pensais faire ca avec une "confirm box" et un history.back(). Mais voila ca a parfaitement fonctionné pendant 2 jours, le temps que je m'occupe des autres pages et depuis "Niet"
La fonction:
Le php
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 <script language="javascript"> function confirm_replace($reference) { if(!confirm("La référence \"" +$reference+ "\" existe déjà. Voulez-vous la remplacer?")) { history.back();} } } </script>
Je sais, ce n'est pas optimisé mais dans le principe il fonctionne. Les echo ne sont là que pour vérifier le déroulement du script.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 //----------------debut de l'exécution du script------------------------------ if (isset($_POST['reference'])) { $reference=$_POST['reference']; $requete = "select reference from occasion where reference like '".$reference."'"; // verification des doublons $resultat = mysql_query ($requete); $nb_reference = mysql_num_rows($resultat); echo "il y a ".$nb_reference." occurence pour cette référence<br>"; if ($nb_reference==0) //pas de doublon { write_data(); $erreur = upload_images(); if ($erreur_msg!="") ?> <script language="javascript">upload_erreur('<?php echo $erreur_msg ?>')</script> <?php redirection(); } else //doublon { echo "confirmation de la presence du doublon<br>"; ?> <script language="javascript"> confirm_replace('<?php echo $reference ?>')</script> <?php echo "ecrasement de la référence précédente<br>"; overwrite_data(); $erreur = upload_images(); if ($erreur_msg!="")?> <script language="javascript">upload_erreur('<?php echo $erreur_msg ?>')</script> <?php redirection(); } }
Le problème actuel est que même en cliquant sur "annuler" de la confirm box la suite du script php s'exécute et écrase les données précédentes.
A noter que la fonction window.location interrompt le chargement de la page, renvoie l'ancienne mais sans les données bien sur.
En fait ce problème ressemble beaucoup à d'autres qui ont été évoqués sur le fonctionnement pour le moins aléatoire de History.back() et history.go(-1). A savoir que ca fonctionne dans un premier temps, la page demandée se reaffiche bien avec les données précédement rentrées et que d'un coup, sans prévenir, ca ne marche plus.
J'accepte toutes vos suggestions, mais j'avoue que je préfèrerais ne pas avoir a mettre toutes les données en variable de session ou dans une table temporaire d'autant que je suis même pas sur que ca arrangerait mes bidons.
Merci
Partager