Vous n'êtes pas identifié(e).
Bonjour à tous.
Voila mon problème :
j'ai deux pages en php. Une est un formulaire de renseignements. L'autre me permet d'envoyer les infos du formulaire vers ma bdd puis d'afficher ma table dans un tableau.
Quand quelqu'un remplit le formulaire, les infos vont bien dans ma bdd puis réapparaissent bien dans mon tableau. Jusque là, tout va bien.
Mais si cette personne ré actualise la page où il y a le tableau (donc la page où y a le code pour envoyer les infos à la BDD), les valeurs du formulaires s'enregistrent à nouveaux dans la bdd, et ça, autant de fois que la personne fait actualiser....
Donc là, ça va plus.
Que puis je faire pour règler c problème....
Merci.
Hors ligne
Saluton,
Est-ce que tout cela se passe dans le cadre d'une session ?
Si c'est le cas il suffit de mettre un drapeau dans une variable de session.
Sinon il faut tester qu'aucune des id des zones de saisie n'est isset() dans $_REQUEST ou $_POST ou $GET, je ne sais pas quelle méthode emploie le formulaire.
Le formulaire devrait, de toute façon, avoir une méta balise no-cache.
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
Merci pour ta réponse, mais là, tu me causes un peu comme à un pro.............................. que je ne suis pas ! ! !
Si tu entends par session, le fait que la personne est enregistrée avec nom d'utilisateur et mot de passe, non, ce n'est pas le cas.
Mon code est comme ça :
//RECUPERATION DES DONNEES
$nom="0";
$chien="0";
$jour="0";
if(isset($_POST['nom'])) $nom=$_POST['nom'];
else $nom="";
if(isset($_POST['chien'])) $chien=$_POST['chien'];
else $chien="";
if(isset($_POST['jour'])) $jour=$_POST['jour'];
else $jour="";
$query="INSERT INTO obdirige (nom,chien,jour) VALUES ('$nom','$chien','$jour')";
mysql_query($query) or die('Erreur SQL !'.$query.'<br>'.mysql_error());
ca t'aide ?
Hors ligne
Bonjour,
Le fait d'aborder les sessions n'est pas un discours de "pro".
En ce qui concerne ton script, tu ne fais pas appel aux sessions car tes variables proviennent apparemment directement d'un formulaire.
Maintenant, tu peux faire plusieurs choses pour éviter ton double enregistrement :
- AVANT l'enregistrement, vérifier que l'array {nom;chien;jour} n'existe pas déjà. [dédoublement préventif]
- Au moment de l'enregistrement, faire une requête pour supprimer les lignes identiques de ta base [dédoublement curatif]
OU ALORS, tu passes par une page de confirmation [du style : "enregistrement terminé" pendant 2 sec] qui redirige automatiquement vers ta page d'affichage du tableau. Ainsi, même si tu rafraichis la dernière page, ce ne sera que celle d'affichage et non de script d'enregistrement.
Mais ne te braque pas en ce qui concerne les propos soit disant "pro" [qui ne le sont pas du tout] Il faut un minimum de connaissance pour avancer. Courage, ce n'est que le début
MERCI de lire le mode d'emploi avant de poster !!
Hors ligne
Merci pour ta réponse.
T'inquiètes, je me braque pas, c'était juste une plaisanterie pour expliquer mon tout petit niveau de débutant.
Je n'ai aucune base, je vais juste à taton, en copiant des bouts de code à droite à gauche et en essayant de les piger, de voir ce qu'ils donnent... mais bon, je reste assez limité en la matière, du coup, quand ça ne roule plus, je suis vite dépassé....
Ta deuxième solution ma plait plus (puis je pense la comprendre dans le principe).
Donc pour le moment, quand la personne valide le formulaire, il est automatiquement redirigé vers la page où j'ai le tableau d'affichage + le code d'envoi à la bdd.
Ce que tu me dis, si je te comprends, c'est de faire une nouvelle page où la personne serait redirigé après validation du formulaire, puis qui après qlq secondes basculerait toute seule sur ma page avec tableau + codde BDD ?
C'est bien ça ?
Je dois y mettre quoi dans cette nouvelle page de transition ? Des codes particuliers ?
Dernière modification par Wolfen38 (03-06-2009 14:39:01)
Hors ligne
Oui, c'est exactement cela ! Et cela est facilement faisable grâce à cette petite ligne
Par contre, je vois + ton code bdd dans cette page, afin de ne pas alourdir celle d'affichage du tableau.
Une tendance existe : faire une page "fonction.php" ou "requete.php" avec ce genre de chose, et toutes les requêtes 'update' dedans avec des conditionnelles. Cela permet d'avoir une page qui regroupe tout, et la redirection qui rends la transparente.
Bien évidement, il y a plein d'autres solutions...
MERCI de lire le mode d'emploi avant de poster !!
Hors ligne
Ok, je pense avoir compris, je vais essayer celà.
Merci bcp pour ton aide.
Hors ligne
Rappel:
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
Euh, c'est quoi ce code ?
Ca sert à quoi ? Je le mets où ?
Hors ligne
Fait un peu un effort !!! une simple recherche dans google t'aurait permis de pas poser une sottise pareille
Rien que le <meta> devrait te mettre sur la voie... il s'agit de metatags...
Allé !! Au boulot !!
MERCI de lire le mode d'emploi avant de poster !!
Hors ligne
Oui, j'ai mis ces codes en début de ma page avec les autres meta, mais ça ne change rien du tout, d'où ma sotte question
Pas grave, je vais essayer la technique de la page intermédiaire, on verra bien....
Hors ligne
Explique toi : tu as mis quelle ligne ?
Petit détail : la redirection est justement la technique de la page intermédiaire
MERCI de lire le mode d'emploi avant de poster !!
Hors ligne
Bah j'ai mis les 2 lignes donné par Maljuna Kris dans l'entête de ma page où j'ai mon code d'insertion dans la bdd + tableau d'affichage.
Je n'ai pas encore eu le temps de faire le système avec page intermédiaire.
Hors ligne
Bon, j'ai mis en place le système avec page intermédiaire et ça marche nickel.
Merci à vous tous.
Hors ligne
y'a pas de quoi
MERCI de lire le mode d'emploi avant de poster !!
Hors ligne