Публикация пустой переменной PHP

#php #mysql

#php #mysql

Вопрос:

Есть ли способ НЕ отображать сообщение об ошибке при публикации пустой переменной PHP? Я принимаю и отклоняю резервирование, и в форме у меня есть два флажка:

 echo "<form action='ConfirmAcceptance.php' method='post'>";
    while($check = mysql_fetch_array($pending)){    
?>
    <tr>
    <input name='approve[]' type='checkbox' value="<?php echo $check['R_No']?>">
    '<input name='decline[]' type='checkbox' value="<?php echo $check['R_No']?>">
    <td><?php echo $check['ID_No']?></td> 
    <td><?php echo $check['F_Name']?></td> 
    <td><?php echo $check['L_Name']?></td> 
    <td><?php echo $check['Req_Unit']?></td> 
    <td><?php echo $check['Mob_No']?></td> 
    <td><?php echo $check['E_mail']?></td> 
    <td><?php echo $check['Ev_Name']?></td> 
    <td><?php echo $check['v_name']?></td>  
    <td><?php echo $check['Office_Approval_Status']?></td>
    <td><input type='text' name='comments[]' value=' '/></td>
    </tr>
    <?php
    }

    echo"<input type='submit' value='Approve' class='Log'>";
    ?>

    </table>
  

вот confirmacceptance.php где я публикую свое содержимое:

 $status="Approve";
$status2="Decline";
$reservation= $_POST['Approve'];
$decline=$_POST['decline'];
$comments=$_POST['comments'];
  

Когда я не проверял отклоненный элемент, он отображает элемент ошибки, потому что переменная POST пуста, есть ли способ НЕ публиковать сообщение об ошибке? Заранее благодарю вас!

Комментарии:

1. $reservation= isset($_POST['Approve']) ? $_POST['Approve'] : 'DEFAULT_VALUE_HERE';

2. Привет @ scrag, когда я попробовал это «Уведомление: неопределенный индекс: Утвердить в C:xampphtdocsFac_Ven_sysConfirmAcceptance.php в строке 38 » все еще появилось. Я скопировал этот код над своими переменными.

3. в вашем коде вы определили, name='approve[]' и вы пытаетесь получить $_POST['Approve'] и, во-вторых, вы определили $_POST[‘approve’] как массив.

Ответ №1:

Установить error_reporting(0);

Но лучше, если вы проверите переменную, используя isset($var) , прежде чем фактически использовать ее.

Ссылка

http://www.php.net/manual/en/function.error-reporting.php

http://www.php.net/manual/en/function.isset.php

Комментарии:

1. Полное отключение ошибок является излишеством для решения этой проблемы, и выполнение этого подобным образом поднимает вопросы о том, что происходит, когда вы получаете предупреждения в dev, пропускать предупреждения — плохая идея, поскольку обычно это существует, чтобы сообщить вам, что есть лучшие подходы. Ошибки всегда должны быть отключены для работающих систем, поэтому я не думаю, что это все равно что-то изменит.

2. Правильно @scrag. Но Гастон специально попросил отключить ошибки. В любом случае, спасибо за быстрый ответ, я обновил ответ. 🙂

Ответ №2:

конечно, есть способ

вы можете сделать это следующим образом

 if(isset($_POST['Approve']) amp;amp; !empty($_POST['Approve'])){
    $reservation= $_POST['Approve'];
}
  

Комментарии:

1. isset() здесь бесполезен, поскольку empty() инкапсулирует тест isset(). Затем это можно суммировать как троичное выражение: $reservation = !empty( $_POST[«Одобрить»]) ? $_POST[«Одобрить»] : NULL;

Ответ №3:

Используйте isset и тернарный оператор, чтобы гарантировать, что вызов не будет выполнен, если аргумент не передан:

 $reservation= isset($_POST['Approve']) ? $_POST['Approve'] : 'DEFAULT_VALUE_HERE';
  

Если вы чувствуете себя ленивым, создайте функцию для переноса поведения следующим образом:

 function p($arg, $default = '') {
    return isset($_POST[$arg]) ? $_POST[$arg] : $default;
}

$reservation = p('Approve', 'NOT PASSED');
$decline = p('decline');
  

Комментарии:

1. Эй, чувак, это сработало!! Итак, если значение decline пустое, буду ли я также выполнять эту функцию? но добавить «НЕ ПЕРЕДАНО» в части отклонения?

2. Второй аргумент является значением по умолчанию, если вы передаете его, а параметр не был передан на страницу, это значение, которое вы получаете, если параметр был передан в нем, переопределяет значение по умолчанию. По умолчанию используется пустая строка, если вы ее не передаете (что является довольно разумным предположением для значения по умолчанию).