Bonjour
Je cherche à insérer les données dans 2 tables différentes. 1 infosfacture corresponds à 1 ou plusieurs facturations.
Voici mes tables :
Code sql : 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 CREATE TABLE `infosfacture` ( `id_facture` int(11) NOT NULL AUTO_INCREMENT, `num` varchar(10) DEFAULT NULL, `client` text, `datefacture` DATETIME DEFAULT NULL, `facturede` text, `conditions` text ) ENGINE=MyISAM DEFAULT CHARSET=latin1; ---- Structure de la table `infosfacture` -- CREATE TABLE `facturation` ( `id_prestation` int(11) NOT NULL AUTO_INCREMENT, `fk_facturation_id` int(11) NOT NULL, `designation` text, `quantite` int(11) DEFAULT NULL, `prixht` decimal(10,2) DEFAULT NULL, ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
Voici mon code qui traite les données venant du formulaire :
Voici mon formulaire :
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 <?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; $designation = isset($_POST['designation']) ? $_POST['designation'] : NULL; $quantite = isset($_POST['quantite']) ? $_POST['quantite'] : NULL; $prixht = isset($_POST['prixht']) ? $_POST['prixht'] : NULL; $datefacture = isset($_POST['datefacture']) ? $_POST['datefacture'] : NULL; $facturede = isset($_POST['facturede']) ? $_POST['facturede'] : NULL; $conditions = isset($_POST['conditions']) ? $_POST['conditions'] : NULL; //var_dump($_POST); // generate request params $params = []; $values = ''; $facturation = []; foreach ($_POST['designation'] as $key => $designation) { $params[':designation' . $key] = $designation; $params[':num' . $key] = $_POST['num']; $params[':client' . $key] = $_POST['client']; $params[':quantite' . $key] = $_POST['quantite'][$key]; $params[':prixht' . $key] = $_POST['prixht'][$key]; $params[':datefacture' . $key] = $_POST['datefacture']; $params[':facturede' . $key] = $_POST['facturede']; $params[':conditions' . $key] = $_POST['conditions']; $values1 .= '(:num' . $key . ' , :client' . $key . ', :datefacture' . $key . ', :facturede' . $key . ', :conditions' . $key . '),'; // prepare facturation data $facturation[] = [ 'designation' => $designation, 'num' => $_POST['num'][$key], 'client' => $_POST['client'][$key], 'quantite' => $_POST['quantite'][$key], 'prixht' => $_POST['prixht'][$key], 'datefacture' => $_POST['datefacture'][$key], 'facturede' => $_POST['facturede'][$key], 'conditions' => $_POST['conditions'][$key] ]; } //var_dump($_POST['num'][$key]); // remove trailing "," $values1 = rtrim($values1, ','); $req1 = $base->prepare('INSERT INTO infosfacture (num, client, datefacture, facturede, conditions) VALUES '. $values1); //$sql= $base->prepare('SELECT id FROM infosfacture WHERE id='.$fk) $values2 .= '(:designation' . $key . ', :quantite' . $key . ', :prixht' . $key . ', LAST_INSERT_ID()),'; $values2 = rtrim($values2, ','); $req2 = $base->prepare('INSERT INTO facturation (designation, quantite, prixht, fk_facturation_id) VALUES '. $values2); BEGIN; $req1->execute($params); $req2->execute($params); COMMIT; $base = null; ?>
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 <!DOCTYPE html><html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width"/> <title>Créer une facture</title> <link rel="stylesheet" href="style.css" media="all" /> <link rel="icon" type="image/png" href="favicon.png" /> </head> <body> <br/><br/> <main> <?php require_once('includes/menu.php') ?> <br/><br/><br/> <form action="afficheFacture2.php" method="post"> <fieldset> <legend>Infos de base</legend> <label>Numéro de la facture *</label><br/> <input type="text" placeholder="Numéro de la facture" name="num" required><br/><br/> <label>Date de la facture *</label> <input type="text" placeholder="15/03/2018" name="datefacture" required><br/><br/> <label>Infos de votre entreprise *</label><br/> <textarea id="facturede" name="facturede" rows="4" cols="45" placeholder="Votre entreprise: Raison sociale, adresse.." required></textarea><br/><br/> <label>Infos de votre client *</label><br/> <textarea name="client" rows="4" cols="45" placeholder="Facturé à: Raison sociale, adresse.." required> </textarea> <br/><br/> <label>Conditions et moyens de paiement *</label><br/> <textarea name="conditions" rows="10" cols="45" placeholder="Conditions et paiements" required></textarea> </fieldset><br/> <fieldset> <legend>Contenu de la facture *</legend> <div id="ID_container"> <textarea name="designation[]" rows="4" placeholder="Designation" required></textarea> <input type="number" placeholder="Quantité" name="quantite[]" required> <input type="number" placeholder="Prix HT" name="prixht[]" required> </div> <button type="button" onclick="ajout(this);">+ Ajouter une designation</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>
Partager