Insertion de plusieurs formulaires en BDD

Fermé
abirgl Messages postés 127 Date d'inscription lundi 31 octobre 2016 Statut Membre Dernière intervention 20 juin 2017 - 20 déc. 2016 à 10:33
nagaD.scar Messages postés 4272 Date d'inscription samedi 8 septembre 2007 Statut Membre Dernière intervention 4 janvier 2023 - 22 déc. 2016 à 15:30
Bonjour,
Comment je peux récupérer le contenu de plusieurs formulaires pour les inserer en BDD ? Est ce que les éléments d'un formulaire sont visible en déhors de ceci ? S'il vous plait j'ai besoin de votre réponse et non de votre suppression de mon post , lorsque je demande votre aide c que j'ai pas trouvé une réponse même si la question était posé avant,
Merci d'être compréhensif


A voir également:

1 réponse

nagaD.scar Messages postés 4272 Date d'inscription samedi 8 septembre 2007 Statut Membre Dernière intervention 4 janvier 2023 251
20 déc. 2016 à 11:11
Salut,

Si ton post est supprimé c'est très probablement du à sa formulation ...

Quand tu fais une demande essaie au minimum d'expliquer le contexte, ce qui est en place etc.

Dans le cas du dev donc: du code. Dans ton cas: le code correspondant aux formulaires, le code qui est censé traiter ces formulaires une fois le/les submit(s) fait.
Aussi, monter que tu as un minimum essayé de faire quelque chose ou au moins recherché des solutions donnera aux helpers un peu plus l envie de t aider.

Bref reformule proprement ta demande en donnant des informations spécifiques, et tu auras très probablement de l aide.


naga
0
abirgl Messages postés 127 Date d'inscription lundi 31 octobre 2016 Statut Membre Dernière intervention 20 juin 2017
Modifié par abirgl le 20/12/2016 à 12:06
Salut,
j'ai déjà expliqué mon besoin malgré ça mon post était supprimé (motif de suppression: Le message était posté en double dans le forum),malgré que j'ai pas trouvé une solution pour ce problème même si c'était déjà posté,
Bref, je ré-explique :
Dans ma page, j'ai 5 formulaires, chaque formulaire est associé à une action ( page php qui me permet de sauvegarder le contenu du formulaire dans une table de ma BDD) ,
Le dernier formulaire contient un bouton de validation, ce bouton doit sauvegarder tous les éléments de la page dans une autre table de ma base (il doit sauvegarder les éléments des autres formulaire aussi ), mon problème est : comment récupérer le contenu des autres formulaires pour pouvoir sauvegarder le tout ?
(PS: Je peux pas mettre tous les éléments de ma page dans un seul formulaire car j'ai plusieurs submit et chaque submit doit exécuter une page php différente)
Voici mes formulaires:
Premier formulaire :

<form role="form" name="fmodif" action="CreerIntervention.php?id=<?php echo $numero_ordre_de_travail; ?>" method="POST">
<?php
$sql="select CClient, RaisonSociale, DateRattachement,HeureDebut,HeureFin from GP_Rattachement
where NOrdredeTravail='$numero_ordre_de_travail' and NRattachement='$numero_rattachement' ";
$stmt = sqlsrv_query( $conn, $sql );
while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_NUMERIC) )
{
?>
<fieldset>
<div class="form-group">
<label >Date Intervention :</label>
<input class="form-control" type="date" name="datedebut" value=<?php echo date_format($row[2], 'Y-m-d') ?> disabled>
<input type="hidden" name="datedebut" value=<?php echo date_format($row[2], 'Y-m-d') ?> />
</div>
<div class="form-group">
<label for="disabledSelect">N° OT :</label>
<input class="form-control" name="not" type="text" value=<?php echo $numero_ordre_de_travail ?> disabled>
</div>
<div class="form-group">
<label for="disabledSelect">N° Intervention:</label>
<input class="form-control" name="not" type="text" value=<?php echo $numero_rattachement ?> disabled>
</div>
<div class="form-group">
<label>Client</label>
<input class="form-control" type="text" name="raisonsociale" value="<?php echo $row[0]." | ".$row[1] ?>" disabled="disabled" />
<input type="hidden" name="raisonsociale" value="<?php echo $row[0]." | ".$row[1] ?>" />
</div>
</form>



Mon deuxième formulaire :

<form name="fhd" action="modifHDeb.php?id=<?php echo $numero_ordre_de_travail.$numero_rattachement; ?> " method="POST">
<p align="center">
<input type="submit" class="btn btn-primary" name="hrdeb" value="Heure Début" onclick="AfficherHeureDebut();">
<input type="time" name="heuredebut" id="heuredebut" required value="<?php echo $row[3]; ?>" />
</p>
</form>

3 ème formulaire:

<form name="fhf" action="modifHFin.php?id=<?php echo $numero_ordre_de_travail.$numero_rattachement; ?> " method="POST">
<p align="center">
<input type="submit" class="btn btn-primary" value="Heure Fin" name="hrfin" onclick="AfficherHeureFin();">
<input type="time" name="heurefin" id="heurefin" value="<?php echo $row[4]; ?>" />
</p>
</form>


4ème formulaire:

<form name="farticles" action="InsertionArticles.php?id=<?php echo $UpdateLink; ?>" method="POST">
<table class="table table-striped table-bordered table-hover" id="dataTables-example">
<thead>
<tr>
<th>Désignation</th>
<th>QTE OT</th>
<th>QTE Restante</th>
<th>QTE Réalisée</th>
</tr>
</thead>
<tbody>
<tr class="odd gradeX">
<?php
$sqlmatpre="select CArticle, LibArticle,QuantiteOT,QuantiteOTRes,QuantitePreparee from GP_OrdredeTravailDetail
where NOrdredeTravail='$numero_ordre_de_travail'";
$stmtmatpre = sqlsrv_query( $conn, $sqlmatpre );
while( $rowmat = sqlsrv_fetch_array( $stmtmatpre, SQLSRV_FETCH_NUMERIC) )
{
$indexArticle=$rowmat[0]." | ".$rowmat[1].$numero_ordre_de_travail.$numero_rattachement;
?>
<td><input type="text" style="border:0px" name="libArticle[]" value="<?php echo $rowmat[0]." | ".$rowmat[1]; ?>" disabled="disabled" >
<input type="hidden" style="border:0px" name="libArticle[]" value="<?php echo $rowmat[0]." | ".$rowmat[1]; ?>" >
</td>
<td><input type="text" size="5" style="border:0px" name="quantiteOT[]" value="<?php echo $rowmat[2]; ?>" ></td>
<td><input type="text" size="5" style="border:0px" name="quantiteRestante[]" value="<?php echo $rowmat[3]; ?>"> </td>
<td><input type="text" size="5" style="border:0px" align="center" name="quantiteRealisee[]" value="<?php echo $rowmat[4]; ?>"></td>

</tr>
</tbody>
<?php
}
?>
</table>
</div>
</div>
<p align="center">
<button type="submit" class="btn btn-primary">Enregistrer</button>
</p>
</form>


dernier formulaire (ceci est le formulaire qui contient le bouton valider et qui doit me permettre de sauvegarder le contenu de toute ma page )

<form name="fvalid" method="POST" action="">
<br>
<p align="center">
<input type="submit" name="validation" class="btn btn-primary"
value="Valider" onclick="if(window.confirm('Voulez-vous vraiment valider ? \n La validation vous empêchera de toute modification ultérieure'))
{return true;}else{return false;}">
</p>
</form>


Maintenant je vous montre mon effort et comment j'ai raisonné pour effectuer la validation:

<?php
if(isset($_POST['validation']))
{
$hrdb=$_POST['heuredebut'];
$hrfn=$_POST['heurefin'];
if(isset($_POST['libArticle']))
{
$Article=$_POST['libArticle'];
$qteArtOT=$_POST['quantiteArticle'];
$qteArtCsm=$_POST['quantiteConsommee'];
$nbArt=count($Article);
for ($xart=0; $xart < $nbArt; $xart++)
{
$Articlei=$Article[$xart];
$qteOTArti=$qteArtOT[$xart];
$qteCsmArti=$qteArtCsm[$xart];
$sql_update_qte_art="update GP_RattachementArticle set Quantite='$qteCsmArti' where CArticle='$code_article_i' and ..... ";
$stmt_update_qte_art=sqlsrv_query($conn, $sql_update_qte_art);
if($stmt_update_qte_art ===false)
{
die(print_r(sqlsrv_errors(),true));
}
else
echo "<br> Modification de GP_RattachementArticle effectuée avec succès <br>";
}
}

$sql_update_rattachement="update GP_Rattachement set HeureDebut='$hrdb', HeureFin='$hrfn' where .... ";
$stmt_update_rattachement=sqlsrv_query($conn,$sql_update_rattachement);
if($stmt_update_rattachement===false)
{
die(print_r(sqlsrv_errors(),true));
}
else
{
echo " Modification de GP_Rattachement effectuée avec succès ";
}

$sql_valid_ot="update GP_OrdredeTravail set BValid='True' where NOrdredeTravail='$numero_ordre_de_travail' ";
$stmt_valid_ot=sqlsrv_query($conn, $sql_valid_ot);
if($stmt_valid_ot === false)
{
die(print_r(sqlsrv_errors(),true));
}

}

?>

en cliquant sur le bouton valider, les messages d'erreurs suivants s'affichent:
Undefined index heuredebut ...
Undefined index heurefin ...
Je pense que l'heure début n'est pas visible en dehors du formulaire fhd , de même pour le reste ...
J'espère que j'ai pu clarifié mon problème et que vous pourrez m'aider et je vous pourrez m'aider
0
nagaD.scar Messages postés 4272 Date d'inscription samedi 8 septembre 2007 Statut Membre Dernière intervention 4 janvier 2023 251
20 déc. 2016 à 13:03
Donc, dans ton cas il faut juste que tu outrepasse le submit par défaut, soit ne pas créer de réelles "<form>".
Si j ai bien compris, tous les formulaires vont effectuer de submit standard (donc uniquement ce que contient le formulaire), sauf pour le dernier qui va devoir poster l integralité des formulaires (?).
Et donc, ce qu'il te faudra faire, c'est modifier le dernier formulaire de manière à gérer tes données POST en javascript:

<form name="fvalid" method="POST" action="">
<br>
<p align="center">
  <input type="submit" name="validation" class="btn btn-primary"
   value="Valider" onclick="if(window.confirm('Voulez-vous vraiment valider ? \n La validation vous empêchera de toute modification ultérieure'))
   {return true;}else{return false;}">
 </p>
</form>


va devenir:

<div>
   <br />
   <p align="center">
      <button type="button" onclick="completePost">Valider</button>
    </p>
</div>


Comme tu le vois, j ai assigné une fonction à l evenement onclick. Donc on définit la fonction:

function completePost(){
   if(window.confirm('Voulez-vous vraiment valider ? \n La validation vous empêchera de toute modification ultérieure')) {
    //On crée une form pour simuler un post
    var form = document.createElement("form_CompletePost");
    form.setAttribute("method", "post");
    form.setAttribute("action", ""); //ici tu renseignera la page qui recoit 


   //Et dans cette form on rentre tous les elements 
   
  //POUR CHAQUE ELEMENT A POSTER
            var hiddenField = document.createElement("input");//On créé un element 
            hiddenField.setAttribute("type", "hidden"); //on cache l element 
            hiddenField.setAttribute("name", "Nom element"); //sera le nom de la colonne dans ta variable $_POST
            hiddenField.setAttribute("value", "valeur element"); // on donne la valeur de l element

            form.appendChild(hiddenField); // on ajoute l element à la form à poster
   //FIN -> soit tu les mets manuellement, soit via un algo, comme tu voudra
    document.body.appendChild(form);//on insert notre form dans la page en tant que nouveau formulaire
    form.submit(); //Et donc là ou soumet le formulaire créé
}





Par contre dans tes différentes form, seul le dernier permet un submit, du coup je ne vois pas trop l interet d avoir différentes form => ca te complique la tâche et tout ce que ca permet concerne la mise en forme (ce qu une div fera tout aussi bien).

Pour aider un peu, tu peux récupérer les info d éléments via un getelementbyid par exemple :
element = document.getElementById('id_element');
</js>

et accéder simplement à ses attributs: 
<code js>
element.type;
element.name;
element.value;




naga
0
abirgl Messages postés 127 Date d'inscription lundi 31 octobre 2016 Statut Membre Dernière intervention 20 juin 2017
20 déc. 2016 à 16:14
Tous mes formulaire permettent des submit:
le premier formulaire permet un submit à CreerIntervention.php
le deuxième formulaire permet un submit à modifHDeb.php
le 3 ème formulaire permet un submit à modifHFin.php
le 4 ème formulaire permet un submit à InsertionArticles.php
J'ai fait exactement ce que vous m'avez conseillé , j'ai enlevé le bouton valider du formulaire et j'ai juste crée la fonction javascript comme indiquée alors par défaut le bouton valider exécute l'action du premier formulaire (la page CreerIntervention.php), ce qui n'est pas mon besoin
je crois que je dois garder le bouton valider dans un formulaire tout en précisant l'action qu'il doit exécuter, y'a il une autre méthode pour récupérer les éléments des autres formulaires ?
0
nagaD.scar Messages postés 4272 Date d'inscription samedi 8 septembre 2007 Statut Membre Dernière intervention 4 janvier 2023 251
20 déc. 2016 à 16:45
En effet il n y a que le premier qui n a pas de submit. Bref ca ne change rien.

Et encore une fois, sans code j ai pas vraiment moyen de faire quoi que ce soit.

Par contre j'ai ecris une erreur :

    var form = document.createElement("form_CompletePost");


est à remplacer par
    var form = document.createElement("form");


Par contre le code JS ne va pas submit le formulaire 1 à cause de l erreur, ca ne fera juste pas de post tout court.

J'ai donc testé :

<script>
function completePost(){
   if(window.confirm('Voulez-vous vraiment valider ? \n La validation vous empêchera de toute modification ultérieure')) {
	    //On crée une form pour simuler un post
	    var form = document.createElement("form");
	    form.setAttribute("method", "post");
	    form.setAttribute("action", "res.php"); //ici tu renseignera la page qui recoit 

		var el1 = document.getElementById('info1');
		var el2 = document.getElementById('info2');
		form.appendChild(el1); 
		form.appendChild(el2); 
	    document.body.appendChild(form);//on insert notre form dans la page en tant que nouveau formulaire
	    form.submit(); 
	}
}

</script>

<form name="fvalid" method="POST" action="res.php">
  <input type="text" name="validation1" class="info1" id="info1" value="1" />
  <button type="submit">Enregistrer</button>
</form>
<br />
<br />
<form name="fvalid" method="POST" action="res.php">
  <input type="text" name="validation2" class="info2" id="info2" value="2" />
  <button type="submit">Enregistrer</button>
</form>
<br />
<br />
<button type="button" onclick="completePost()">Valider</button>



avec "res.php" qui contient uniquement:

<?php print_r($_POST) ?>



Et ca fonctionne très bien.
0
abirgl Messages postés 127 Date d'inscription lundi 31 octobre 2016 Statut Membre Dernière intervention 20 juin 2017
20 déc. 2016 à 17:11

<script type="text/javascript">
function testValidation()
{
if(window.confirm('Voulez-vous vraiment valider ? \n La validation vous empêchera de toute modification ultérieure'))
{
var form=document.createElement("form");
form.setAttribute("method","post");
form.setAttribute("action","validation.php");

var hhdd=document.getElementById("heuredebut").value;
var hhff=document.getElementById("heurefin").value;
alert (hhdd);
alert (hhff);
form.appendChild(hhdd);
form.appendChild(hhff);
document.body.appendChild(form);
form.submit();
}
}
</script>


mon fichier validation.php contient juste l'affichage comme vous avez fait :

<?php
print_r($_POST);
?>

J'ai fait les alert pour tester s'il récupère l'heuredebut et l'heurefin ou nn et il les affiche correctement mais la page validation.php m'affiche Array([Validation]=>Valider), elle n'affiche pas heuredebut et heurefin :(
0