insérer des données générés en javascript dans une base de données

Eléphanteau du PHP | 31 Messages

26 janv. 2022, 12:18

Bonjour,
je ferai un effort pour être clair.
j'ai des données que je reçois dune base de données mysql et que je veux afficher grâce au foreach. Quand je les reçois, grâce à du javascript, je multiplie les lignes.Car j'associe à chaque matière une date précise selon la ligne. Mais le problème est qu'il n'associe pas les dates précises à la ligne voulue et aux disciplines voulues. il n'affiche non plus toutes les matières.

voici l'erreur que cela affiche:Notice: Undefined offset: 2 in C:\wamp64\www\array\regle.php on line 12
voici mes codes.la partie html javascript:

Code : Tout sélectionner

<?php session_start(); ?> <html> <head> <title>Les inscrits</title> </head> <meta charset="utf-8"> <body onload="init()"> <body> <form method="post" action="regle.php" enctype="multipart/form-data"> <table style="text-align: left; width: 100%;" border="0" cellpadding="2" cellspacing="2"> <tbody> <tr> <td valign="top"> <script> // variables globales var oTrClone, // 1st ligne clonée oTbody; // tBody pour ajout/suppression ligne function init(){ // récup. TABLE concernée var oTable = document.getElementById("tableau"); // récup. TBODY pour ajout/suppression oTbody = oTable.tBodies[0]; // création d'un clone de la 1st ligne oTrClone = oTbody.rows[0].cloneNode(true); } function renumLigne(){ var i, nbLig = oTbody.rows.length; // modification numéro de la ligne for( i=0; i < nbLig; i++){ oTbody.rows[i].cells[0].innerHTML = i+1; } } function addLigne(){ // Ajout d'un clone de la ligne clonée oTbody.appendChild( oTrClone.cloneNode(true)); // renumérotation renumLigne(); } function delLigne( obj){ // récup. ligne concernée var oTr = obj.parentNode.parentNode; // BUTTON -> TD -> TR // suppression de la ligne oTbody.removeChild( oTr); // si il n'y a plus de ligne cela reviens à effacer if( !oTbody.rows.length){ addLigne(); } else{ // renumérotation renumLigne(); } } </script> <div id="main"> <button type="button" onclick="addLigne();">Ajouter une discipline</button> <table id="tableau"> <thead> <tr> <th>n°</th> <th>MATIERE</th> <th>DATE</th> </tr> </thead> <tbody> <!-- ligne devant être clonée --> <tr> <td>1 </td> <th> <?php $sql = "SELECT matiere FROM filiere ORDER BY matiere ASC "; require("configu.php"); foreach ($bdd->query($sql) as $data) { // on affiches les résultats dans la tale ?> <input name="discipline[]" type="text" value=" <?php echo ''.$data['matiere'].''; ?>" > <br> <?php } ?> </th> <td> <input type="date" name="daty[]" /> </td> </tr> <!-- FIN ligne devant être clonée --> </tbody> </table> <button type="submit" >ENREGISTRER PLUSIEURS DISCIPLINES</button> </form> </body> </html>
voici le code php:

Code : Tout sélectionner

<?php session_start(); ?> <?php foreach ($_POST['discipline'] as $i => $nomk ) { echo''.$_POST['discipline'][$i].'-'. $_POST['daty'][$i].'<br/> ' ; } ?>
merci infiniment d'avance
]

Avatar du membre
Mammouth du PHP | 1564 Messages

26 janv. 2022, 22:31

Dans regle.php fais un var_dump de $_POST pour voir ce que tu envoi.

Eléphanteau du PHP | 31 Messages

27 janv. 2022, 16:59

ok, j'ai essayé

Petit nouveau ! | 2 Messages

28 janv. 2022, 00:11

Bonsoir,

La balise input "discipline" est créé au sein d'une boucle foreach sur le résultat d'une requête. La présence du foreach suppose que la requête est susceptible de remonter plusieurs matières, on aura donc plusieurs input "discipline" qui seront générés.

La balise daty est seule quant à elle. On peut donc avoir une situation où on va avoir 4 entrées discipline mais une seule date.

Donc, dans cette boucle :
<?php
foreach ($_POST['discipline'] as $i => $nomk ) {
echo''.$_POST['discipline'][$i].'-'. $_POST['daty'][$i].'<br/> ' ;
}
On va boucler sur le nombre d'entrées dans le tableau "discipline", 4 si on garde l'exemple précédent, mais 1 dans "daty".
La première itération devrait bien se dérouler, mais à partir de la seconde $_POST['daty'][$i] génèrera certainement une erreur car on ne devrait pas aller plus loin que l'index 0 alors que $i vaudra 1.

Eléphanteau du PHP | 31 Messages

30 janv. 2022, 17:56

Excusez moi pour mon absence.vous avez bien compris mon problème.Que dois donc faire pour résoudre le problème?