par
Cyrano » 28 avr. 2008, 16:12
-2- Créer la requête d'insertion des articles pour la commande:
À ce stade, tu vas stocker dans un tableau chaque ligne SQL correspondant à un article, chaque ligne sera :
Où
- xyz est l'identifiant du produit que tu devrais avoir dans ton panier;
- abc est l'identifiant de la commande récupéré lors de la précédente requête;
- 1 est la quantité de l'article que tu dois trouver dans ton panier aussi.
Pourquoi mettre ca dans la table commande? c'est pas plustot dans la table ligne_commande (ou commande_has_article sur ton schéma) ??
Oui, tu as parfaitement raison. Et ce que j'ai décrit aboutit à une requête unique en insertion multiple, donc une requête de la forme :
Code : Tout sélectionner
INSERT INTO ligne_commande (col_x, col_y, ..., col_z) VALUES
('val_x ligne 1', 'valy ligne 1', ..., 'valz ligne 1),
('val_x ligne 2', 'valy ligne 2', ..., 'valz ligne 2),
...,
('val_x ligne n', 'valy ligne n', ..., 'valz ligne n);
Donc en fait, dans la boucle, tu vas construire un tableau qui va contenir chacune des lignes de données à insérer "
('val_x ligne n', 'valy ligne n', ..., 'valz ligne n)" : si ton tableau se nomme par exemple $aInsert, tu feras un :
$sInsert = implode(',', $aInsert);
Et enfin, tu fais :
$sql = "INSERT INTO commande (nump, numcdecl, qte) VALUES". $sInsert;
Là, la requête est prête a être exécutée. Ajoute un
echo($sql); pour l'afficher et l'inspecter avant exécution par précaution, mais ça devrait bien aller.
[quote="sgrunt"][quote]
-2- Créer la requête d'insertion des articles pour la commande:
[code]INSERT INTO commande (nump, numcdecl, qte) VALUES[/code] À ce stade, tu vas stocker dans un tableau chaque ligne SQL correspondant à un article, chaque ligne sera :
[code](xyz, abc, 1)[/code]
Où
- xyz est l'identifiant du produit que tu devrais avoir dans ton panier;
- abc est l'identifiant de la commande récupéré lors de la précédente requête;
- 1 est la quantité de l'article que tu dois trouver dans ton panier aussi.
[/quote]
Pourquoi mettre ca dans la table commande? c'est pas plustot dans la table ligne_commande (ou commande_has_article sur ton schéma) ??[/quote]
Oui, tu as parfaitement raison. Et ce que j'ai décrit aboutit à une requête unique en insertion multiple, donc une requête de la forme :
[code]INSERT INTO ligne_commande (col_x, col_y, ..., col_z) VALUES
('val_x ligne 1', 'valy ligne 1', ..., 'valz ligne 1),
('val_x ligne 2', 'valy ligne 2', ..., 'valz ligne 2),
...,
('val_x ligne n', 'valy ligne n', ..., 'valz ligne n);
[/code]
Donc en fait, dans la boucle, tu vas construire un tableau qui va contenir chacune des lignes de données à insérer "[i]('val_x ligne n', 'valy ligne n', ..., 'valz ligne n)[/i]" : si ton tableau se nomme par exemple $aInsert, tu feras un :
[php]$sInsert = implode(',', $aInsert);[/php]
Et enfin, tu fais :
[php]$sql = "INSERT INTO commande (nump, numcdecl, qte) VALUES". $sInsert;[/php]
Là, la requête est prête a être exécutée. Ajoute un [i]echo($sql);[/i] pour l'afficher et l'inspecter avant exécution par précaution, mais ça devrait bien aller.