Page 1 sur 1

formulaire enregistré avant d'être renseigné !

Posté : 27 sept. 2018, 09:37
par phibad
Bonjour
Il s'agit pour un trésorier d'enregistrer des cotisations.
Dans un premier fichier (enregistrecotis1.php) on choisit le cotisant : on détermine la variable de session "idmembrechoisi". Puis on passe au fichier du formulaire que voici : "enregistrecotis2.php".
Voici l'erreur : l'enregistrement des données se fait dès l'arrivée sur cette deuxième page, avant que le formulaire soit rempli.
Je dois mal comprendre le "if(isset($submit)){" qui est placé en fin de page, avant l' INSERT. Ne devrait-il pas lancer l'INSERT seulement quand il y a submit ?
Quelqu'un peut-il m'aider ?

Code : Tout sélectionner

<?php session_start(); var_dump($_SESSION); $pseudo =isset($_SESSION['pseudo']) ?$_SESSION['pseudo']:""; $mp =isset($_SESSION['mp']) ?$_SESSION['mp']:""; $nom =isset($_POST['nom']) ?$_POST['nom']:""; $prenom =isset($_POST['prenom']) ?$_POST['prenom']:""; $email =isset($_POST['email']) ?$_POST['email']:""; $jour =isset($_POST['jour']) ?$_POST['jour']:""; $mois =isset($_POST['mois']) ?$_POST['mois']:""; $idannee =isset($_POST['idannee']) ?$_POST['idannee']:""; $tel =isset($_POST['tel']) ?$_POST['tel']:""; $submit=isset($_POST['submit'])?$_POST['submit']:""; $_POST['idmembre']= isset($_POST['idmembre'])?$_POST['idmembre']:""; $idcourant= isset($_SESSION['idcourant'])?$_SESSION['idcourant']:""; $idmembrechoisi= isset($_SESSION['idmembrechoisi'])?$_SESSION['idmembrechoisi']:""; $montant =isset($_POST['montant']) ?$_POST['montant']:""; $remarque =isset($_POST['remarque']) ?$_POST['remarque']:""; $datec =isset($_POST['datec']) ?$_POST['datec']:""; $dateenr =isset($_POST['dateenr']) ?$_POST['dateenr']:""; ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>accueil</title> <meta http-equiv="content-type" content="text/html; charset=utf8" /> <link rel="StyleSheet" href="style2.css" type="text/css"> </head> <body> <div class="bloc_page"> <?php include("bandeauhaut2.php"); include ("fonction.php"); include ("bonjour4.php"); ?> <p><a href="indextsr6.php">Retour au menu</a></p> <?php $req= $bdd->prepare('SELECT * FROM membres WHERE idmembre=:idmembre') ; $req->execute(array('idmembre'=>$_SESSION['idmembrechoisi'])); while ($donnees=$req->fetch()){ echo "<h1>".htmlspecialchars($donnees['prenom'])." ".htmlspecialchars($donnees['nom'])."</h1>"; var_dump($_SESSION); } ?> <!--------------------------------COTISATION----------------------------------------- --> <h5>Cotisations des années précédentes : </h5> <table> <tr> <td>année</td> <td>montant</td> <td>remarque </td> </tr> <?php $req=$bdd->prepare(' SELECT * from membres m INNER JOIN mpmcotisation c ON c.idmembre=m.idmembre WHERE c.montant>0 AND m.idmembre=:idmembre ORDER BY c.idannee'); $req->execute(array('idmembre'=>$_SESSION['idmembrechoisi'])); while ($base =$req->fetch()){ ?> <tr><td><?php echo htmlspecialchars($base['idannee']);?></td> <td><?php echo htmlspecialchars($base['montant']);?> </td> <td><?php echo htmlspecialchars($base['remarque']);?></td> <?php } ?> </tr> </table> <br /><br /> <a href="indextsr6.php">Retour </a></p> </div> <br /> <!-- -----------------------ENREGISTREMEN>T D UNE NOUVELLE--------------COTISATION----------------------------------------- --> <?php $req=$bdd->prepare('select * from membres WHERE idmembre =:idmembrechoisi') ; $req->execute(array('idmembrechoisi'=>$_SESSION['idmembrechoisi'])); while ($resultat=$req->fetch()){ echo "<h1>Enregistrer la nouvelle cotisation de ".$resultat['prenom']." ".$resultat['nom']."</h1>"; } ?> <div class="boitelarge"> <form method="post" action="enregistrecotis2.php"> <p>n° de la saison (2018/19 = 4) <input type="text" name="idannee"></p> <p>Date d'enregistrement (date du jour) </p> <p> <?php $dateenr = date("Y-m-d"); Print(" $dateenr"); ?></p> <p>Date du chèque ou du paiement</p> <input type="date" name="datec" value="<?php echo $datec;?>"> <br> <p>Montant </p> <input type="text" name="montant"></p> <p>Remarque</p> <input type="textarea" name="remarque" rows="5"></textarea><br> <br> <input type="submit" name="submitx" value="Enregistrer la cotisation" class="submit"> </form> <?php if(isset($submit)){ $req = $bdd -> prepare('INSERT INTO cotisation ( idannee,idmembre, dateenr,datec, montant,remarque) VALUES (:idannee,:idmembre,:dateenr,:datec,:montant,:remarque)'); $req->execute(array('idannee'=>$idannee,'idmembre'=>$_SESSION['idmembrechoisi'], 'dateenr'=>$dateenr,'datec'=>$datec,'montant'=>$montant,'remarque'=>$remarque)); var_dump($_SESSION); ?> <h3>Vous pouvez maintenant</h3> <ul> <li><a href="enregistrecotis1.php">enregistrer la cotisation d'un autre membre </a> </li> <li><a href="afflescotisations2016.php">afficher les cotisations 2016/17</a> </li> <li><a href="indextsr6.php">effectuer une autre action</a> </li> </ul> <?php } ?> </div> </body> </html>

Re: formulaire enregistré avant d'être renseigné !

Posté : 27 sept. 2018, 11:20
par phibad
J'ai trouvé une coquille : submitx au lieu de submit.
J'ai corrigé mais le problème reste...

Re: formulaire enregistré avant d'être renseigné !

Posté : 27 sept. 2018, 11:40
par phibad
J'ai déplacé le bloc "cotisations enregistrées" et ça marche...
Bizarre. Est-ce que la coquille sur le submit a quand même joué ?

Re: formulaire enregistré avant d'être renseigné !

Posté : 27 sept. 2018, 11:47
par phibad
Je ne suis toujours pas au point : en fait chaque fois que la page est rafraichie, une ligne (vide) s'ajoute dans la bdd.
Heureusement, les données saisies sont enregistrées.
J'avais déjà eu ce problème et je ne sais plus comment je l'ai résolu !
Si quelqu'un a une idée...

Re: formulaire enregistré avant d'être renseigné !

Posté : 28 sept. 2018, 12:19
par phibad
J'ai trouvé, c'est trop simple pour que je ne me sente pas idiot...
Mais pourquoi personne ne me l'a dit ?
Il suffisait que je mette une condition de variable non vide avant l'insertion.