Écrire un article
Tea Innovation
Logo JSON

 

Il est possible de réaliser facilement la base de donnée de votre site web sans installer de bases de données MySQL en utilisant un ficher JSON.

 

Cela peut permettre de stocker quelques données rapidement, de réutiliser les données en JavaScript ou d'installer plus facilement un site. JSON est également un format de partage de données entre sites assez répandu. Certains CMS comme ZWII utilisent JSON.

 

Malheureusement on trouve peu de tuto sur cette manière de faire, nous allons réparer ça !

 

Tutoriel

Prérequis
PHP niveau basique
HTML niveau basique
FTP niveau basique


 

JSON c'est quoi ?

En gros, c'est un langage de stockage de données avec une syntaxe inspirée de JavaScript. Son avantage est d'être simple, léger et facile à lire pour un humain.

Exemple de json

{
  "prenom": "Julie",
  "animal": "la loutre",
  "age": "25"
}


Firefox à un lecteur de JSON intégré plutôt pratique. Il vous suffit d'y ouvrir un fichier en .json.


 

Créer un fichier JSON sur votre serveur

Avec votre logiciel FTP favori, créer un nouveau fichier vide sur votre serveur avec l’extension .json. Par exemple donnees.json.

Il va falloir lui donner tous les droits CHMOD pour pouvoir écrire dedans :

Avec WinSCP : Clic droit sur le fichier > Propriété > Octal. Mettre 0777 puis valider.

Avec FileZilla : Clic droit sur le fichier > Droits d'accès au fichier > Valeur numérique. Mettre 777 puis valider.

Avec Cyberduck : Clic droit sur le fichier > Lire les informations. Tout cocher puis valider.


 

Écrire une chaîne JSON en PHP

La chaîne de texte que l'on veut enregistrer dans la base de donnée :

$ecritureBDD = 'Vive les loutres !';



Transformer la chaîne au format JSON :

$ecritureBDD = json_encode($ecritureBDD);

 


Écrire dans le fichier JSON :

file_put_contents('URL du fichier JSON', $ecritureBDD);



Le code complet :

<?php

$ecritureBDD = 'Vive les loutres';

file_put_contents('donnees.json', json_encode($ecritureBDD));

?>


Exécutez la page PHP. "Vive les loutres" est apparu dans votre fichier JSON !

 


Lire une chaîne JSON en PHP

Lire le contenu du fichier JSON

$lectureBDD = file_get_contents('URL du fichier JSON');


Transformer le JSON en PHP

$lectureBDD = json_decode($lectureBDD, true);

 

Le paramètre true est important pour la suite, autant prendre l'habitude de toujours le mettre.


Afficher la chaîne

echo $lectureBDD;


Le code complet :

<?php

$lectureBDD = json_decode(file_get_contents('donnees.json'), true);

echo $lectureBDD;

?>

 

Renvoie :

 

Vive les loutres

 

 

 

Écrire et lire un tableau JSON en PHP

En pratique vous aurez sans doute plusieurs informations à stocker. Nous allons voir comment modifier le code précédent pour enregistrer un tableau (array).

Prérequis
PHP niveau intermédiaire (tableaux, boucles)

 

<?php

$ecritureBDD = array('prenom' => 'Julie', 'animal' => 'la loutre', 'age' => '25');

file_put_contents('donnees.json', json_encode($ecritureBDD));

$lectureBDD = json_decode (file_get_contents('donnees.json'), true);

echo '<pre>';
print_r($lectureBDD);
echo '</pre>';

echo 'L\'animal préféré de ' . $lectureBDD['prenom'] . ' (' . $lectureBDD['age'] . ' ans) est ' . $lectureBDD['animal'];


?>



Renvoie :

Array
(
    [prenom] => Julie
    [animal] => la loutre
    [age] => 25
)

L'animal préféré de Julie (25 ans) est la loutre



Vous pouvez écrire et lire des gros fichiers en JSON. Attention toutefois si vous avez beaucoup de requêtes simultanées sur un fichier vous pourrez avoir des erreurs si la mémoire de PHP est saturée. MySQL sera alors préférable.

 


Écrire et lire un tableau dans un tableau JSON en PHP

Vous pouvez structurer vos données en les regroupant dans plusieurs tableaux :

<?php

$ecritureBDD = $ecritureBDD = array(
'utilisateur1' => array('prenom' => 'Julie', 'animal' => 'la loutre', 'age' => '25'),
'utilisateur2' => array('prenom' => 'Judith', 'animal' => 'le pangolin', 'age' => '32'),
'utilisateur3' => array('prenom' => 'Johanna', 'animal' => 'le tigre', 'age' => '34'),
);

file_put_contents('donnees.json', json_encode($ecritureBDD));

$lectureBDD = json_decode (file_get_contents('donnees.json'), true);

echo '<pre>';
print_r($lectureBDD);
echo '</pre>';

foreach ($lectureBDD as $contenu) {
echo 'L\'animal préféré de ' . $contenu['prenom'] . ' (' . $contenu['age'] . ' ans) est ' . $contenu['animal'] . '<br>';
}


?>



Renvoie :

Array
(
    [utilisateur1] => Array
        (
            [prenom] => Julie
            [animal] => la loutre
            [age] => 25
        )

    [utilisateur2] => Array
        (
            [prenom] => Judith
            [animal] => le pangolin
            [age] => 33
        )

    [utilisateur3] => Array
        (
            [prenom] => Johanna
            [animal] => le tigre
            [age] => 34
        )

)

L'animal préféré de Julie (25 ans) est la loutre
L'animal préféré de Judith (33 ans) est le pangolin
L'animal préféré de Johanna (34 ans) est le tigre


 

Écrire et lire un tableau JSON en JS

Prérequis
jQuery niveau basique

Pour des raisons de sécurité, il n'est pas possible d'écrire du JSON en JS, sinon n'importe qui pourrait écrire dans votre base de donnée.

 

En revanche vous pouvez facilement lire un fichier JSON en jQuery.

$.getJSON('URL du fichier JSON', function(contenu) {
console.log(contenu.prenom);
});



Dans le cas d'un tableau dans un tableau :

$.getJSON('URL du fichier JSON', function(contenu) {
console.log(contenu.utilisateur2.prenom);
});



Le code complet :

<div id="ecran"></div>

 

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>

 

<script>

 

$(function() {

 

$.getJSON('donnees.json', function(contenu) {

 

$('#ecran').html('L\'animal préféré de ' + contenu.utilisateur2.prenom + ' (' + contenu.utilisateur2.age + ' ans) est ' + contenu.utilisateur2.animal);

});

 

});

 

</script>



Renvoie :


L'animal préféré de Judith (33 ans) est le pangolin

 

 

Empêcher la lecture de vos données JSON

Prérequis
.htaccess niveau basique

 

Vous n'avez peut-être pas envie que n'importe qui puisse lire le contenu de votre base de donnée JSON via son URL ou en JS ? Dans ce cas on peut bloquer la lecture avec un fichier .htaccess .  Les données seront toujours accessibles en php.

 

Créez un fichier .htaccess dans le même répertoire que votre fichier JSON.

 

Par exemple le .htaccess ci-dessous va bloquer la lecture du fichier donnees.json :

 

<Files donnees.json>
    Order deny,allow
    Deny from all
</Files>

 

 

Auteur : Nicolas Barré