Bonjour,
Je souhaite accéder aux numéros des entrées de mon fichier JSON.
Lorsque je fais un json_decode, j'accède directement aux éléments comme identifiant, prenom, nom, mot_de_passe (voir code ci-après) alors que je souhaite accéder aux numéros 0 ou 2 présents juste au-dessus de l'élément nommé identifiant.
Code JSON : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 { "0": { "identifiant": "utilisateur 1", "prenom": "xxx", "nom": "xxx", "mot_de_passe": "xxx" }, "2": { "identifiant": "utilisateur 2", "prenom": "xxx", "nom": "xxx", "mot_de_passe": "" } }
J'accède toujours au contenu que je mette true ou false dans le code json_decode($utilisateurs , true); pour obtenir un tableau ou un objet, mais jamais aux numéros d'enregistrement.
C'est la première fois que j'utilise le format JSON, je suis plus habitué au format XML. Toute la documentation lue sur Internet me donne la fonction json_decode mais je ne comprends pas comment arriver à mes fins.
Le but étant de pouvoir gérer des utilisateurs sans passer par une base de données. J'arrive à créer une nouvelle entrée, mais lorsque je modifie ou supprime un enregistrement, j'obtiens un décalage du n° ID, ce qui fait que je modifie ou je supprime un mauvais utilisateur.
Par exemple, utilisateur 2 dans le fichier JSON est l'entrée N°2 mais dans mon script PHP je boucle en commençant par 0, donc c'est l'entrée N°1. Pour être "propre" et sécuriser le script, je préférerais donc accéder à l'information JSON plutôt que de me baser sur un index calculé dans ma boucle.
Voici mon code PHP :
Code php : 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 <?php header('Content-Type: text/html; charset=utf-8'); $utilisateurs = file_get_contents("utilisateurs.json"); $utilisateurs = json_decode($utilisateurs , true); if($_POST["action"] == "CREATION") { // Création d'un utilisateur $utilisateur = array ( "identifiant" => $_POST["identifiant"], "prenom" => $_POST["prenom"], "nom" => $_POST["nom"], "mot_de_passe" => password_hash($_POST["mot_de_passe"] , PASSWORD_DEFAULT) ); $utilisateurs[] = $utilisateur; } if($_POST["action"] == "MODIFICATION") { // Modification d'un utilisateur $utilisateur = $utilisateurs[$_POST["id"]]; $utilisateur = array ( "identifiant" => $_POST["identifiant"], "prenom" => $_POST["prenom"], "nom" => $_POST["nom"], "mot_de_passe" => password_hash($_POST["mot_de_passe"] , PASSWORD_DEFAULT) ); $utilisateurs[$_POST["id"]] = $utilisateur; } if(isset($_GET['identifiant'])) { unset($utilisateurs[$_GET['identifiant']]); } $utilisateurs = json_encode($utilisateurs, JSON_PRETTY_PRINT); file_put_contents('utilisateurs.json', $utilisateurs); header('location: index.php'); ?>
Je vous remercie par avance pour l'attention que vous porterez à mon message et j'espère que mes explications sont claires.
Cordialement,
Kristien
Partager