Problème de double insertion au niveau de wampserver

Fermé
sabrina_mef Messages postés 16 Date d'inscription vendredi 8 mai 2015 Statut Membre Dernière intervention 2 juillet 2015 - 30 mai 2015 à 11:40
sabrina_mef Messages postés 16 Date d'inscription vendredi 8 mai 2015 Statut Membre Dernière intervention 2 juillet 2015 - 31 mai 2015 à 23:42
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)
A voir également:

10 réponses

Utilisateur anonyme
30 mai 2015 à 17:35
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.
0
sabrina_mef Messages postés 16 Date d'inscription vendredi 8 mai 2015 Statut Membre Dernière intervention 2 juillet 2015
30 mai 2015 à 18:37
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>
0
khaledmess8585 Messages postés 15 Date d'inscription dimanche 17 mai 2015 Statut Membre Dernière intervention 29 juin 2016 3
30 mai 2015 à 21:04
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".
0
Utilisateur anonyme
31 mai 2015 à 11:40
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
sabrina_mef Messages postés 16 Date d'inscription vendredi 8 mai 2015 Statut Membre Dernière intervention 2 juillet 2015
31 mai 2015 à 21:31
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>
0
Utilisateur anonyme
31 mai 2015 à 21:46
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 ?
0
sabrina_mef Messages postés 16 Date d'inscription vendredi 8 mai 2015 Statut Membre Dernière intervention 2 juillet 2015
31 mai 2015 à 21:53
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
0
Utilisateur anonyme
31 mai 2015 à 22:38
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 ?
0
sabrina_mef Messages postés 16 Date d'inscription vendredi 8 mai 2015 Statut Membre Dernière intervention 2 juillet 2015
Modifié par sabrina_mef le 31/05/2015 à 23:02
le nom de fichier "demande publication"
il contient que c code
je vérifie a partir du serveur (http://localhost/phpmyadmin)
les lignes sont identique sauf le référence par ce que auto-incrément
0
Utilisateur anonyme
31 mai 2015 à 23:05
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 ?
0
sabrina_mef Messages postés 16 Date d'inscription vendredi 8 mai 2015 Statut Membre Dernière intervention 2 juillet 2015
31 mai 2015 à 23:09
je travaille avec cms wordpress
0
Utilisateur anonyme
31 mai 2015 à 23:21
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.
0
sabrina_mef Messages postés 16 Date d'inscription vendredi 8 mai 2015 Statut Membre Dernière intervention 2 juillet 2015
31 mai 2015 à 23:42
j'ai pensé que tu vas donner une réponse, dommage
en tt cas merci bcp :)
0