Problème de double insertion au niveau de wampserver
sabrina_mef
Messages postés
16
Date d'inscription
Statut
Membre
Dernière intervention
-
sabrina_mef Messages postés 16 Date d'inscription Statut Membre Dernière intervention -
sabrina_mef Messages postés 16 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
svp comment je peut résoudre ce problème
quand j'exécute une requête d'insertion a partir d'un code php, la même ligne est inséré 3 fois dans la table .
(j'ai désinstallé wampserver 2 fois dans la première fois l'ajout exécute 2 fois la même ligne et cette fois insère 3 fois la même ligne)
svp comment je peut résoudre ce problème
quand j'exécute une requête d'insertion a partir d'un code php, la même ligne est inséré 3 fois dans la table .
(j'ai désinstallé wampserver 2 fois dans la première fois l'ajout exécute 2 fois la même ligne et cette fois insère 3 fois la même ligne)
A voir également:
- Problème de double insertion au niveau de wampserver
- Double ecran - Guide
- Whatsapp double sim - Guide
- Wampserver - Télécharger - Divers Web & Internet
- Double driver - Télécharger - Pilotes & Matériel
- Double appel - Guide
10 réponses
Bonjour
Ça m'étonnerait beaucoup que ça vienne de wampserver. À mon avis, c'est plutôt ton code qui fait trois fois l'insertion, reste à savoir pourquoi mais sans voir ton code on ne peut pas le deviner.
Ça m'étonnerait beaucoup que ça vienne de wampserver. À mon avis, c'est plutôt ton code qui fait trois fois l'insertion, reste à savoir pourquoi mais sans voir ton code on ne peut pas le deviner.
code de l'interface
<html>
<body>
<div align="center">
<form action="" method="POST">
<table width="90%">
<tr><td bgcolor="#C2E2DA"><label>Sujet<span style="color:#FF0000"> *</span></label></td>
<td><input name="sujet" type="text" value="" required="required"/></td>
<tr><td bgcolor="#C2E2DA"><label>Encadreur<span style="color:#FF0000"> *</span></label></td>
<td><input name="encadreur" type="text" value="" required="required"/></td></tr>
<tr><td bgcolor="#C2E2DA"><label>Proprietaire<span style="color:#FF0000"> *</span></label></td>
<td><input name="proprietaire" type="text" value="" required="required" /></td></tr>
<tr><td bgcolor="#C2E2DA"><label>Domaine<span style="color:#FF0000"> *</span></label></td>
<td><select name='domaine' required="required">
<option selected='selected'>domaine d'étude</option>
<option value='Informatique'>Informatique</option>
<option value='Gestion et Economie'>Gestion et Economie</option>
<option value='Science'>Science</option>
<option value='Mathématique'>Mathématique</option>
<option value='Technique'>Technique</option>
<option value='Juridique'>Juridique</option>
</select></td></tr>
<tr><td bgcolor="#C2E2DA"><label>Année universitaire<span style="color:#FF0000"> *</span></label></td>
<td><select name="annee" required="required">
<option selected="selected" >selectionner l'année</option>
<option value="2008-2009">2008-2009</option>
<option value="2009-2010">2009-2010</option>
<option value="2010-2011">2010-2011</option>
<option value="2011-2012">2011-2012</option>
<option value="2012-2013">2012-2013</option>
<option value="2013-2014">2013-2014</option>
<option value="2014-2015">2014-2015</option>
</select></td></tr>
<tr><td bgcolor="#C2E2DA"><label>Unité de recherche<span style="color:#FF0000"> *</span></label></td>
<td><select name='unite'>
<option selected='selected'>quelle établissement</option>
<option value='ISGG' required="required">ISGG</option>
<option value='FSEG'>FSEG</option>
<option value='ISLG'>ISLG</option>
<option value='ISIMG'>ISIMG</option>
<option value='ENIG'>ENIG</option>
<option value='H2O'>H2O</option>
<option value='ISSAT'>ISSAT</option>
</select></td></tr>
<tr><td bgcolor="#C2E2DA"><label>Resumé<span style="color:#FF0000"> *</span></label></td>
<td><textarea cols="50" name="resume" rows="5" required="required"></textarea></td></tr>
<tr><td bgcolor="#C2E2DA"><label>Piéce Jointe<span style="color:#FF0000"> *</span></label></td>
<td><fieldset><input type="file" name="piecejointe" required="required"></fieldset></td></tr>
<tr><td bgcolor="#C2E2DA"></td><td><div align="right"><button onClick="
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "mabase";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "INSERT INTO rapport_tmp (sujet, encadreur, proprietaire, domaine, annee, unite, resume, piecejointe)
VALUES
('" . $_POST["sujet"] . "', '" . $_POST["encadreur"] . "', '" . $_POST["proprietaire"] . "', '" . $_POST["domaine"] . "', '" . $_POST["annee"] . "', '" . $_POST["unite"] . "','" . $_POST["resume"] . "','" . $_POST["piecejointe"] . "')";
$ok= $conn->query($sql);
$conn->close();
?>
">Partagez</button></div></td></tr>
</table>
</form></div>
</body>
</html>
je dirais que cette ligne n'est pas insérer 3 fois au plus, elle est peut être enregistrer dans le cache de PHP (variables) puis a chaque enrichissement de page avant que ces variable ne sont effacées le code SQL et réexecuter. essai de changer de page avec HEADER "location".
Bonjour
ATTENTION ! Ton code PHP n'a rien à faire dans un "onclick" car ce n'est pas du javascript. Voici ce qui se passe avec ce que tu as écrit :
- quand ta page s'affiche, le code PHP s'exécute et, comme la première fois le formulaire n'est pas rempli, tes $_POST ne sont pas définis et il y a des messages d'erreur, mais tu ne les vois pas parce qu'ils sont dans le "onclick" à l'intérieur d'une balise.
Ensuite, quand on clique sur le bouton, le navigateur essaye d'exécuter ce qu'il y a dans le onclick, c'est à dire les messages d'erreur. Comme ça ne veut rien dire, il ne se passe rien. Si tu as un navigateur qui considère que "button" sans attribut "type" est un type submit, ton formulaire est envoyé au serveur. Là, ta page est renvoyée et ton PHP s'exécute à nouveau : cette fois il est correct, car les champs ont été envoyés.
L'insertion a lieu une seule fois, et si tu as plusieurs insertions, c'est que tu rappelles la page par exemple en faisait Rafraîchir (F5) ou retour en arrière (la flèche vers la gauche)
Il faut ABSOLUMENT que tu retires ton code de ce "onclick" où il n'a rien à faire. Ce code devrait être au début de ta page, et précédé d'un test if isset($_POST['sujet']) pour ne faire l'insertion que si il y a réellement un formulaire à traiter. Il faut aussi obligatoirement donner un type="submit" à ton "button" sinon le comportement risque de changer selon les visiteurs.
Et il faut surtout que tu comprennes bien la différence entre javascript et PHP, car le fait que tu aies mis ce code PHP dans un "onclick" montre bien que tu ne comprends pas le rôle de chacun de ces langages.
ATTENTION ! Ton code PHP n'a rien à faire dans un "onclick" car ce n'est pas du javascript. Voici ce qui se passe avec ce que tu as écrit :
- quand ta page s'affiche, le code PHP s'exécute et, comme la première fois le formulaire n'est pas rempli, tes $_POST ne sont pas définis et il y a des messages d'erreur, mais tu ne les vois pas parce qu'ils sont dans le "onclick" à l'intérieur d'une balise.
Ensuite, quand on clique sur le bouton, le navigateur essaye d'exécuter ce qu'il y a dans le onclick, c'est à dire les messages d'erreur. Comme ça ne veut rien dire, il ne se passe rien. Si tu as un navigateur qui considère que "button" sans attribut "type" est un type submit, ton formulaire est envoyé au serveur. Là, ta page est renvoyée et ton PHP s'exécute à nouveau : cette fois il est correct, car les champs ont été envoyés.
L'insertion a lieu une seule fois, et si tu as plusieurs insertions, c'est que tu rappelles la page par exemple en faisait Rafraîchir (F5) ou retour en arrière (la flèche vers la gauche)
Il faut ABSOLUMENT que tu retires ton code de ce "onclick" où il n'a rien à faire. Ce code devrait être au début de ta page, et précédé d'un test if isset($_POST['sujet']) pour ne faire l'insertion que si il y a réellement un formulaire à traiter. Il faut aussi obligatoirement donner un type="submit" à ton "button" sinon le comportement risque de changer selon les visiteurs.
Et il faut surtout que tu comprennes bien la différence entre javascript et PHP, car le fait que tu aies mis ce code PHP dans un "onclick" montre bien que tu ne comprends pas le rôle de chacun de ces langages.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
le problème n'a pas résolu même que j'ai changé le code
<?php
if(isset($_POST['sujet'])) {
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "mabase";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "INSERT INTO rapport_tmp (sujet, encadreur, proprietaire, domaine, annee, unite, resume, piecejointe)
VALUES
('" . $_POST["sujet"] . "', '" . $_POST["encadreur"] . "', '" . $_POST["proprietaire"] . "', '" . $_POST["domaine"] . "', '" . $_POST["annee"] . "', '" . $_POST["unite"] . "','" . $_POST["resume"] . "','" . $_POST["piecejointe"] . "')";
$ok= $conn->query($sql);
$conn->close();
}
?>
<html>
<body>
<div align="center">
<form action="" method="POST">
<table width="90%">
<tr><td bgcolor="#C2E2DA"><label>Sujet<span style="color:#FF0000"> *</span></label></td>
<td><input name="sujet" type="text" value="" required="required"/></td>
<tr><td bgcolor="#C2E2DA"><label>Encadreur<span style="color:#FF0000"> *</span></label></td>
<td><input name="encadreur" type="text" value="" required="required"/></td></tr>
<tr><td bgcolor="#C2E2DA"><label>Proprietaire<span style="color:#FF0000"> *</span></label></td>
<td><input name="proprietaire" type="text" value="" required="required" /></td></tr>
<tr><td bgcolor="#C2E2DA"><label>Domaine<span style="color:#FF0000"> *</span></label></td>
<td><select name='domaine' required="required">
<option selected='selected'>domaine d'étude</option>
<option value='Informatique'>Informatique</option>
<option value='Gestion et Economie'>Gestion et Economie</option>
<option value='Science'>Science</option>
<option value='Mathématique'>Mathématique</option>
<option value='Technique'>Technique</option>
<option value='Juridique'>Juridique</option>
</select></td></tr>
<tr><td bgcolor="#C2E2DA"><label>Année universitaire<span style="color:#FF0000"> *</span></label></td>
<td><select name="annee" required="required">
<option selected="selected" >selectionner l'année</option>
<option value="2008-2009">2008-2009</option>
<option value="2009-2010">2009-2010</option>
<option value="2010-2011">2010-2011</option>
<option value="2011-2012">2011-2012</option>
<option value="2012-2013">2012-2013</option>
<option value="2013-2014">2013-2014</option>
<option value="2014-2015">2014-2015</option>
</select></td></tr>
<tr><td bgcolor="#C2E2DA"><label>Unité de recherche<span style="color:#FF0000"> *</span></label></td>
<td><select name='unite'>
<option selected='selected'>quelle établissement</option>
<option value='ISGG' required="required">ISGG</option>
<option value='FSEG'>FSEG</option>
<option value='ISLG'>ISLG</option>
<option value='ISIMG'>ISIMG</option>
<option value='ENIG'>ENIG</option>
<option value='H2O'>H2O</option>
<option value='ISSAT'>ISSAT</option>
</select></td></tr>
<tr><td bgcolor="#C2E2DA"><label>Resumé<span style="color:#FF0000"> *</span></label></td>
<td><textarea cols="50" name="resume" rows="5" required="required"></textarea></td></tr>
<tr><td bgcolor="#C2E2DA"><label>Piéce Jointe<span style="color:#FF0000"> *</span></label></td>
<td><fieldset><input type="file" name="piecejointe" required="required"></fieldset></td></tr>
<tr><td bgcolor="#C2E2DA"></td><td><div align="right"><input type="submit" value="partagez"></div>
</td></tr>
</table>
</form></div>
</body>
</html>
Tu as très bien pris mes remarques en compte, et même s'il reste quelques gros problèmes de HTML, je ne vois vraiment pas ce qui explique que la même ligne soit enregistrée plusieurs fois.
Quand tu dis qu'une ligne est ajoutée plusieurs fois, c'est bien que plusieurs lignes s'ajoutent à chaque clic sur le bouton ? Sans faire de retour arrière ni rafraîchir la page ?
Tu cliques 3 fois et ça met 9 lignes dans ta base, c'est bien ça ?
Quand tu dis qu'une ligne est ajoutée plusieurs fois, c'est bien que plusieurs lignes s'ajoutent à chaque clic sur le bouton ? Sans faire de retour arrière ni rafraîchir la page ?
Tu cliques 3 fois et ça met 9 lignes dans ta base, c'est bien ça ?
quand je clic sur le bouton une seul fois et ni rafraîchir ni retour s'ajoutent 3 ligne à la base
oui quand je clique 3 fois s'ajoutent 9 ligne dans la base.
je crois que le problème c au niveau de la cache du serveur web
oui quand je clique 3 fois s'ajoutent 9 ligne dans la base.
je crois que le problème c au niveau de la cache du serveur web
J'ai beaucoup, beaucoup de mal à te croire.
Et ton histoire de cache, j'y crois encore moins. Tu as employé ce mot parce que khaledmess8585 te l'a suggéré, mais ni lui ni toi n'expliquez rien du tout. Vous vous servez du mot "cache" comme d'un mot magique qui aurait le pouvoir de faire des choses mystérieuses. Mais les ordinateurs ne sont pas magiques.
Mais on va bien finir par comprendre.
Comment s'appelle le fichier qui contient cette page ?
Y a-t-il autre chose dans ce fichier ?
Comment fais-tu pour vérifier le nombre de lignes dans ta base ?
Les 3 lignes générées en même temps sont-elles identiques ?
Et ton histoire de cache, j'y crois encore moins. Tu as employé ce mot parce que khaledmess8585 te l'a suggéré, mais ni lui ni toi n'expliquez rien du tout. Vous vous servez du mot "cache" comme d'un mot magique qui aurait le pouvoir de faire des choses mystérieuses. Mais les ordinateurs ne sont pas magiques.
Mais on va bien finir par comprendre.
Comment s'appelle le fichier qui contient cette page ?
Y a-t-il autre chose dans ce fichier ?
Comment fais-tu pour vérifier le nombre de lignes dans ta base ?
Les 3 lignes générées en même temps sont-elles identiques ?
Je te remercie de répondre si vite et si précisément à mes questions.
Une chose me trouble : il y a un espace dans le nom du fichier ? il n'y a pas d'extension .php ?
Et comment fais-tu pour afficher ton formulaire ? Que tapes-tu dans la barre d'adresse de ton navigateur ?
Une chose me trouble : il y a un espace dans le nom du fichier ? il n'y a pas d'extension .php ?
Et comment fais-tu pour afficher ton formulaire ? Que tapes-tu dans la barre d'adresse de ton navigateur ?
Et tu ne l'avais pas encore dit ?
Donc tu n'exécutes pas que ce que tu m'as montré, tu exécutes Wordpress.
J'ignore comment ton script est relié à Wordpress mais il est clair que Wordpress exécute trois fois ton code, c'est tout.
Comment éviter ça, c'est une question à poser dans le forum Wordpress.
D'ailleurs, pour le peu que je connais de Wordpress, je suis très étonné de voir des balises <html> et <body>, je pense que c'est Wordpress qui s'occupe de ça et que tu n'as que le contenu de la page à écrire. Mais c'est vrai que je connais assez peu.
En tout cas c'est sûr, ton problème vient de ta façon d'intégrer ta page dans Worpress. Pas de Wampserver.
Donc tu n'exécutes pas que ce que tu m'as montré, tu exécutes Wordpress.
J'ignore comment ton script est relié à Wordpress mais il est clair que Wordpress exécute trois fois ton code, c'est tout.
Comment éviter ça, c'est une question à poser dans le forum Wordpress.
D'ailleurs, pour le peu que je connais de Wordpress, je suis très étonné de voir des balises <html> et <body>, je pense que c'est Wordpress qui s'occupe de ça et que tu n'as que le contenu de la page à écrire. Mais c'est vrai que je connais assez peu.
En tout cas c'est sûr, ton problème vient de ta façon d'intégrer ta page dans Worpress. Pas de Wampserver.