Conditions entre un Ficher PHP et JSON
Résolu/Fermé
DevRevoltium
Messages postés
37
Date d'inscription
lundi 20 juillet 2020
Statut
Membre
Dernière intervention
26 septembre 2023
-
6 janv. 2022 à 21:27
DevRevoltium Messages postés 37 Date d'inscription lundi 20 juillet 2020 Statut Membre Dernière intervention 26 septembre 2023 - 7 janv. 2022 à 01:57
DevRevoltium Messages postés 37 Date d'inscription lundi 20 juillet 2020 Statut Membre Dernière intervention 26 septembre 2023 - 7 janv. 2022 à 01:57
A voir également:
- Conditions entre un Ficher PHP et JSON
- Easy php - Télécharger - Divers Web & Internet
- Ficher rar - Guide
- Votre compte a été désactivé pour violation de nos conditions d’utilisation - Guide
- Mise en forme conditionnelle excel plusieurs conditions - Guide
- Condition et excel - Guide
19 réponses
jordane45
Messages postés
38353
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
27 décembre 2024
4 719
6 janv. 2022 à 21:35
6 janv. 2022 à 21:35
Bonjour
Il ne faut pas chercher à écrire le texte au format JSON à la main... Mais plutôt stocker les différentes variables dans un array
Puis utiliser la fonction json_encode..
Il ne faut pas chercher à écrire le texte au format JSON à la main... Mais plutôt stocker les différentes variables dans un array
Puis utiliser la fonction json_encode..
DevRevoltium
Messages postés
37
Date d'inscription
lundi 20 juillet 2020
Statut
Membre
Dernière intervention
26 septembre 2023
Modifié le 6 janv. 2022 à 21:38
Modifié le 6 janv. 2022 à 21:38
D'accord je vais essayer
Mais je fais comment pour lui mettre name, price, image dans un array ?
-DevRevoltium-
Mais je fais comment pour lui mettre name, price, image dans un array ?
-DevRevoltium-
blackmefias_3350
Messages postés
709
Date d'inscription
dimanche 20 septembre 2020
Statut
Membre
Dernière intervention
26 novembre 2024
61
6 janv. 2022 à 21:47
6 janv. 2022 à 21:47
Bonsoir,
je ne suis pas un pro de php, mais n'avez pas oublier un ";" ou "," dans la partie ci dessous
je ne suis pas un pro de php, mais n'avez pas oublier un ";" ou "," dans la partie ci dessous
$name_txt ='
[
{
" name " : " '.$article_name.' ",
" price " : " '.$price.' ",
" image " : " '.$image.' "
}
]';
jordane45
Messages postés
38353
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
27 décembre 2024
4 719
6 janv. 2022 à 21:49
6 janv. 2022 à 21:49
<?php if(isset($_POST['submit'])){ $article_name = $_POST['article_name']; $price = $_POST['article_price']; $image = $_POST['article_image']; $myfile = fopen("json/file.json", "r") or die("Unable to open file!"); $datas = ['name'=>$article_name, 'price'=>$price, 'image'=>$image]; // on stocke les données dans un array associatif $name_txt = json_encode($datas); // on transforme l'array au format json fwrite($myfile, $name_txt); fclose($myfile); } ?>
jordane45
Messages postés
38353
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
27 décembre 2024
4 719
6 janv. 2022 à 21:51
6 janv. 2022 à 21:51
et si tu as deux articles ...
bien sûr.. si tu as plusieurs articles .. au lieu de créer manuellement chaque ligne de l'array .. tu pourras ( devras ) passer par une boucle...
$datas = ['name'=>$article_name, 'price'=>$price, 'image'=>$image]; $datas[] = ['name'=>$article_name2, 'price'=>$price2, 'image'=>$image2];
bien sûr.. si tu as plusieurs articles .. au lieu de créer manuellement chaque ligne de l'array .. tu pourras ( devras ) passer par une boucle...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
DevRevoltium
Messages postés
37
Date d'inscription
lundi 20 juillet 2020
Statut
Membre
Dernière intervention
26 septembre 2023
6 janv. 2022 à 21:49
6 janv. 2022 à 21:49
Oui j'avais vu mais je veux d'abord trouver un moyen de réglé le problème en premier lieu
DevRevoltium
Messages postés
37
Date d'inscription
lundi 20 juillet 2020
Statut
Membre
Dernière intervention
26 septembre 2023
6 janv. 2022 à 22:00
6 janv. 2022 à 22:00
D'accord et la boucle je la fait avec un while ou un for ?
comme ça
comme ça
<?php if(isset($_POST['submit'])){ $article_name = $_POST['article_name']; $price = $_POST['article_price']; $image = $_POST['article_image']; $article_name2 = $_POST['article_name']; $price2 = $_POST['article_price']; $image2 = $_POST['article_image']; $myfile = fopen("json/file.json", "a") or die("Unable to open file!"); $datas = ['name'=>$article_name, 'price'=>$price, 'image'=>$image]; $datas[] = ['name'=>$article_name2, 'price'=>$price2, 'image'=>$image2]; while($data = $datas){ $datas[] = ['name'=>$article_name2, 'price'=>$price2, 'image'=>$image2]; } $name_txt = json_encode($datas); fwrite($myfile, $name_txt."\n"); fclose($myfile); } ?>
jordane45
Messages postés
38353
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
27 décembre 2024
4 719
6 janv. 2022 à 22:30
6 janv. 2022 à 22:30
Alors.. déjà .. ce n'est pas sur la variable $datas que tu vas devoir faire ta boucle .. mais sur tes variables $_POST ...
fais donc un var_dump de la variable $_POST pour voir ce qu'elle contient exactement....
Par contre, il serait pas mal de nous montrer également le code de ton formulaire...
J'imagine que si tu as plusieurs articles, tu as utilisé des attributs "name" dans tes input au format array .. par exemple
et dans ce cas, dans ton post, chaque variable sera sous forme d'array
tu pourras alors faire un joli foreach dessus
genre
fais donc un var_dump de la variable $_POST pour voir ce qu'elle contient exactement....
Par contre, il serait pas mal de nous montrer également le code de ton formulaire...
J'imagine que si tu as plusieurs articles, tu as utilisé des attributs "name" dans tes input au format array .. par exemple
<input name="article_name[]" value="" />
et dans ce cas, dans ton post, chaque variable sera sous forme d'array
tu pourras alors faire un joli foreach dessus
genre
<?php var_dump($_POST); // juste pour que tu vois ce que la variable contient et sous quelle forme elle se présente... $article_name = $_POST['article_name']; $datas = []; // on initialise la variable qui contiendra les données //on boucle sur chaque article foreach($article_name as $K=>$V ){ //ici tu traites chaque article .. $name = $V; $price = $_POST['article_price'][$K]; $image = $_POST['article_image'][$K]; $datas[] = ['name'=>$name, 'price'=>$price, 'image'=>$image]; } //on transforme l'array en JSON $name_txt = json_encode($datas); //On stocke le contenu dans le fichier $myfile = fopen("json/file.json", "a") or die("Unable to open file!"); fwrite($myfile, $name_txt."\n"); fclose($myfile);
DevRevoltium
Messages postés
37
Date d'inscription
lundi 20 juillet 2020
Statut
Membre
Dernière intervention
26 septembre 2023
6 janv. 2022 à 22:35
6 janv. 2022 à 22:35
Tous d'abord voici mon formulaire
de ce que j''ai pu comprendre je le remplace par ça ?
<form action="#" method="POST" enctype="application/json"> <input type="text" name="article_name" id="article_name" placeholder="Nom.."> <input type="text" name="article_price" id="article_price" placeholder="Prix.."> <input type="text" name="article_image" id="article_image" placeholder="Image.."> <input name="submit" type="submit" value="Créer"> </form>
de ce que j''ai pu comprendre je le remplace par ça ?
<form action="#" method="POST" enctype="application/json"> <input type="text" name="article_name[]" id="article_name" placeholder="Nom.."> <input type="text" name="article_price[]" id="article_price" placeholder="Prix.."> <input type="text" name="article_image[]" id="article_image" placeholder="Image.."> <input name="submit" type="submit" value="Créer"> </form>
jordane45
Messages postés
38353
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
27 décembre 2024
4 719
Modifié le 6 janv. 2022 à 22:38
Modifié le 6 janv. 2022 à 22:38
Tout dépend comment tu penses gérer "plusieurs produits .."
Par exemple
Par exemple
<form action="" method="POST"> <label> Produit 1</label> <input type="text" name="article_name[]" id="article_name" placeholder="Nom.."> <input type="text" name="article_price[]" id="article_price" placeholder="Prix.."> <input type="text" name="article_image[]" id="article_image" placeholder="Image.."> <label> Produit 2</label> <input type="text" name="article_name[]" id="article_name2" placeholder="Nom.."> <input type="text" name="article_price[]" id="article_price2" placeholder="Prix.."> <input type="text" name="article_image[]" id="article_image2" placeholder="Image.."> <input name="submit" type="submit" value="Créer"> </form>
DevRevoltium
Messages postés
37
Date d'inscription
lundi 20 juillet 2020
Statut
Membre
Dernière intervention
26 septembre 2023
6 janv. 2022 à 22:38
6 janv. 2022 à 22:38
Non je compte ajouter un produit à la fois
DevRevoltium
Messages postés
37
Date d'inscription
lundi 20 juillet 2020
Statut
Membre
Dernière intervention
26 septembre 2023
6 janv. 2022 à 22:40
6 janv. 2022 à 22:40
Pour le foreach quand je créer un article j'ai ce warning
Warning: Invalid argument supplied for foreach() in C:\wamp64\www\Aide\admin.php on line 28
Warning: Invalid argument supplied for foreach() in C:\wamp64\www\Aide\admin.php on line 28
DevRevoltium
Messages postés
37
Date d'inscription
lundi 20 juillet 2020
Statut
Membre
Dernière intervention
26 septembre 2023
Modifié le 6 janv. 2022 à 22:51
Modifié le 6 janv. 2022 à 22:51
voici le code
if(isset($_POST['submit'])){ var_dump($_POST); // juste pour que tu vois ce que la variable contient et sous quelle forme elle se présente... $article_name = $_POST['article_name']; $datas = []; foreach($article_name as $K=>$V){ $name = $V; $price = $_POST['article_price'][$K]; $image = $_POST['article_image'][$K]; $datas[] = ['name'=>$name, 'price'=>$price, 'image'=>$image]; } $name_txt = json_encode($datas); $myfile = fopen("json/file.json", "a") or die("Unable to open file!"); $name_txt = json_encode($datas); fwrite($myfile, $name_txt."\n"); fclose($myfile); }
jordane45
Messages postés
38353
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
27 décembre 2024
4 719
6 janv. 2022 à 23:17
6 janv. 2022 à 23:17
Vu que tu viens de dire que tu ne compte ajouter qu'un seul produit à la fois ils font donc revenir au premier code que je t'ai suggéré.
Par contre tu parles d'ajouter... Tu veux dire ajouter en plus dans le fichier json ?
Il faut donc commencer par lire le contenu du fichier
Stocker la donner dans la variable $datas
Puis traiter le submit de ton formulaire pour y ajouter le nouveau produit
Par contre tu parles d'ajouter... Tu veux dire ajouter en plus dans le fichier json ?
Il faut donc commencer par lire le contenu du fichier
Stocker la donner dans la variable $datas
Puis traiter le submit de ton formulaire pour y ajouter le nouveau produit
DevRevoltium
Messages postés
37
Date d'inscription
lundi 20 juillet 2020
Statut
Membre
Dernière intervention
26 septembre 2023
>
jordane45
Messages postés
38353
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
27 décembre 2024
6 janv. 2022 à 23:22
6 janv. 2022 à 23:22
Ok alors je refait le $myfile mais à la place du a je met r c'est ça ?
DevRevoltium
Messages postés
37
Date d'inscription
lundi 20 juillet 2020
Statut
Membre
Dernière intervention
26 septembre 2023
6 janv. 2022 à 23:18
6 janv. 2022 à 23:18
Finalement j'ai réalisé que j'avais oublié les crochets dans le formulaire mais si je veux les faires 1 par 1 mais bon pas grave. Mais ensuite si je veux en rajouter 2 Je ne peux pas, car il y déjà la fin des crochets alors comment je fais ?
jordane45
Messages postés
38353
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
27 décembre 2024
4 719
6 janv. 2022 à 23:21
6 janv. 2022 à 23:21
Comme je viens de te le dire ..
1 - Lire le contenu du fichier JSON
2 - Stocker les données dans la variable $datas ( regarde la fonction json_decode )
3 - Ajouter les données du POST dans la variable $datas
4 - Ecoder $datas au format json
5- Réécrire le fichier
1 - Lire le contenu du fichier JSON
2 - Stocker les données dans la variable $datas ( regarde la fonction json_decode )
3 - Ajouter les données du POST dans la variable $datas
4 - Ecoder $datas au format json
5- Réécrire le fichier
DevRevoltium
Messages postés
37
Date d'inscription
lundi 20 juillet 2020
Statut
Membre
Dernière intervention
26 septembre 2023
>
jordane45
Messages postés
38353
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
27 décembre 2024
6 janv. 2022 à 23:24
6 janv. 2022 à 23:24
D'accord je vais faire de mon mieux pour y arriver et quand je pense que c'est bon je reviens vous demander si j'ai un truc mal fait
DevRevoltium
Messages postés
37
Date d'inscription
lundi 20 juillet 2020
Statut
Membre
Dernière intervention
26 septembre 2023
>
jordane45
Messages postés
38353
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
27 décembre 2024
6 janv. 2022 à 23:27
6 janv. 2022 à 23:27
dernier truc comment je fais cela ?
3 - Ajouter les données du POST dans la variable $datas
3 - Ajouter les données du POST dans la variable $datas
DevRevoltium
Messages postés
37
Date d'inscription
lundi 20 juillet 2020
Statut
Membre
Dernière intervention
26 septembre 2023
Modifié le 6 janv. 2022 à 23:37
Modifié le 6 janv. 2022 à 23:37
<?php if(isset($_POST['submit'])){ $article_name = $_POST['article_name']; $price = $_POST['article_price']; $image = $_POST['article_image']; $myfile = fopen("json/file.json", "r") or die("Unable to open file!"); $datas = []; $name_txt = json_decode($datas); $datas = ['name'=>$article_name, 'price'=>$price, 'image'=>$image]; $name_txt = json_encode($datas); fwrite($myfile, $name_txt); fclose($myfile); } ?>
J'ai essayé de faire ce que vous m'avez dit mais toujours un erreur:
Warning: json_decode() expects parameter 1 to be string, array given in C:\wamp64\www\Aide\admin.php on line 28 (dans le code c'est ligne 9)
jordane45
Messages postés
38353
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
27 décembre 2024
4 719
Modifié le 7 janv. 2022 à 01:52
Modifié le 7 janv. 2022 à 01:52
un truc du genre
EDIT : petite correction ligne 27
Edit 2 : Correction ligne 19
Edit 3 : Vérification existence du fichier avant de lire son contenu
<?php // chemin vers le fichier $filename = "json/file.json"; //on traite le submit if(isset($_POST['submit'])){ //initialisation variable $datas $datas = []; // lecture des données déjà présentes dans le fichier if ( file_exists($filename)){ $string = file_get_contents($filename); //on décode les données et on les stocke en tant qu'array $json_a = json_decode($string, true); //on stocke les données dans $datas $datas = !empty( $json_a) ? $json_a : [] ; } //on récupère les données qui sont envoyées par le formulaire $article_name = $_POST['article_name']; $price = $_POST['article_price']; $image = $_POST['article_image']; //on stocke les données du formulaire dans $datas $datas[] = ['name'=>$article_name, 'price'=>$price, 'image'=>$image]; // on stocke les données dans un array associatif //on retransforme $datas en JSON $name_txt = json_encode($datas); // on transforme l'array au format json //on le fichier en écriture $myfile = fopen($filename, "r") or die("Unable to open file!"); fwrite($myfile, $name_txt); fclose($myfile); //tu peux aussi utiliser file_put_contents à la place de tes trois dernières lignes // file_put_contents($filename, $name_txt ); } ?>
EDIT : petite correction ligne 27
Edit 2 : Correction ligne 19
Edit 3 : Vérification existence du fichier avant de lire son contenu
DevRevoltium
Messages postés
37
Date d'inscription
lundi 20 juillet 2020
Statut
Membre
Dernière intervention
26 septembre 2023
6 janv. 2022 à 23:44
6 janv. 2022 à 23:44
Hum d'accord, mais la plus aucun article insert dans le file.json
DevRevoltium
Messages postés
37
Date d'inscription
lundi 20 juillet 2020
Statut
Membre
Dernière intervention
26 septembre 2023
6 janv. 2022 à 23:49
6 janv. 2022 à 23:49
En remplaçant les 3 dernières ligne cela marche mais ça modifie le message moi je veux avoir toute les articles que j'ajoute 1 par 1
jordane45
Messages postés
38353
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
27 décembre 2024
4 719
7 janv. 2022 à 00:01
7 janv. 2022 à 00:01
Lign,e 27, j'ai oublié des crochets
$datas[] = ['name'=>$article_name, 'price'=>$price, 'image'=>$image]; // on stocke les données dans un array associatif
DevRevoltium
Messages postés
37
Date d'inscription
lundi 20 juillet 2020
Statut
Membre
Dernière intervention
26 septembre 2023
>
jordane45
Messages postés
38353
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
27 décembre 2024
7 janv. 2022 à 00:13
7 janv. 2022 à 00:13
Oh Wow merci infiniment c'est exactement ce que je voulais !
jordane45
Messages postés
38353
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
27 décembre 2024
4 719
>
DevRevoltium
Messages postés
37
Date d'inscription
lundi 20 juillet 2020
Statut
Membre
Dernière intervention
26 septembre 2023
7 janv. 2022 à 00:29
7 janv. 2022 à 00:29
Pense à marquer le sujet en résolu
DevRevoltium
Messages postés
37
Date d'inscription
lundi 20 juillet 2020
Statut
Membre
Dernière intervention
26 septembre 2023
>
jordane45
Messages postés
38353
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
27 décembre 2024
7 janv. 2022 à 01:57
7 janv. 2022 à 01:57
D'accord =)
DevRevoltium
Messages postés
37
Date d'inscription
lundi 20 juillet 2020
Statut
Membre
Dernière intervention
26 septembre 2023
7 janv. 2022 à 01:02
7 janv. 2022 à 01:02
jordane45
Messages postés
38353
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
27 décembre 2024
4 719
Modifié le 7 janv. 2022 à 01:35
Modifié le 7 janv. 2022 à 01:35
Ligne 19
Remplace par
Supprime ton fichier json puis relance le script et ajoute des produits
Remplace par
$datas= !empty( $json_a) ? $json_a : [] ;
Supprime ton fichier json puis relance le script et ajoute des produits
DevRevoltium
Messages postés
37
Date d'inscription
lundi 20 juillet 2020
Statut
Membre
Dernière intervention
26 septembre 2023
>
jordane45
Messages postés
38353
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
27 décembre 2024
Modifié le 7 janv. 2022 à 01:41
Modifié le 7 janv. 2022 à 01:41
Ok je vais essayer
jordane45
Messages postés
38353
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
27 décembre 2024
4 719
>
DevRevoltium
Messages postés
37
Date d'inscription
lundi 20 juillet 2020
Statut
Membre
Dernière intervention
26 septembre 2023
7 janv. 2022 à 01:49
7 janv. 2022 à 01:49
Dans le script, il faudra certainement vérifier que le fichier existe avant d'essayer d'en lire le contenu.
DevRevoltium
Messages postés
37
Date d'inscription
lundi 20 juillet 2020
Statut
Membre
Dernière intervention
26 septembre 2023
>
jordane45
Messages postés
38353
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
27 décembre 2024
7 janv. 2022 à 01:50
7 janv. 2022 à 01:50
Oui mais il existe déjà alors pas besoin si ?
jordane45
Messages postés
38353
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
27 décembre 2024
4 719
>
DevRevoltium
Messages postés
37
Date d'inscription
lundi 20 juillet 2020
Statut
Membre
Dernière intervention
26 septembre 2023
7 janv. 2022 à 01:53
7 janv. 2022 à 01:53
C'est juste une sécurité.
J'ai édité le code tu peux copier coller directement
J'ai édité le code tu peux copier coller directement
DevRevoltium
Messages postés
37
Date d'inscription
lundi 20 juillet 2020
Statut
Membre
Dernière intervention
26 septembre 2023
Modifié le 7 janv. 2022 à 01:46
Modifié le 7 janv. 2022 à 01:46
DevRevoltium
Messages postés
37
Date d'inscription
lundi 20 juillet 2020
Statut
Membre
Dernière intervention
26 septembre 2023
7 janv. 2022 à 01:48
7 janv. 2022 à 01:48
Merci tous fonctionne parfaitement !