2

(この質問は、修正された私の以前の問題に続くものです(ここに)

私はこれに似た質問を見つけました(ここ)が、解決策は私が探していたものではありませんでした。

現在、私のサイトには(fcbkcomplete)というJQueryスタイルのオートコンプリート検索エンジンがあります。スクリプトの元の操作は.txtファイルから実行され、手動で入力された値を検索して、オートコンプリートの結果に出力しました。ただし、最終的にユーザーが独自の値を追加できるようにするため、スクリプトで.txtファイルに手動で入力するのではなく、MYSQLデータベースから値を取得する必要があります。

したがって、このスクリプトを含む.txtではなく.phpファイルをJavascriptで呼び出すようにしました。

//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()具体的には2番目の引数として「a」を使用していると思います。

マニュアルから:

'a'書き込み専用です。ファイルポインタをファイルの最後に置きます。ファイルが存在しない場合は、作成してみてください。

使い方の例(非常に簡単な例)を次に示します。

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

ここで(とりわけ)考慮すべきことの1つは、ファイルに書き込みアクセスのための適切なアクセス許可が必要になることです。

于 2012-04-18T15:13:36.297 に答える
1

オートコンプリートをdata.txtにポイントする代わりに、PHPページにポイントしてみませんか?

$("element").fcbkcomplete({
    ...
    json_url: "fetched.php",
    ...
});
于 2012-04-18T15:12:29.463 に答える
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 に答える
0

基本的にこの出力をtxtファイルに書き込みたいと私がよく理解しているなら、そうですか?この場合、echo関数を使用するのではなく、fopenとfwriteを使用する必要があります。このチュートリアルをご覧ください

于 2012-04-18T15:12:26.147 に答える