0

チェックボックスを使用して検索を行う際に問題が発生しました。基本的に、登録日を持つデータがいくつかあります。月ごとに検索し、選択した月または月に従ってデータを取得する必要があります。

私はphpとmysqlを使用しています。

ここに単純なhtmlがあります:


<ul>
<li><input type="checkbox" name="month_in" value="1" />January</li>
<li><input type="checkbox" name="month_in" value="2" />February</li>
<li><input type="checkbox" name="month_in" value="3" />March</li>
<li><input type="checkbox" name="month_in" value="4" />April</li>
<li><input type="checkbox" name="month_in" value="5" />May</li>
<li><input type="checkbox" name="month_in" value="6" />June</li>
<li><input type="checkbox" name="month_in" value="7" />July</li>
<li><input type="checkbox" name="month_in" value="8" />August</li>
<li><input type="checkbox" name="month_in" value="9" />September</li>
<li><input type="checkbox" name="month_in" value="10" />October</li>
<li><input type="checkbox" name="month_in" value="11" />November</li>
<li><input type="checkbox" name="month_in" value="12" />December</li>
<li><input type="submit" value="Search"></li>
</ul>

および php+mysql コードの一部:

$search=$_POST["month_in"];

$qry=mysql_query("select * from table where MONTH(dor) like '%{$search}%'");

問題は、上記のコードは、ユーザーが 1 か月のみをチェックした場合にのみ機能しますが、ユーザーが 2 か月以上チェックした場合、最も高い月の情報のみを取得します (つまり、ユーザーが 1 月、3 月、4 月、8 月をチェックした場合、次の結果が得られます)。 8月のみ)。

4

2 に答える 2

1

nameチェックボックスの属性に 配列を使用

<ul>
    <li><input type="checkbox" name="month_in[]" value="1" />January</li>
    <li><input type="checkbox" name="month_in[]" value="2" />February</li>
    <li><input type="checkbox" name="month_in[]" value="3" />March</li>
    <li><input type="checkbox" name="month_in[]" value="4" />April</li>
    <li><input type="checkbox" name="month_in[]" value="5" />May</li>
    <li><input type="checkbox" name="month_in[]" value="6" />June</li>
    <li><input type="checkbox" name="month_in[]" value="7" />July</li>
    <li><input type="checkbox" name="month_in[]" value="8" />August</li>
    <li><input type="checkbox" name="month_in[]" value="9" />September</li>
    <li><input type="checkbox" name="month_in[]" value="10" />October</li>
    <li><input type="checkbox" name="month_in[]" value="11" />November</li>
    <li><input type="checkbox" name="month_in[]" value="12" />December</li>
    <li><input type="submit" value="Search"></li>
    </ul>

INキーワードを使用して結果を取得する

$search=$_POST["month_in"];
$search_string = implode(', ', $search);
$qry=mysql_query("select * from table where MONTH(dor) IN ($search_string)");
于 2012-08-16T06:25:27.647 に答える
1

ユーザーが複数のチェックボックスを選択した場合でも、最後に選択したチェックボックスの値が php スクリプトに返されます。複数の値を配列形式で投稿する場合は、チェックボックスの name 属性を から に変更しname="month_in"ますname="month_in[]"。したがって、月の数値配列を受け取ります。

 array(10, 12);

 //fetch and make it a comma separated string using implode() php string function
 $csvSearch = implode(',', $_POST["month_in"]);
 $qry=mysql_query("SELECT * FROM table WHERE FIND_IN_SET(dor, '$csvSearch')");
于 2012-08-16T06:29:48.627 に答える