Я работаю с довольно простой формой, но по какой-то причине он не отправляет результаты NULL и вместо этого отправляет их в виде пустых результатов.Форма отправки формы не отправляется NULL
<div class="span6">
<form action="" method="POST">
<div class="block-fluid without-head">
<div class="toolbar clearfix">
<div class="right">
<div class="btn-group">
<button type="submit" class="btn btn-small btn-warning tip" data-original-title="Submit Aritcle">
<span class="icon-ok icon-white"></span>
</button>
<button type="button" class="btn btn-small btn-danger tip" data-original-title="Delete Article">
<span class="icon-remove icon-white"></span>
</button>
</div>
</div>
<div class="left">
<div style="font-size: 11pt; font-family: -webkit-body; font-weight: bolder;">Article Exchange Request</div>
</div>
</div>
<div class="row-form clearfix">
<div class="span3">Title</div>
<div class="span9"><input type="text" name="title" value="" placeholder="main subject title"></div>
</div>
<div class="row-form clearfix">
<div class="span3">First Sentence</div>
<div class="span9"><input type="text" name="s1" value="" placeholder="Sentence with max of 200 characters"></div>
</div>
<div class="row-form clearfix">
<div class="span3">Second Sentence</div>
<div class="span9"><input type="text" name="s2" value="" placeholder="Optional sentence with max of 200 characters"></div>
</div>
<div class="row-form clearfix">
<div class="span3">Third Sentence</div>
<div class="span9"><input type="text" name="s3" value="" placeholder="Optional Sentence with max of 200 characters"></div>
</div>
<div class="row-form clearfix">
<div class="span3">Website Url</div>
<div class="span9"><input type="text" name="link" value="" placeholder="Url to be included in articles"></div>
</div>
<div class="row-form clearfix">
<div class="span3">Website Url Title</div>
<div class="span9"><input type="text" name="link_text" value="" placeholder="Url text to be included in articles limit 150 characters"></div>
</div>
<div class="row-form clearfix">
<div class="span3">Credit Offer</div>
<div class="span9"><input type="text" name="cost_value" value="" placeholder="Example: 100"></div>
</div>
</div>
</form>
</div>
Проблема в том, кто-то может просто прийти и отправить форму без ввода каких-либо данных на всех, и она по-прежнему представляет, и добавляет пустые результаты каждого столбца в базе данных. Значение NULL не задано в базе данных.
Моя обработка формы
<?
if (isset($_POST[cost_value])) {
$stmt = $db->prepare("SELECT credits from member_credits WHERE username = :username");
$stmt->bindParam(':username', $username);
$stmt->execute();
$row = $stmt->fetch();
$count = $row[credits];
if ($count > $_POST[cost_value]) {
$stmt = $db->prepare('INSERT INTO article_requests (title, s1, s2, s3, link, link_text, offer, username) VALUES (:title, :s1, :s2, :s3, :link, :link_text, :offer, :username)');
$stmt->bindValue(':title', $_POST[title]);
$stmt->bindValue(':s1', $_POST[s1]);
$stmt->bindValue(':s2', $_POST[s2]);
$stmt->bindValue(':s3', $_POST[s3]);
$stmt->bindValue(':link', $_POST[link]);
$stmt->bindValue(':link_text', $_POST[link_text]);
$stmt->bindValue(':offer', $_POST[cost_value]);
$stmt->bindValue(':username', $username);
$stmt->execute();
}
}
?>
Что я ожидаю случаться на представления, если значение не вводится в форме он должен быть установлен в NULL ... Это означало бы, если не $ _POST [cost_value] было set, форма не представила бы. Поскольку он стоит сейчас, он ВСЕГДА видит $ _POST [cost_value] как установленный - иногда это значение, такое как $ _POST [cost_value] = '100'; и другие времена $ _POST [cost_value] = ''; но в обоих случаях форма будет представлена. Точно так же у меня есть база данных, так что только значения s2 и s3 должны быть равны нулю, однако когда все отправляет пустой, а не null, это в основном бесполезно.
Что именно мне не хватает? Почему он не говорит $ _POST [cost_value] = NULL; если пользователь не вводит значение? Почему он отправляет? У меня есть ощущение, что его будет что-то основное я с видом, я просто не вижу ....
ОБНОВЛЕНИЯ ДЛЯ CLARITY
Я знаю, что есть несколько способов, чтобы исправить это. Я могу использовать, если тогда тесты, я могу использовать временные переменные, я могу проверить, что само значение - это нечто иное, чем «». Я знаю, КАКИЕ РАБОТАЮТСЯ. Я не понимаю, ПОЧЕМУ они нужны. Почему я делаю формы каждый день недели, используя ifseet, и каждый день, что работает. Если форма не имеет значений, введенных пользователем, форма не будет отправляться, потому что if isset возвращает false. Итак, почему именно в этой конкретной форме он отправляет '' вместо того, чтобы говорить! Isset не обрабатывается.
Предоставлено, что я могу использовать тройные операторы, чтобы решить это, я полагаю, я никогда не сталкивался с этим раньше. Я делаю формы все время, и обычно, если кто-то подает форму без данных, форма не обрабатывается. Вот почему (я думал) было довольно стандартно использовать if (isset) в обработке POST-формы. – Bruce
Я бы не предложил установить NULL на POST. Я бы установил это в базе данных так, чтобы, если во время создания строк не было введенных значений, тогда он будет автоматически установлен в NULL вместо строкового текста «NULL» – Kray
@Levi. база данных имеет столбцы, которые должны быть NULL, но при отправке пустого значения будет установлено пустое значение, а не NULL. Вот почему я смущен. – Bruce