148 votes

Comment générer un fichier .json avec PHP ?

CREATE TABLE Posts
{
id INT PRIMARY KEY AUTO_INCREMENT,
title VARCHAR(200),
url VARCHAR(200)
}

code json.php

<?php
$sql=mysql_query("select * from Posts limit 20");
echo '{"posts": [';
while($row=mysql_fetch_array($sql))
{
$title=$row['title'];
$url=$row['url'];
echo '

{

"title":"'.$title.'",

"url":"'.$url.'"

},'; 
}
echo ']}';

?>

Je dois générer results.json fichier.

1 votes

Avoir une explication/un contexte dans notre question est à tout le moins poli. Cette question ressemble plus à un ordre implicite à personne en particulier et à la communauté stack overflow en général

288voto

Alec Smart Points 14075

Voici un exemple de code :

<?php 
$sql="select * from Posts limit 20"; 

$response = array();
$posts = array();
$result=mysql_query($sql);
while($row=mysql_fetch_array($result)) { 
  $title=$row['title']; 
  $url=$row['url']; 

  $posts[] = array('title'=> $title, 'url'=> $url);
} 

$response['posts'] = $posts;

$fp = fopen('results.json', 'w');
fwrite($fp, json_encode($response));
fclose($fp);

?>

1 votes

J'ai utilisé ce code sur mon projet. Le fichier results.json fonctionne bien sur l'hôte local et échoue sur le serveur distant. Pouvez-vous expliquer pourquoi ainsi..

4 votes

Fwrite peut être désactivé dans les paramètres de votre serveur.

0 votes

Même si c'est génial, peut-être parce que j'utilise PHP 5 maintenant et que ce n'était pas disponible au moment où cette réponse a été postée, vous pouvez vous débarrasser de la ligne $result= et dans votre boucle while, faites simplement le mysql_feth_array($sql).

32voto

chelmertz Points 8774

Insérez les valeurs récupérées dans un tableau au lieu de les afficher.

Utilisez file_put_contents() et insérer json_encode($rows) dans ce fichier, si $rows sont vos données.

3 votes

Je vois que votre réponse a été postée avant celle qui a été la plus votée. Si seulement vous aviez mis un exemple de code, vous auriez obtenu beaucoup plus de votes.

10voto

CyberJunkie Points 3007

Si vous extrayez des enregistrements dynamiques, il est préférable d'avoir un fichier php qui crée une représentation json et de ne pas créer un fichier à chaque fois.

mon_json.php

$array = array(
    'title' => $title,
    'url' => $url
);

echo stripslashes(json_encode($array)); 

Ensuite, dans votre script, définissez le chemin vers le fichier my_json.php

1 votes

Quand j'essaie de le lancer en utilisant getJason, j'obtiens Ressource interprétée comme script mais transférée avec le type MIME text/html dans la console.

0 votes

@noobcode Pour corriger cela, je pense que vous devriez mettre un en-tête 'Content-Type' dans votre 'my_json.php' .

6voto

Sarfraz Points 168484

Vous pouvez simplement utiliser json_encode de php et sauvegarder le fichier avec des fonctions de manipulation de fichiers telles que fopen et fwrite .

5voto

Quentin Points 325526

Utilisez la fonction méthodes json pour créer le json puis l'écrire dans un fichier avec fwrite .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X