Dołączam wartości jsona do zewnętrznego pliku. Dane formularza są przechwytywane za pomocą zmiennych ajax i post. Mam mały skrypt, który eksploduje ciąg danych json i próbuje implodować plik z powrotem wraz ze zmiennymi post w środku (lub właściwie na końcu).
<?php
$json_file = "data.json";
$json_data = $_POST["newUpload"]."]}";
//something like {"name":"foo","email":"foo@bar.com"}
$fh = fopen($json_file, "r+"); //I think this is the problem???
$data = fread($fh, filesize($json_file));
$jsonFrags = explode("]}",$data);
$new_data = implode($json_data,$jsonFrags);
fwrite($fh, $new_data);
fclose($fh);
?>
To była najłatwiejsza rzecz, jaką mogłem wymyślić, pozwalając na rozwijanie listy użytkowników na stronie z systemem XAMPP i komputerem z systemem Windows z ograniczonym dostępem do Internetu. Raz może dwa razy dziennie.
Cały JSON wygląda tak:
{"uploads": [{"name":"foo","email":"foo@bar.com","imgurl":"http://placehold.it/50x50"}]}
Ładuję dane pliku do $data
i rozbij go na końcu znaku plikustrunowy "]}". W ten sposób zawsze dołącza się do końca. Ale to nie rozbija / nie powoduje problemów. Mogę użyć str_replace i uzyskać taki sam wynik. Po uruchomieniu powyższego skryptu PHP otrzymuję to w data.json:
{"uploads": [{"name":"foo","email":"foo@bar.com","imgurl":"http://placehold.it/50x50"}]}{"uploads": [{"name":"bar","email":"bar@foo.com","imgurl":"http://placehold.it/100x100"}]}
Udało mi się zmienić argument dla fopen, aby uzyskać różne wyniki, z których żaden nie był wynikiem, na który liczyłem. Jakieś pomysły?
Odpowiedzi:
1 dla odpowiedzi № 1Cóż, nie zdefiniowałeś zmiennej $json
w ogóle. dla wszystkich PHP wie, $json
ma wartość null. Twój kod próbuje otworzyć plik (do odczytu), ale plik jest pusty!