2013-07-21 4 views
1

HI У меня есть два раскрывающихся окна, которые используются для фильтрации данных из таблицы mysql, проблема в том, что окна всегда отображаются так, как если бы они были установлены, когда я использую isset для определения, если какой-либо из них имеет любые выбранные значения.PHP Drop Down Box всегда 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 

     } 

Я не включил запросы, как они работают нормально, но или не выбрать я оба падают вниз коробки код автоматически переходят к первому IsSet как для переменного, даже если только один из боксов имеют вариант, выбранный ,

Любые советы или предложения были бы оценены.

+0

У них всегда есть опция. Так что первое условие всегда будет истинным. Значение для этой опции может быть пустой строкой, но это все равно значение. – David

+0

Вы пытались изменить 'isset' на' empty', чтобы узнать, есть ли у вас лучшие результаты? – DevlshOne

ответ

1

Вы должны проверить значение, которое было отправлено с помощью формы, а не только независимо от того, установлено ли значение POST.

Значение реферала будет '' (пустая строка), если оно отправлено без изменения выбора. Проверьте это вместо этого.