1

こんにちは、mysqlテーブルからデータをフィルタリングするために使用される2つのドロップダウンボックスがあります。問題は、issetを使用して値が選択されているかどうかを判断すると、ボックスが常に設定されているように表示されることです。

ドロップ ボックスのコードは次のとおりです。

 <?php 
                       if (isset($_POST['referrer']) && $_POST['referrer'] != "referrer") {
                       $select = $_POST['referrer'];
                         }
                       ?>
                                    <select name="referrer">
                                    <option value="">Referrer</option>

                                      <?php
                       // Get records from database (table "name_list").
                       $list=mysql_query("select DISTINCT referrer from masterip_details WHERE country_code='GB' AND TRIM(IFNULL(referrer,'')) <> '' order by referrer DESC");
                       // Show records by while loop.
                       while($row_list=mysql_fetch_assoc($list)){
                       $referrer = $_POST['referrer']; ?>
                                      <option value="<?php echo $row_list['referrer']; ?>" <?php if($row_list['referrer']==$select){ echo "selected"; } ?>><?php echo $row_list['referrer']; ?></option>        
                                      <?php     
                       }
                       ?>
                                    </select>



 <?php 
                       if (isset($_POST['returning']) && $_POST['returning'] != "returning") {
                       $select2 = $_POST['returning'];
                         }
                       ?>
                                    <select name="returning">
                                    <option value="">Referrer</option>
                                      <?php
                       // Get records from database (table "name_list").
                       $list2=mysql_query("select * from repeater_drop_down order by id DESC");
                       // Show records by while loop.
                       while($row_list2=mysql_fetch_assoc($list2)){
                       $returning = $_POST['returning']; ?>
                                      <option value="<?php echo $row_list2['value']; ?>" <?php if($row_list2['value']==$select2){ echo "selected"; } ?>><?php echo $row_list2['title']; ?></option>     
                                      <?php     
                       }
                       ?>
                                    </select>

コードの isset 要素は次のとおりです。

$returning = $_POST['returning'];
$referrer = $_POST['referrer'];

 if (isset($returning, $referrer)){

 //code //

  elseif (isset($returning)){

   ///code //

  elseif (isset($referrer)){

  //code //

  else {

 //code   

        }

クエリは正常に機能するため含めていませんが、両方のドロップダウン ボックスを選択するかどうかに関係なく、ボックスの 1 つだけでオプションが選択されている場合でも、コードは両方の変数の最初の isset に自動的に移動します。

アドバイスや提案をいただければ幸いです。

4

1 に答える 1

1

select POST 値が設定されているかどうかだけでなく、フォームで送信された値を確認する必要があります。

''選択を変更せずに送信された場合、リファラーの値は(空の文字列) になります。代わりにそれを確認してください。

于 2013-07-21T22:57:41.650 に答える