Bonjour, j'ai un problème.
Depuis un moment j'essaye de remplir ma base de données via php cependant je n'arrête pas d'avoir des erreurs du type "undefined array key" et autres c'est pourquoi je requiert votre aide j'ai un fichier SQL que voici:avec un dossier en JSON
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
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 DROP DATABASE IF EXISTS DB; CREATE DATABASE IF NOT EXISTS DB; USE DB; CREATE TABLE Produits ( id INT NOT NULL AUTO_INCREMENT, nom VARCHAR(255) NOT NULL, prixht DECIMAL(10,2) NOT NULL, prixttc DECIMAL(10,2) NOT NULL, descriptions TEXT NOT NULL, images VARCHAR(255) NOT NULL, PRIMARY KEY (id) ); CREATE TABLE Categories ( id INT NOT NULL AUTO_INCREMENT, categories VARCHAR(255) NOT NULL, PRIMARY KEY (id) ); CREATE TABLE Produits_Categories ( id_produit INT NOT NULL, id_categorie INT NOT NULL, PRIMARY KEY (id_produit, id_categorie), FOREIGN KEY (id_produit) REFERENCES Produits(id) ON DELETE CASCADE, FOREIGN KEY (id_categorie) REFERENCES Categories(id) ON DELETE CASCADE ); CREATE TABLE Utilisateurs ( id INT NOT NULL AUTO_INCREMENT, nom VARCHAR(255) NOT NULL, prenom VARCHAR(255) NOT NULL, email VARCHAR(255) NOT NULL, mot_de_passe VARCHAR(255) NOT NULL, username VARCHAR(255) NOT NULL, PRIMARY KEY (id) ); CREATE TABLE Commandes ( id INT NOT NULL AUTO_INCREMENT, id_utilisateur INT NOT NULL, dates DATETIME NOT NULL, PRIMARY KEY (id), FOREIGN KEY (id_utilisateur) REFERENCES Utilisateurs(id) ON DELETE CASCADE ); CREATE TABLE Commandes_Produits ( id_commande INT NOT NULL, id_produit INT NOT NULL, quantite INT NOT NULL, Total DECIMAL(10,2) NOT NULL, PRIMARY KEY (id_commande, id_produit), FOREIGN KEY (id_commande) REFERENCES Commandes(id) ON DELETE CASCADE, FOREIGN KEY (id_produit) REFERENCES Produits(id) ON DELETE CASCADE );et mon but et de pouvoir lié mes produits à mes catégories tout en évitant les doublons la seul parti du code qui fonctionne est celle-ci :
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 [ { "id": "1", "prixht": 35, "images": "https://contents.mediadecathlon.com/p1954220/k$1b13dd1cf1afc2104882f7f46ef0ce98/sq/raquette-de-tennis-enfant.jpg?format=auto&f=800x0", "nom": "Raquette de tenis", "descriptions": "Une bonne raquette vous permettant de vous défouler sur le terrain ou sur le visage de votre adversaire.\r\n", "categories": [ "Sport", "Loisir" ] }, { "id": "2", "prixht": 45, "images": "https://contents.mediadecathlon.com/p2332995/k$011566baa18cde77b9d17c4ef8776916/sq/survetement-adidas-sereno-noir.jpg?f=3000x3000", "nom": "Ensemble de survêtement", "descriptions": "Ensemble de vêtement vous laissant libres dans vos mouvements pour faire vos meilleurs High-Kick dans la bouche de votre cousin qui vous doit de l argent depuis au moins 3 mois. Non mais qu elle personne sensé ne rembourserai pas sa dette envers la famille pendant aussi longtemps ? On est d accord qu il mérite un pied bouche.\r\n", "categories": [ "Sport", "Habillage" ] }, { "id": "3", "prixht": 149.99, "images": "https://m.media-amazon.com/images/G/08/apparel/rcxgs/tile._CB483369919_.gif", "nom": "Micro-ondes", "descriptions": "Un micro-onde multi-fonction vous laissant la possibilité de cuire des aliments en tous genre comme un bon boeuf ou un petit hamster qui appartenait à votre petite soeur !!! Bah ouais il m a mordu donc il paye ce petit e***ler.\r\n", "categories": [ "Electronique", "Maison" ] }, { "id": "4", "prixht": 3.55, "images": "https://www.cascades.com/sites/default/files/2021-01/Produits_Integral_Boeuf_0.jpg", "nom": "Barquette de Goldwin", "descriptions": "Viande de Hamster de qualité supérieur, rien ne vos le bon goût d une viande bien cuite et préparer avec génie et douceur en y incorporant des pâtes et de bon légume mijoter par votre serviteur.\r\n", "categories": [ "Alimentaire" ] }, { "id": "5", "prixht": 12.99, "images": "https://www.sephora.fr/dw/image/v2/BCVW_PRD/on/demandware.static/-/Sites-masterCatalog_Sephora/default/dw3de37e43/images/hi-res/SKU/SKU_5/397386_swatch.jpg?sw=585&sh=585&sm=fit", "nom": "Rouge à lèvre Rose-oriental", "descriptions": "Ce rouge à lèvre d une couleur unique vous fera passer pour une impératice japonaise de l ère édo tellement il est parfait (ouais c est précis comme époque et alors !!!). Fait à partir de plantes, il est garantit 100% bio (WARNING produit testé sur le c*l de Goldwin).\r\n", "categories": [ "Beauté" ] } ]est-ce que quelqu'un aurait une idée de comment faire ? Merci d'avance.
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 <?php session_start(); include('ConnectDBnew.php'); global $connect; //utilisation d'un file_get_contents pour récupérer le contenu du fichier json $api = file_get_contents('produits.json'); $produits = json_decode($api); //var_dump($produits); // après test mon json est bien décoder $sql = file_get_contents('DB.sql'); $requete = $connect -> prepare($sql); $requete -> execute(); $categories = array(); foreach ($produits as $produit){ // var_dump($produits); //me retourne bien les produits $requeteprod = $connect -> prepare('INSERT INTO Produits (id, nom, prixht, descriptions, images) VALUES (:id, :nom, :prixht, :descriptions, :images)'); //la fonction prepare() permet d'executer plusieur fois la requete //var_dump($requeteprod); //la fonction est bien executer $requeteprod -> bindValue('id', $produit->id); $requeteprod -> bindValue('nom', $produit->nom); $requeteprod -> bindValue('prixht', $produit->prixht); $requeteprod -> bindValue('descriptions', $produit->descriptions); $requeteprod -> bindValue('images', $produit->images); $requeteprod -> closeCursor(); //closeCursor() libère la connexion au serveur, permettant ainsi à d'autres requêtes SQL d'être exécutées, mais laisse la requête dans un état lui permettant d'être de nouveau exécutée. $requeteprod -> execute(); } ?>
Partager