Hallo,
ich versuche eine Web-App zu programmieren die von verschiedenen CMS mit Daten versorgt wird. Den Datenaustausch wollte ich über eine JSON-Datei managen, die ich mittels PHP und einer MySQL-Abfrage erstelle. Bin noch recht frisch in PHP, und habe dementsprechend wohl einige Verständisprobleme die ich bisher durch google noch nicht lösen konnte.
Ich habe 4 MySQL-Abfragen die ich in jeweils 1 Array packe.
Bspw. so:
Die 4 Arrays wollte ich in ein einziges Array zusammenfassen, in etwa so:
Und dann dieses nun mehrdimensionale Array in eine JSON-Datei überführen, in etwa so:
Dann erstelle ich eine JSON-Datei mit eben diesem Inhalt durch ein kleines Formular:
Im Prinzip funktioniert das auch, die JSON-Datei wird erstellt. Kopiere ich aber den Inhalt der Datei in http://jsonlint.com/, kann der Code nicht validiert werden. Kopiere ich es in http://jsonformatter.curiousconcept.com/ dann sagt es mir "JSON DATA INACCESSIBLE".
Jetzt stelle ich mir eben folgende Fragen:
Auf was soll ich nun gehen? Was ist zuverlässiger?
Freue mich, wenn Ihr mir helfen könnt. Vielen Dank.
Liebe Grüße,
pyretta
ich versuche eine Web-App zu programmieren die von verschiedenen CMS mit Daten versorgt wird. Den Datenaustausch wollte ich über eine JSON-Datei managen, die ich mittels PHP und einer MySQL-Abfrage erstelle. Bin noch recht frisch in PHP, und habe dementsprechend wohl einige Verständisprobleme die ich bisher durch google noch nicht lösen konnte.
Ich habe 4 MySQL-Abfragen die ich in jeweils 1 Array packe.
Bspw. so:
PHP:
//INHALTE AUS DB IN 1 ARRAY SPEICHERN
$array1 = array();
$abfrage1 = mysql_query("SELECT id,pid,type,text,headline,html FROM `tl_content` WHERE `invisible`='' AND `type` = 'text' OR `type` = 'html' OR `type` = 'headline';") or die("Anfrage für 'tl_content' war nicht erfolgreich");
while($obj_array1 = mysql_fetch_object($abfrage1)) {
$array1[] = $obj_array1;
}
Die 4 Arrays wollte ich in ein einziges Array zusammenfassen, in etwa so:
PHP:
//ALLE ARRAYS IN MEHRDIMENSIONALES ARRAY ZUSAMMENFASSEN
$array_gesamt = array("array1" => $array1, "array2" => $array2, "array3" => $array3, "array4" => $array4);
Und dann dieses nun mehrdimensionale Array in eine JSON-Datei überführen, in etwa so:
PHP:
//ARRAY ALS JSON FORMATIEREN
$json_inhalt = '{"JSON-Inhalte":'.json_encode($array_gesamt).'}';
Dann erstelle ich eine JSON-Datei mit eben diesem Inhalt durch ein kleines Formular:
HTML:
<form method="post" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>">
<input type="submit" name="sent" value="aktualisieren">
</form>
PHP:
/**
* ------------------------ FORMULAR ACTION ------------------------
* WENN AKTUALISIEREN BUTTON GEDRÜCKT, DANN SCHREIBE NEUE JSON-DATEI
*/
if(isset($_POST['sent'])){
// Pfad festlegen:
$path = "./json/";
// Datei festlegen:
$filename = "json_datei.json";
// prüfen, ob es diesen Pfad schon gibt:
if(!dirname($path)!= $path)
{
// wenn es den Ordner noch nicht gibt, wird er angelegt
echo "Der Pfad existiert noch nicht.<br>";
$pfadangelegt = mkdir($path);
if (dirname($path))
{ echo "Der Pfad wurde angelegt<br>"; }
else
{ die("Der Pfad konnte nicht angelegt werden."); }
}
// prüfen, ob es die Datei schon gibt
if(file_exists($path.$filename))
{ echo "Die Datei existiert schon.<br>"; }
else
{ echo "Die Datei existiert noch nicht.<br>"; }
// Datei neu anlegen bzw. öffnen
$file = fopen($path.$filename, "w");
// in die Datei schreiben
$geschrieben = fwrite($file, $json_inhalt);
// Datei schliessen
fclose($file);
}
Im Prinzip funktioniert das auch, die JSON-Datei wird erstellt. Kopiere ich aber den Inhalt der Datei in http://jsonlint.com/, kann der Code nicht validiert werden. Kopiere ich es in http://jsonformatter.curiousconcept.com/ dann sagt es mir "JSON DATA INACCESSIBLE".
Jetzt stelle ich mir eben folgende Fragen:
- Ist nun meine Vorgehensweise fehlerhaft?
- Habe ich das Array, das mehrdimensional werden sollte, syntaktisch falsch aufgebaut?
- Oder Muss ich, wenn ich ein mehrdimensionales Array in JSON encodiere, dann noch Parameter beim encodieren hinzufügen?
- Oder ist die Datei zum validieren einfach nur zu groß (606kb)? Weil wenn ich den Code bei http://www.jsonformatter.de/index.php formatieren und überprüfen lasse, geht es scheinbar ohne Probleme... ?!
Auf was soll ich nun gehen? Was ist zuverlässiger?
Freue mich, wenn Ihr mir helfen könnt. Vielen Dank.
Liebe Grüße,
pyretta
Zuletzt bearbeitet: