Bonjour

Je vous en prie, aidez-moi !

J'ai un formulaire html que je souhaiterais envoyer les données dans la bd mysql mais ça ne marche pas, aidez-moi svp. Dans ce formulaire y a une partie du code en Javascript.

Voici mon formulaie.php

Code html : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<!DOCTYPE html><html lang="en">
  <head>
    <meta charset="utf-8">
    <title>Créer une facture</title>
    <link rel="stylesheet" href="style.css" media="all" />
  </head>
  <body>
    <br/><br/>
    <main>
<?php require_once('includes/menu.php') ?>
<br/><br/><br/>
<form action="afficheFactureCours.php" method="post">
  <fieldset>
    <legend>Infos de votre entreprise</legend>
    <textarea id="facturede" name="facturede" rows="4" cols="45"
      placeholder="Votre entreprise: Raison sociale, adresse.." required></textarea><br/><br/>
  </fieldset><br/>
 
 
  <fieldset>
    <legend>Infos de base</legend>
    <input type="text" placeholder="Numéro de la facture" name="num"><br/><br/>
    <label>Date de la facture </label>
    <input type="date" name="dateFacture"><br/><br/>
    <textarea name="client" rows="4" cols="45"
        placeholder="Facturé à: Raison sociale, adresse.." required>
    </textarea>
    <br/><br/>
    <textarea name="conditions" rows="10" cols="45"
        placeholder="Conditions et paiements" required></textarea>
  </fieldset><br/>
 
 
            <fieldset>
            <legend>Contenu de la facture formation</legend>
            <div id="ID_container">
            <textarea name="prestation[]" rows="4"
              placeholder="Prestation" required></textarea>
            <input type="number" placeholder="Nombre de jours" name="nbjours[]" required>
            <input type="number" placeholder="Tarif journalier" name="tarifjour[]" required>
            </div>
            <button type="button" onclick="ajout(this);">+ Ajouter une prestation</button>
            <!-- <input type="number" placeholder="Taxe" name="taxe"><br/><br/> -->
            <!-- <input type="number" placeholder="Total du montant HT" name="montantHT"><br/><br/> -->
            </fieldset>
<br/>
    <input type="submit" value ="Créer une facture" />
      </form>
      <br/>
    </main>
      <?php require_once('includes/footer.php') ?>
 
 
<script src="js/fonctions.js"></script>
  </body>
</html>

Voici le fichier de traitement du formulaire afficheFactureCours.php
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
<?phprequire_once 'connexion.php';
// On vérifie si la variable existe et sinon elle vaut NULL
$num = isset($_POST['num']) ? $_POST['num'] : NULL;
$client = isset($_POST['client']) ? $_POST['client'] : NULL;
$prestation = isset($_POST['prestation']) ? $_POST['prestation'] : NULL;
$nbjours = isset($_POST['nbjours']) ? $_POST['nbjours'] : NULL;
$tarifjour = isset($_POST['tarifjour']) ? $_POST['tarifjour'] : NULL;
$dateFacture = isset($_POST['dateFacture']) ? $_POST['dateFacture'] : NULL;
$facturede = isset($_POST['facturede']) ? $_POST['facturede'] : NULL;
$conditions = isset($_POST['conditions']) ? $_POST['conditions'] : NULL;
 
 
// generate request params
$params = [];
$values = '';
$facturation = [];
foreach ($_POST['prestation'] as $key => $prestation) {
    $params[':prestation' . $key] = $prestation;
    $params[':num' . $key]    = $_POST['num'][$key];
    $params[':client' . $key]    = $_POST['client'][$key];
    $params[':nbjours' . $key]    = $_POST['nbjours'][$key];
    $params[':tarifjour' . $key]  = $_POST['tarifjour'][$key];
    $params[':dateFacture' . $key] = $_POST['dateFacture'][$key];
    $params[':facturede' . $key] = $_POST['facturede'][$key];
    $params[':conditions' . $key] = $_POST['conditions'][$key];
 
 
    $values .= '(:num' . $key . ' , :client' . $key . ', :prestation' . $key . ', :nbjours' . $key . ', :tarifjour' . $key . ', :dateFacture' . $key . ', :facturede' . $key . ', :conditions' . $key . '),';
 
 
    // prepare facturation data
    $facturation[] = [
      'prestation' => $prestation,
      'num'  => $_POST['num'][$key],
      'client'  => $_POST['client'][$key],
      'nbjours'    => $_POST['nbjours'][$key],
      'tarifjour'  => $_POST['tarifjour'][$key],
      'dateFacture'  => $_POST['dateFacture'][$key],
      'facturede'  => $_POST['facturede'][$key],
      'conditions'  => $_POST['conditions'][$key]
    ];
}
// remove trailing ","
$values = rtrim($values, ',');
$req = $base->prepare('INSERT INTO facturation (num, client, prestation, nbjours, tarifjour, dateFacture, facturede, conditions) VALUES '. $values);
$req->execute($params);
echo "les données ont bien étés insérées dans la base de données";
$base = null;
?>
 
 
<table>
  <thead>
    <tr>
      <th>Num</th>
      <th>Client</th>
      <th>Prestation</th>
      <th>Nb jours</th>
      <th>Tarif /jour</th>
      <th>Total</th>
      <th>Date</th>
      <th>De</th>
      <th>Conditions</th>
    </tr>
  </thead>
  <tbody>
    <?php foreach ($facturation as $presta) : ?>
    <tr>
        <td class="desc"><?= $presta['num'] ?></td>
        <td class="desc"><?= $presta['client'] ?></td>
        <td class="desc"><?= $presta['prestation'] ?></td>
        <td class="qty"><?= $presta['nbjours'] ?></td>
        <td class="unit"><?= $presta['tarifjour'] ?></td>
        <td class="total"><?= $presta['tarifjour'] * $presta['nbjours'] ?></td>
        <td class="desc"><?= $presta['dateFacture'] ?></td>
        <td class="desc"><?= $presta['facturede'] ?></td>
        <td class="desc"><?= $presta['conditions'] ?></td>
      </tr>
    <?php endforeach; ?>
  </tbody>
</table>
Voici l'erreur que j'ai:
Fatal error: Uncaught PDOException: SQLSTATE[22007]: Invalid datetime format: 1292 Incorrect date value: '2' for column 'dateFacture' at row 1 in C:\Program Files (x86)\EasyPHP-Devserver-17\eds-www\Facturation\afficheFactureCours.php:44Stack trace:#0 C:\Program Files (x86)\EasyPHP-Devserver-17\eds-www\Facturation\afficheFactureCours.php(44): PDOStatement->execute(Array)#1 {main} thrown in C:\Program Files (x86)\EasyPHP-Devserver-17\eds-www\Facturation\afficheFactureCours.php on line 44
Si besoin voici mon fichier javascript qui génère certains champs du formulaire :
Code js : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function ajout(element){        var container = document.getElementById('ID_container');
 
 
        var str ='<span><textarea name="prestation[]" rows="4" type="text" placeholder="Prestation"></textarea>    </span><span><input name="nbjours[]" type="number" placeholder="Nombre de jour">    </span><span><input name="tarifjour[]" type="number" placeholder="Tarif journalier">    </span><span><button type="button" onclick="suppression(this)">x</button></span><br/>';        
        var divNewExp = document.createElement("div");
        divNewExp.innerHTML = str ;
        container.appendChild(divNewExp);
 
 
      }
 
 
function suppression(element){
        var container = document.getElementById('ID_container');
        container.removeChild(element.parentNode.parentNode);
      }