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 :

requête exécutée 2 fois sous Firefox


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut requête exécutée 2 fois sous Firefox
    Bonjour,
    j'ai des scripts qui récupèrent des données dans un formulaire via POST puis les utilisent dans une requête INSERT INTO avec pour clé primaire un numéro autoincrémenté.
    Le problème est que la requête s'exécute une fois normalement et une deuxième fois sans valeur (insertion d'un nouvel enregistrement vide hormis le numéro auto-incrémenté). Les messages associés n'ont lieu qu'une fois (ce n'est donc pas le submit qui s'exécute deux fois).
    Le mysql_query n'est bien présent qu'une fois. Si je fais un echo de la requête au lieu de l'exécuter et que je la copie-colle dans phpmyadmin, elle ne s'affiche bien qu'une fois et fonctionne bien.
    Cela uniquement sous Firefox aussi bien en LAMP qu'en WAMP.
    Mon script marchait avant .... il y a un bug firefox ???

  2. #2
    Membre chevronné
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2009
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2009
    Messages : 236
    Par défaut
    Peux-tu nous montrer ton code histoire de vérifier.
    Des plugins de dev sur firefox ?

  3. #3
    Invité
    Invité(e)
    Par défaut
    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
    <?php
    include("../../connexion/connexion.php");
    $action = $_GET['action'];
     
    $numConf = $_POST['numConf'];
    $mail = $_POST['mail'];
     
    if($action=="ajout")
    {
    	$titrePage = "Enregistrement d'un nouveau conférencier";
     
    	$nom = addslashes($_POST['nom']);
    	$prenom = addslashes($_POST['prenom']);
     
    	$reqConf = "INSERT INTO conferencier VALUES('','$nom','$prenom','$mail')";
    }
     
    if($action=="modif")
    {
    	$titrePage = "Modification d'un conférencier";
     
    	$reqConf = "UPDATE conferencier
    			SET mail='$mail'
    			WHERE num='$numConf'";
    }	
     
    print "<p>".$titrePage."</p>";
     
    // Exécution de la requête
    $result = mysql_query($reqConf);
     
    if($result == False)
    {
    	print "Echec de la requête $reqConf."; // pour débogage
    }
    else
    {
    	print "Les informations concernant le conférencier ont bien été enregistrées.";
    }
     
    // fermeture de la connexion à MySQL
    mysql_close();
    ?>
    J'ai le problème sur 2 formulaires sur cette base. Pas ce pb avec d'autres navigateurs sur cette base, pas ce pb avec firefox sur d'autres bases. Je ne comprends pas, c'est la première fois que je rencontre ça...

    Aucun plugin de dvt.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    1/ 1ère chose qui saute aux yeux : c'est normal ??
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $action = $_GET['action'];
    $numConf = $_POST['numConf'];
    2/ PROTEGE tes donnees !! => mysql_real_escape_string()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?php
    	$nom = mysql_real_escape_string(trim($_POST['nom']));
    	$prenom = mysql_real_escape_string(trim($_POST['prenom']));
    ?>
    3/ remplace if par elseif :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    elseif($action=="modif")
    4/ écris tes requêtes de cette manière (plus "propre" et lisible) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php
    	$reqConf = "INSERT INTO conferencier ".
    			"(id, nom, prenom, mail)".
    			" VALUES ".
    			" ('', '".$nom."', '".$prenom."', '".$mail."');";
     
    // ...
    	$reqConf = "UPDATE conferencier SET ".
    			" mail = '".$mail."' ".
    			" WHERE num = '".$numConf."';";
     
    ?>
    5/ remplace print par echo
    Et lis ce tuto : Apostrophes ou guillemets : lesquels choisir ?

    6/ pour l'INSERT, tu peux ajouter un test :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if($nom!='' && $prenom!='') {
    	// on fait l'insert ...
    }
    7/ tu peux aussi ajouter à la fin du traitement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?php
    	unset($_POST);
    ?>
    Dernière modification par Invité ; 15/07/2011 à 17h49.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Merci pour tes conseils.
    C'est le point 6 qui résout le pb ce qui confirme mon intuition, le script s'exécute 2 fois : la deuxième fois il ne récupère ne récupère rien ($nom et $prenom vides, voilà pourquoi le 6 marche) mais récupère bien $action (puisque c'est l'insert qui s'exécute), logique puisque c'est GET par défaut donc j'en conclus qu'il ne repart pas du formulaire mais que mon script se relance lui-même (comme s'il était en auto-submit...).
    J'y ai été ligne par ligne et j'ai trouvé !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <link rel="stylesheet" media="screen" type="text/css" title="design" href="" />
    J'ai copié-collé ma ligne de feuille de style mais rien mis en référence car je comptais créer la feuille plus tard (ou d'ailleurs ce ne sera pas forcément moi) et apparemment il l'a cherche un peu puis relance effectivement une deuxième fois le formulaire. Si je mets n'importe quel nom, même d'un fichier de style qui n'existe pas, ça passe !
    J'ai fait des dizaines et des dizaines de scripts mais c'est la première fois que je laisse ainsi une référence vide (je conviens que ce n'est pas logique) mais je n'en aurais pas imaginé les conséquences. Content d'avoir compris !

    Pb sous Firefox et Chrome, pas sous Opera, IE et Safari.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [SQL] Requête sql qui plante sous firefox et marche sous IE
    Par PlayKat dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 13/10/2007, 16h17
  2. [Firefox] Comment exécuter un projet sous FireFox ?
    Par bouchette63 dans le forum Websphere
    Réponses: 2
    Dernier message: 20/09/2006, 16h45
  3. Fonction javascript qui marche qu'une fois sous Firefox
    Par ns_deux dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 30/08/2006, 10h38
  4. Sous-requête excutée plusieurs fois dans une requête
    Par sheridan31 dans le forum Oracle
    Réponses: 8
    Dernier message: 03/07/2006, 16h18
  5. fonction qui s'exécute qu'une seule fois sous Firefox
    Par la.sophe dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 01/03/2006, 10h02

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