Php et js : lire et écrire vos bases de données en json !

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 fichier JSON. Cela peut permettre de stocker quelques données rapidement, de réutiliser des données en JavaScript ou encore 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"
}

(notez que contrairement à JS, la dernière ligne entre crochet ne tolère pas de virgule)

Firefox a 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.

Suivant la configuration de votre hébergement, il faudra peut-être donner tous les droits CHMOD pour pouvoir écrire dans votre fichier JSON :

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="resultat"></div>

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

<script>

$(function() {

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

		$('#resultat').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>
Retour aux tutos

Besoin de l'aide d'un professionnel pour créer votre site ou votre publication graphique ? Contactez-moi !

Licence Creative Commons Attribution Vous êtes libre de réutiliser cet article à condition de mentionner qu'il a été écrit par Creavolt.fr

Ces tutos peuvent vous intéresser



Logo Emmet Écrire rapidement son CSS avec Emmet

Logo Apache Cordova Créer une application mobile Androïd en HTML avec Cordova
Contactez-moi !