IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Répétition requête mysql au rechargement de la page


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 16
    Par défaut Répétition requête mysql au rechargement de la page
    Bonjour
    Ma config: Linux mysql PHP Firefox Apache
    je suis novice et réalise une application qui écrit dans une table en ajoutant et retirant des enregistrements 'classique!).
    Mon formulaire est dans la même page que le script d'écriture et celui d'affichage de la table.
    j'utilise action="SERVER['PHP_SELF'] method="post" par php interposé (echo)
    L'écriture et l'affichage remis à jour de la table marchent bien.

    Problème: si il y a un rafraîchissement de la page, l'enregistrement est écrit à nouveau et cela indéfiniment.
    Que faire pour éviter ça ? Y-a-t-il un moyen de purger les variables du post ?
    Merci pour toute aide.

  2. #2
    Membre Expert
    Avatar de ryan
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2003
    Messages
    956
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2003
    Messages : 956
    Billets dans le blog
    1
    Par défaut
    Yop!

    La seule parade que j'ai trouvé pour éviter ce problème est la suivante:

    - parmi les variables postées de la première page (formulaire) vers la seconde (insert dans la bdd), il y a un champ hidden qui contient un timestamp:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
        echo "<input type=hidden name='thetime' value='" . time() ."'>";
    - dans la table de la bdd, j'ai une colonne "thetime"
    - dans la seconde page, je fais un test pour voir si j'ai déjà une ligne dont la colonne "thetime" est égale à $_POST["thetime"]
    - si oui, pas d'insert, si non, on ajoute la ligne dans la bdd.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 16
    Par défaut
    - dans la table de la bdd, j'ai une colonne "thetime"
    - dans la seconde page, je fais un test pour voir si j'ai déjà une ligne dont la colonne "thetime" est égale à $_POST["thetime"]
    - si oui, pas d'insert, si non, on ajoute la ligne dans la bdd.[/QUOTE]

    Merci beaucoup.
    Cela me semble OK. Je vais essayer. Je suis rassuré de voir que mon problème n'est pas inconnu.
    Je préférerais néanmoins ne pas avoir à bricoler dans la BD et traiter le problème plus en amont. J'ai pensé garder le temps en mémoire dans une variable du type $_SESSION['old_time'] mais je n'arrive pas à gérer le session_start() car j'ai deux fois le message suivant:

    Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/jaaf/base_pour_apache/php2/listeDocuments.php:1) in /home/jaaf/base_pour_apache/php2/listeDocuments.php on line 2
    En pratique je te rappelle que tout est dans la même page , justement pour éviter les changements. Voici grosso modo comment c'est fait:
    if ($_SESSION['mem_time']!=$_POST['new_time'])
    {
    $_SESSION['mem_time']=$_POST['new_time'];
    include ("ecritureTableDocuments.php"); //le script d'écriture dans la base
    }
    include ("dialogueInscriptionDocument.php");//script d'affichage du formulaire
    include("affichageTableDocuments.php");// scrip d'affichage de la table
    Que penses-tu de tout ça ?

Discussions similaires

  1. Réponses: 2
    Dernier message: 18/08/2012, 18h02
  2. Réponses: 4
    Dernier message: 21/07/2011, 08h04
  3. Réponses: 6
    Dernier message: 04/09/2008, 11h25
  4. Mise en page après requête MySql
    Par php_de_travers dans le forum Requêtes
    Réponses: 5
    Dernier message: 23/11/2005, 09h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo