IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Tutoriel AJAX : apprendre la production de données au format JSON en PHP
Par Marc Autran

Le , par autran

0PARTAGES

Comme annoncé dans le billet précédant, montrons comment notre serveur PHP peut renvoyer des objets JSON.

1/ Le serveur web et base de données
Pour ce faire le seul pré-requis est de disposer d'un serveur Apache avec le module PHP et d'une base de données. De nombreux hébergeurs du Cloud en proposent. L'objet de ce billet n'étant pas de faire de la pub pour les hosters, je vous laisse le choix de l’hébergeur.
Afin que ce que je montre soit parfaitement reproductible pour le lecteur je m'affranchirai de la problématique d'hébergement en utilisant un serveur que j'héberge sur mon PC. J'ai opté pour le serveur Apache + PHP + MySQL tout en un. Comme mon PC est sous linux, j'ai choisi XAMP. Mais quel que soit votre système d’exploitation vous pourrez télécharger une version XAMP idoine.

2/ Le cahier des charges
Rappelons que notre client attend une liste d'outils sous la forme d'un tableau d'objets au format JSON.
Nous stockerons donc les outils dans une base de données (MySQL). Le serveur PHP devra donc permettre d'extraire les données de la base et les envoyer au client au format JSON. Il faudra changer une seule donnée sur le serveur.
Pour tester notre serveur nous changerons dans le client xhr.open("GET", "data.json", true); par xhr.open("GET", "jsonfactory.php", true); jsonfactory.php étant le fichier PHP qui nous restera à développer dans ce tuto.

3/ La base de données
L'utilitaire d'administration PhpMyAdmin permet de configurer la table outils et de la remplir aisément. Si vous gérez à la main votre base de donnée, voici le script de création de la table et de peuplement

Code sql : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
-- 
-- Création de la table `outils` 
– 
  
CREATE TABLE `outils` ( 
  `id` int(11) NOT NULL, 
  `nom` varchar(255) NOT NULL, 
  `description` varchar(255) NOT NULL, 
  `qte` int(11) NOT NULL, 
  `prix` int(11) NOT NULL 
) ENGINE=MyISAM DEFAULT CHARSET=latin1; 
  
-- 
-- Contenu de la table `outils` 
-- 
  
INSERT INTO `outils` (`id`, `nom`, `description`, `qte`, `prix`) VALUES 
(1, 'marteau', 'pour enfoncer des clous', 5, 22), 
(2, 'tournevis', 'pour ouvrir le pot de peinture', 6, 30), 
(3, 'tenailles', 'pour arracher les dents', 8, 11), 
(4, 'pinces multiples', 'pour bricoler le dimanche', 22, 35), 
(5, 'cle de 12', 'pour reparer le tracteur', 2, 85);

Comme on le remarquera dans le script PHP cette table est chez moi localisée dans la base user et j'ai créé un utilisateur user (mot de passe «user») ayant l'autorisation de manipuler en lecture les données de cette table.

4/ Développement PHP
Ce sera en réalité très simple car il suffit de :
  • Lire (via l'objet standard du langage PDO) toute les données de la table outils
  • Mettre ces données dans un tableaux d'objets
  • Encoder le tableau au format JSON
  • Envoyer la chaine JSON comme réponse au client

Voici le script de la page jsonfactory.php
Code php : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php 
  try { 
    $bdd = new PDO('mysql:host=localhost;dbname=user;charset=utf8', 'user', 'user'); 
  } 
  catch (Exception $e) { 
    die('Erreur : ' . $e->getMessage()); 
  } 
  $query = $bdd->query("Select * from outils"); 
  $outils = array(); 
  while ($outil = $query->fetch()) 
    array_push($outils, array("nom" => $outil["nom"], 
                              "desc" => $outil["description"], 
                              "qte" => $outil["qte"], 
                              "prix" => $outil["prix"])); 
  echo(json_encode($outils)); 
?>
5/ Conclusions
On a vu qu'il est aisé de produire des données JSON au profit d'un client JavaScript à partir d'un serveur PHP. Mais je vous rassure, Java – C# - JavaScript sont des langages cotés serveur qui permettent de produire du JSON aussi facilement.
JSON étant le format utilisé pour 90% des Web Services (REST), on imagine bien que l'étape suivante est la production de web services.

Une erreur dans cette actualité ? Signalez-nous-la !