2

PHP を使用してデータベースを呼び出し、3 つの異なるドロップダウン メニューを表示しています。それはうまくいきます。私の問題は、関数を呼び出してドロップダウンの選択を関数に渡し、送信ボタンが押された後にレコードを表示することです。この関数は、ドロップダウンの 1 つだけが選択されているか、3 つすべてが選択されているかを考慮したビルド クエリです。

関数は現在、フォームと同じページにあります。

フォームは次のとおりです。

 <form action="edit.php" method="POST">
 <select>
      <?php $getGroup = mysql_query("SELECT DISTINCT resgroup FROM restable ORDER BY               resgroup"); 
      while($viewAllGroups = mysql_fetch_array($getGroup)){
      ?>
      <option id="<?php echo $viewAllGroups['resgroup']; ?>"><?php echo $viewAllGroups['resgroup']; ?></option><?php } ?>
 </select>

 <select>
      <?php $getType = mysql_query("SELECT DISTINCT restype FROM restable ORDER BY restype");
      while($viewAllTypes = mysql_fetch_array($getType)){
      ?>
      <option id="<?php echo $viewAllTypes['restype']; ?>"><?php echo $viewAllTypes['restype']; ?></option><?php } ?>
 </select>

 <select>
     <?php $getService = mysql_query("SELECT DISTINCT service FROM restable ORDER BY service");
  while($viewAllServices = mysql_fetch_array($getService)){
  ?>
      <option id="<?php echo $viewAllServices['service']; ?>"><?php echo $viewAllServices['service']; ?></option><?php } ?>
 </select>
 <input type="submit" class="btn btn-primary" value="Filter" />
 </form>

関数は次のとおりです。

 <?php
 function displayrecords(){
     $groups = $_POST['resgroup'];
     $type = $_POST['restype'];
     $service = $_POST['service'];

 if($groups != ""){
     $where[] = " `resgroup` = '".mysql_real_escape_string($group)."'";
 }
 if($type != ""){
     $where[] = " `restype` = '".mysql_real_escape_string($type)."'";
 }
 if($service != ""){
     $where[] = " `service` = '".mysql_real_escape_string($service)."'";
 }

 $sql_json = "SELECT * FROM mytable WHERE $where_clause ORDER BY id DESC";
 }
 ?>

次に、関数を表示しようとします。

 <?php displayrecords(); ?>

エラーは発生しませんが、送信ボタンをクリックすると、ドロップダウン メニューがクリアされ、何も返されません。私は多くのことを見逃していることを知っています。助けていただければ幸いです。

前もって感謝します。

4

3 に答える 3

1

まず、各選択要素に名前を付けてください。再び edit.php ファイルで、その名前で post 配列の値にアクセスします。

今、私はその例を挙げています。

HTML 部分:

<select name='select1' >
  <option value='1'>Value</option>
  <option value='1'>Value</option>
</select>

edit.php では、selectbox select1 の選択された要素の値に次のようにアクセスできます。$_POST['select1'];

于 2013-07-31T13:50:22.687 に答える
1

配列を文字列に追加していますが、結果は"SELECT * FROM mytable WHERE Array() ORDER BY id DESC";または同様のものになります。

これを行の前に追加してみてください$sql_json = "...

$where = implode(" AND ", $where);

restype=value AND service=valueこれにより、文字列に etcが追加されます。

さらに、句$groupの代わりに参照し$groupsています。if($groups != "")

また、selectタグを で参照できるように、タグに名前を付ける必要があり$_POSTます。

<select name="restype">
于 2013-07-31T13:53:22.037 に答える
0

SQL ステートメントが変数 $where_clause を探しているため、PHP を変更する必要がありますが、コードで定義されていません。

where句の構築を書き換えることができます

<?php
 function displayrecords(){
     $groups = $_POST['resgroup'];
     $type = $_POST['restype'];
     $service = $_POST['service'];
 $where = "";
 if($groups != ""){
     $where = " `resgroup` = '".mysql_real_escape_string($group)."'";
 }
 if($type != ""){
     if( $where != "" ) $where .= " AND ";
     $where .= " `restype` = '".mysql_real_escape_string($type)."'";
 }
 if($service != ""){
     if( $where != "" ) $where .= " AND ";
     $where .= " `service` = '".mysql_real_escape_string($service)."'";
 }

 $sql_json = "SELECT * FROM mytable WHERE $where ORDER BY id DESC";
 }
 ?>
于 2013-07-31T13:52:16.000 に答える