2

(这个问题是继我之前修复的问题之后的(这里)

我发现了与此(此处)类似的问题,但解决方案并不是我想要的。

我目前在我的网站上有一个 JQuery 样式的自动完成搜索引擎,称为(fcbkcomplete)。脚本的原始操作从一个 .txt 文件运行,查找手动输入的值并在自动完成结果中输出它们。但是,我希望脚本从 MYSQL 数据库中获取值,而不是手动输入到 .txt 文件中,因为我最终希望用户可以选择添加自己的值。

因此,我将 Javascript 调用为 .php 文件而不是 .txt,其中包含以下脚本:

//connection details

$getData = mysql_query("SELECT Name FROM tblIngredient"); 

 while($info = mysql_fetch_array($getData)) 
 {
     echo "{\"key: value:\";
     echo $info['Name'];
     echo "key: value:\"";
     echo $info['Name'];
     echo "}, ";
 }

此脚本工作并以正确的格式输出数据:

{"key": "vodka","value": "vodka"}, {"key": "tequila","value": "tequila"},

所以我需要知道如何将这个 JSON 输出转换为 data.txt(这样随着数据库表的增长,脚本运行时 .txt 文件会自动更新)

这是在我的网站上搜索的最后一步,因此非常感谢任何帮助。

-马特

4

4 回答 4

2

我真的不能告诉你要保存到这个 txt 文件中的哪一点数据,但我会假设它是这样的:

{"key": "vodka","value": "vodka"}, {"key": "tequila","value": "tequila"},

如果不是,您可以将其替换为您想要的。

我认为您正在寻找的功能是fopen()专门使用 'a' 作为第二个参数。

从手册:

'a'只供书写;将文件指针放在文件末尾。如果该文件不存在,请尝试创建它。

这是一个如何使用它的例子(一个非常简短的例子)。

$string = '{"key": "vodka","value": "vodka"}, {"key": "tequila","value": "tequila"}';
$fp = fopen('somefile.txt', 'a');
fwrite($fp, $string);
fclose($fp);

这里要考虑的一件事(除其他外)是文件需要适当的写访问权限。

于 2012-04-18T15:13:36.297 回答
1

您可以使用ob_startob_get_contents的组合,然后放入带有file_put_contents的文本文件

<?php
$getData = mysql_query("SELECT Name FROM tblIngredient");
ob_start();
while($info = mysql_fetch_array($getData))
{
    echo "{\"key: value:\"";
    echo $info['Name'];
    echo "key: value:\"";
    echo $info['Name'];
    echo "}, ";
}
$return = ob_get_contents();
ob_end_clean();

file_put_contents('./data.txt',$return);
?>

或者,如果您实际上想要将其有效的 json 保存到文件中,那么您可以在数组上使用json_encode

<?php
$getData = mysql_query("SELECT Name FROM tblIngredient");

while($info = mysql_fetch_array($getData)){
    $result[]=$info['Name'];
}
file_put_contents('./data.txt',json_encode($result));
?>
于 2012-04-18T15:17:44.337 回答
1

与其将自动完成功能指向 data.txt,不如将其指向您的 PHP 页面?

$("element").fcbkcomplete({
    ...
    json_url: "fetched.php",
    ...
});
于 2012-04-18T15:12:29.463 回答
0

如果我很好理解您基本上想将此输出写入 txt 文件,对吗?在这种情况下,您不应该使用 echo 功能,而是使用 fopen 和 fwrite。看看这个教程

于 2012-04-18T15:12:26.147 回答