0

我正在将 wordpress 与 nextgen 画廊一起使用,我想从单独的 JSON 文件中的特定画廊 id 获取图像。到目前为止,我有这个代码,但这只是从给定的 ID 导出图像(在本例中为 7)。我知道一定有某种 foreach 函数,但我的 javascript 知识不会走那么远。

有人可以帮我解决这个问题吗?我到目前为止的代码:

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);
4

2 回答 2

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 数组(如果你有两个 id 为 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.jsonresult-23.json

于 2013-03-12T12:41:47.860 回答
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));
于 2013-03-12T13:18:27.713 回答