Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 15/07/2011, 09h35   #1
Candidat au titre de Membre du Club
 
Inscription : mai 2004
Messages : 19
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 19
Points : 13
Points : 13
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 ???
obob est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/07/2011, 10h21   #2
Membre éclairé
 
Homme Jérémy
Étudiant
Inscription : octobre 2009
Messages : 236
Détails du profil
Informations personnelles :
Nom : Homme Jérémy
Localisation : France

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

Informations forums :
Inscription : octobre 2009
Messages : 236
Points : 322
Points : 322
Peux-tu nous montrer ton code histoire de vérifier.
Des plugins de dev sur firefox ?
__________________
Pensez à la balise [CODE].
Aucune réponse aux questions par MP.
gwharl est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/07/2011, 10h36   #3
Candidat au titre de Membre du Club
 
Inscription : mai 2004
Messages : 19
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 19
Points : 13
Points : 13
Code :
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.
obob est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/07/2011, 17h27   #4
Rédacteur
 
Avatar de jreaux62
 
Homme Jérôme Réaux
Webdesigner
Inscription : août 2008
Messages : 2 993
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Réaux
Âge : 45
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Webdesigner
Secteur : Arts - Culture

Informations forums :
Inscription : août 2008
Messages : 2 993
Points : 5 786
Points : 5 786
Envoyer un message via Skype™ à jreaux62
Bonjour,
1/ 1ère chose qui saute aux yeux : c'est normal ??
Code :
1
2
$action = $_GET['action'];
$numConf = $_POST['numConf'];
2/ PROTEGE tes donnees !! => mysql_real_escape_string()
Code :
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 :
elseif($action=="modif")
4/ écris tes requêtes de cette manière (plus "propre" et lisible) :
Code :
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 :
1
2
3
if($nom!='' && $prenom!='') {
	// on fait l'insert ...
}
7/ tu peux aussi ajouter à la fin du traitement :
Code :
1
2
3
<?php
	unset($_POST);
?>
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique.
Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
jreaux62 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/07/2011, 21h34   #5
Candidat au titre de Membre du Club
 
Inscription : mai 2004
Messages : 19
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 19
Points : 13
Points : 13
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 :
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.
obob est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h01.


 
 
 
 
Partenaires

Hébergement Web