ユーザーがsearch.php に検索文字列を書き込む php-ajax ページがあり、リストは getsearch.php にエコーされます。getsearch.phpの結果は ajax を使用して search.php に表示されますが、すべての行にチェック ボックスがあります。
getsearch.php
$q = $_GET["q"];
$sql = "select hobbyid,hobby from hobbies where hobby LIKE '%".$q."%' ";
if($result=mysql_query($sql))
{
while($row=mysql_fetch_assoc($result))
{
$v = $row['hobbyid'];
echo $row['hobby'] . '<input type="checkbox" name="hobby[]" value='.$v.'>';
}
}
そして、次のコードでわかるように、この SQL はすべての変更 (onkeyup) に対して起動されます。選択した趣味の配列を取得するためのチェックボックスを保持しています。これらは選択された値で、updatehobby.php に渡されます。
search.php
echo '<form action="updatehobby.php" method="POST">
echo 'Search:<input type="text" onkeyup="showSearch(this.value)" />
<div id="txtSearch" >HERE THE RESULTS FROM getsearch.php are shown</div>
<input type="submit></form>';
そのため、ユーザーが新しい検索文字列を書き込むと、リストが変更され、以前のチェック ボックスが選択解除されます。では、検索が変更された場合でも、以前のチェック ボックスを保持して表示するにはどうすればよいでしょうか。
最終的に1日試した後、私はこの方法で成功しました!
ユーザーが search.php に検索文字列を入力すると、クエリが getsearch.php に渡され、そこから結果がエコーされ、この結果が search.php に表示されます。
チェックボックスを使用する代わりに、ボタンを挿入しました。そのため、すべての行にチェックボックスの代わりにボタンがあります。
<button type="button" onClick="submitform(<?php echo $row['hobbyid']; ? >);">Add hobby</button>
search.php で、ボタンの onclick 呼び出しを処理する別の ajax 関数 (submitform) を再度使用しました。趣味追加ボタンを押すと、ajax関数submitformが呼び出され、趣味が挿入されます。
したがって、基本的には search.php で 2 つの ajax 関数を使用しました。