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
Voici l'erreur que j'ai:
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>
Si besoin voici mon fichier javascript qui génère certains champs du formulaire :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
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); }
Partager