2013-03-12 8 views
0

Я использую wordpress с галереей nextgen, и я хотел бы получить изображения из определенного идентификатора галереи в отдельном файле JSON. Пока у меня есть этот код, но он просто экспортирует изображения с данного ID (в этом случае 7). Я знаю, что должна быть какая-то функция foreach, но мои знания javascript не заходят так далеко.Экспорт нескольких файлов json

Может ли кто-нибудь помочь мне с этим? Код, который я до сих пор:

mysql_connect("localhost","DB-NAME","DB-PASSWORD"); 
mysql_select_db("DB-NAME"); 

$result=mysql_query("SELECT filename FROM zs_ngg_pictures WHERE galleryid = '7' ORDER BY sortorder LIMIT 3"); 

while($row=mysql_fetch_assoc($result)){ 
$output[]=$row; 
} 

$fp = fopen('result.json', 'w'); 
fwrite($fp, json_encode($output)); 
fclose($fp); 

echo json_encode($output); 

ответ

0

Если я правильно понимаю, что вы пытаетесь достичь, вы можете просто получить все фотографии, поместите их в многомерном массиве:

$result=mysql_query("SELECT filename, galleryid FROM zs_ngg_pictures ORDER BY sortorder"); 

while($row=mysql_fetch_assoc($result)){ 
    $output[$row['galleryid']][] = $row['filename']; 
} 

и у вас есть PHP-массив, как это (если у вас есть две галереи с идентификатором 7 и 23):

array(
    7 => array('file7-1.jpg','file7-2.jpg','file7-3.jpg'), 
    23 => array('file23-1.jpg','file23-2.jpg'), 
); 

поэтому файл result.json будет как:

{ "7" : ["file7-1.jpg", "file7-2.jpg", "file7-3.jpg"], 
    "23" : ["file23-1.jpg", "file23-2.jpg"] } 

Если вы хотите, отдельные файлы для каждого galleryid вы можете затем цикл и сохранять файлы с разными названиями:

foreach($output as $gall_id => $gallery) { 
    file_put_contents('result-'.$gall_id.'.json', json_encode($gallery)); 
} 

, и вы будете иметь два файла по имени result-7.json и result-23.json

+0

Спасибо Guglie, нижняя часть была именно то, что мне нужно. Теперь я получаю уникальный json-файл для каждого id. Еще раз спасибо! – Koen

+0

Добро пожаловать и посмотрите также на совет @ powtac. – Guglie

+0

Я тоже посмотрел на этого человека. Не тестировал, но по внешности он выводит только один файл json ... – Koen

0

Вместо от осложнений fopen() и echo:

$fp = fopen('result.json', 'w'); 
fwrite($fp, json_encode($output)); 
fclose($fp); 

echo json_encode($output); 

вы можете просто позвонить:

file_put_contents('result.json', json_encode($output)); 
readfile('result.json'); 

или пропустить файл и просто выводит JSON:

echo json_encode($output)); 
Смежные вопросы