2013-09-26 5 views
-1

Кажется, что последний стрейч становится все сложнее!Зачем нужен этот код?

Итак, у меня есть операторы if и внутри этих операторов код должен выполняться, если они истинны. Проблема в том, что код выполняется, хотя его нет.

Код, который выполнить даже если Spproved установлен в 1

if($user_data['permissions'] >= 1) 
{ 
    // If users permission is 1 or 2 they get a field for inputting the index # and a button to change the approve field from 0 to 1 may need to make a new field to record who approved it.... 

    //Determine if the order is already approved. If not approved show index field and allow user to approve it with index number 
    if($data2[0]['Approved'] == 1) 
    { 
     echo " <font color=\"green\"> Approved"; 
    } 
    else if($data2[0]['Approved'] == 0) 
    { 
     echo " Not Approved. Supply an index number and click approve to authorize this order to be completed."; 

     if (empty ($_GET) === false) 
     { 
      $required_fields = array('IndexNum'); 
      foreach ($_GET as $key=>$value) 
      { 
       if (empty($value) && in_array($key, $required_fields) === true) 
       { 
       $errors[] = 'Fields marked with an asterisk are required'; 
       break 1; 
       } 
      } 

      if (isset($_GET['success']) === true && empty($_GET['success']) === true) 
      {    
       echo 'Index has been updated and Order is now set to Approved'; 
      } 
      else 
      {  
       if (empty($errors) === true) 
       { 
        $indexnum=$_GET['IndexNum']; 
        $approvedby=$user_data['lname']; 
        $vendorid1= $_GET['hidden1']; 

        update_approved($approvedby, $indexnum, $vendorid1); 
        header('Location: index.php'); 
        exit();   
       } 
       else if(empty($errors) === false) 
       { 
        echo output_errors($errors); 
       } 
      } 
     } 

     ?>    
     <form name="approveform" method="GET" action=""> 
     <input type="hidden" name="hidden1" value="<?php echo $id;?>">" 
     Index Number*: <input type="text" name="IndexNum">&nbsp; 
     <input type="submit" value="Approve" action=""> 
     </form> 

<?php }  
} 

if($user_data['permissions'] == 2) 
{ 
    // If user is permission 2 they can have a button to say shipped... Do I need to record who shipped it? for now nah. Would be nice to input a data of arrival though. I will think on it .... pretty lazy 
    if($data2[0]['Approved'] == 1) 
    { 
    echo "<br/>"; 
    echo "Confirm order has been ordered"; 

    if(isset($_GET['Ordered'])) 
    { 
     $vendorid1=$_GET['hidden1']; 

     echo $vendorid1; 
     //update_shipped($vendorid1); 
     //header('Location: index.php'); 
     //exit(); 
    }  
    ?> 

    <form name="approveform" method="GET" action=""> 
    <input type="hidden" name="hidden1" value="<?php echo $id;?>"> 
    <input type="submit" name="Ordered" value="Ordered" action=""> 
    </form> 

    <?php    
    }  
}  

IT показывает Одобренный в зеленом цвете на форме и Упорядоченный кнопку появляется штрафом. Когда я нажимаю кнопку отправки, код в else if ($ data [0] ['Approved'] == 0) активируется вместо кода isset. Утверждена устанавливается в 1 Так что я понятия не имею, почему этот код работает .....

Значение print_r($data2) является

Array ([0] => Array ([VendorName] => Newegg [DateRequested] => 2013-09-25 
[DateNeeded] => 0000-00-00 [Shipping] => Standard [VendorNumber] => 123123 
[VendorFax] => NA [VendorAddress] => 1 ave new [VendorCity] => socorro 
[VendorState] => nm [VendorZip] => 87114 [EquipmentConsumable] => Consumable 
[GasType] => propane [GasLocation] => United States [UNMTag] => 0 
[EquipmentLocation] => [index] => 414141 [totalcost] => 129.88 
[Approved] => 1 [Shipped] => 0)) 
+1

Показать выход print_r ($ data2). –

+0

Array ([0] => Array ([VendorName] => Newegg [DateRequested] => 2013-09-25 [DateNeeded] => 0000-00-00 [Shipping] => Standard [VendorNumber] => 123123 [VendorFax ] => NA [VendorAddress] => 1 ave new [VendorCity] => socorro [VendorState] => nm [VendorZip] => 87114 [EquipmentConsumable] => Расходуемые [GasType] => propane [GasLocation] => Соединенные Штаты [ UNMTag] => 0 [EquipmentLocation] => [index] => 414141 [totalcost] => 129.88 [Approved] => 1 [отправлено] => 0)) – HELPMEPLEASE

+0

У вас есть логическая ошибка. Пройдите свой код, отлаживая каждое условие и задание, и вы получите ответ. Нет причин, чтобы другие делали это за вас. –

ответ

1

Используйте строгие сравнения, === и !== вместо == и !=. PHP имеет тенденцию оценивать 1 и 0 как логические, если явно не указано иное.

Кроме того, с функциями, как empty(), вы можете изменить:

if(empty($_GET) === FALSE)вif(!empty($_GET))
if(empty($_GET) === TRUE)вif(empty($_GET))

Как они возвращают логическое значение.

Поскольку вы используете $ _GET, убедитесь, что все переменные, которые вам нужны за проход, указаны в URL-адресе. Поскольку элементы формы могут пропускать только вложенные элементы ввода, вам может потребоваться передать более скрытую информацию после отправки. Кроме того, вероятно, вы должны поместить имя файла в action="" или опустить его из тега формы.

+0

или просто (пусто ($ _ get)) – Snowburnt

+0

Хорошо, хотя это исправлено, но не похоже. Итак, что он делает с ===, отображается правильная информация, но теперь, если я использую кнопку отправки, она не обрабатывает информацию, просто возвращает страницу. В настоящее время это происходит в обеих функциях, которые была применена Approveform до работы ===.Теперь обе формы просто переходят на пустую страницу в submit. – HELPMEPLEASE

+0

Хорошо, что сужает его. @Snowburnt Я на самом деле говорил о первых условностях, которые используют целые числа. – Jason

1

Я знаю, что это не решит проблему, но ....

              You have an extra " 
                  right here 
                    | 
                    V 
    <input type="hidden" name="hidden1" value="<?php echo $id;?>">" 
    Index Number*: <input type="text" name="IndexNum">&nbsp; 
    <input type="submit" value="Approve" action=""> 
+0

Упс! Не видел этого. – HELPMEPLEASE

Смежные вопросы