#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)
, прежде чем фактически использовать ее.
Ссылка
Комментарии:
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. Второй аргумент является значением по умолчанию, если вы передаете его, а параметр не был передан на страницу, это значение, которое вы получаете, если параметр был передан в нем, переопределяет значение по умолчанию. По умолчанию используется пустая строка, если вы ее не передаете (что является довольно разумным предположением для значения по умолчанию).