Bonjour
Je rencontre quelques problèmes pour manipuler des données JSON en PHP, notamment pour la suppression et l'ajout.
Voici une partie de mon fichier JSON :
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 { "entrees": [ { "nom":"Oeufs du jour" }, { "nom":"Oeufs tomate cerise du jour" }, { "nom":"Carottes rapées" }, { "nom":"Taboulet oriental" }, { "nom":"Taboulet vert" }, { "nom":"Taboulet meridionnal" }, { "nom":"Mini penne" }, { "nom":"Pommes de terre au thon" }, { "nom":"Salade de lantilles aux échalottes" }, { "nom":"Tartare de concombre" }, { "nom":"Salade Alaska" }, { "nom":"Tomates mozarella pesto" } ] }
Et mon fichier PHP réduit à l'essentiel :
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
82
83
84
85
86
87
88 <?php $menu = file_get_contents("db-json/menu.json"); $decodedMenu = json_decode($menu); $entrees = $decodedMenu->{"entrees"}; $nbEntrees = count($entrees); $moyenneNbEntrees = ceil($nbEntrees / 2); if(isset($_POST["supprimer"])) { $id = $_POST["id"]; if ($_POST["categorie"] == "entrees") { unset($entrees[$id]); } $encodedMenu = json_encode($decodedMenu); file_put_contents("db-json/menu.json", $encodedMenu); } if(isset($_POST["modifier"])) { $id = $_POST["id"]; if ($_POST["categorie"] == "entrees") { $entrees[$id]->{"nom"} = $_POST["nom"]; } } if(isset($_POST["ajouter"])) { if ($_POST["categorie"] == "entrees") { array_push($entrees, array('nom' => $_POST["nom"])); } } ?> <div class="flexStart"> <ul> <?php for($i = 0; $i < $moyenneNbEntrees; $i++) { echo ' <li> <form method="post" action="interface-admin.php"> <input type="text" name="nom" value="' . $entrees[$i]->{"nom"} . '" /> <input type="hidden" name="id" value="' . $i . '" /> <input type="hidden" name="categorie" value="entrees" /> <button name="modifier"> Modifier </button> <button name="supprimer"> Supprimer </button> </form> </li> '; } ?> </ul> <ul> <?php for($i = $moyenneNbEntrees; $i < $nbEntrees; $i++) { echo ' <li> <form method="post" action="interface-admin.php"> <input type="text" name="nom" value="' . $entrees[$i]->{"nom"} . '" /> <input type="hidden" name="id" value="' . $i . '" /> <input type="hidden" name="categorie" value="entrees" /> <button name="modifier"> Modifier </button> <button name="supprimer"> Supprimer </button> </form> </li> '; } ?> </ul> </div> <form method="post" action="interface-admin.php"> <label for="nom"> Ajouter une entrée </label> <input type="text" name="nom" id="nom" placeholder="Nom" /> <input type="hidden" name="categorie" value="entrees" /> <button name="ajouter"> Ajouter </button> </form>
Alors le problème c'est que lorsque je clique sur un des boutons supprimer, deux erreurs apparaissent à l'emplacement de l'entrée que je souhaitais supprimer :
Notice: Undefined offset: numéro de la ligne que je souhaite supprimer in monfichier.php on line ligne correspondante au input de mon formulaire de suppressionNotice: Trying to get property 'nom' of non-object in monfichier.php on lineligne correspondante au input de mon formulaire de suppression
Pour l'ajout aucune erreur ne s'affiche quand j'envoi le formulaire mais l'ajout ne se fait pas.
Merci d'avance pour votre aide !![]()
Partager