1

編集: 質問を編集して、より明確にしたいと思います。

$_GET のメソッドで、データベース テーブルから値を検索してテーブルに表示するための検索ボックスがいくつかあるフォームでページを作成しました。今のところかなりうまく機能しています。

必要なもの:一部の検索ボックスで複数選択できるようにしたいのですが、1 つの選択しか結果が得られません。

これはクエリです:

$query_Recordset2 = sprintf("SELECT * FROM satislar WHERE satis_satici LIKE %s AND urun_satilanurun LIKE
%s AND urun_pstnadslhizturu LIKE %s AND akt_aktalan LIKE %s AND satis_modem LIKE %s AND akt_aktdurum LIKE
%s AND akt_ttonayi LIKE %s AND satis_tarih between %s and %s ORDER BY satis_tarih DESC", 

これは選択オプションです:

<select name="satici[]" size="4" multiple="multiple" id="satici" size="4" class="span2 nostyle chzn-select" style="margin-top:9px;width:150px;">
                                                <option value="%">TÜM SATICILAR</option>

                                              <?php
do {  
?>
                                              <option value="<?php echo $row_saticilistesi['satis_satici']?>"><?php echo $row_saticilistesi['satis_satici']?></option>
                                              <?php
} while ($row_saticilistesi = mysql_fetch_assoc($saticilistesi));
$rows = mysql_num_rows($saticilistesi);
if($rows > 0) {
  mysql_data_seek($saticilistesi, 0);
  $row_saticilistesi = mysql_fetch_assoc($saticilistesi);
}
?>

あなたの貴重なアイデアをお待ちしています。

4

2 に答える 2

0

name="satici[]" multiple="multiple"正しいHTMLです。

あなたがphpでやりたいことは次のようになります:

$arr_search = array();
foreach((array)@$_POST['satici'] as $h)
    $arr_search[] = $h; // Escape this value (without "'")

$str_search = implode('|', $arr_search);

クエリ内では、たとえばWHERE satis_satici LIKE %sをに置き換えますWHERE satis_satici REGEXP '{$str_search}'

は と等しいことが多く、 と等しいことcol LIKE 'search'が多いことに注意してください。col REGEXP 'search'col LIKE 'search' OR col LIKE 'search'col REGEXP 'search|search2'

それとは別に、変数、列名などをできるだけ英語にすることをお勧めします。保守がはるかに簡単になり、エンド ユーザーに翻訳するだけで済みます。

于 2013-07-02T12:27:00.280 に答える