我有一个网页,用户可以在其中选择某个日期是否可用(= 1)(beschikbaar)或不可用(= 0),这些都在列表中提供。
我正在使用单选按钮来确保用户无法在同一日期选择可用和不可用。只要用户实际输入他们是否可用,代码就可以正常工作。当用户没有输入任何内容时,我的问题就出现了,因为隐藏字段会将列表中的所有空日期发送到值为0的数据库。
我需要隐藏字段以确保用户条目和日期实际匹配,但它似乎是上述问题的原因。有人可以说明我可以做些什么来解决这个问题吗?
代码:
<?php
if(isset($_POST['beschikbaarheid'])) {
mysql_connect("localhost", "****", "****")or die("cannot connect to server");
mysql_select_db("****")or die("cannot select db");
$UserID = $_POST['UserID'];
$beschikbaarheid = $_POST['beschikbaarheid'];
$Datum = $_POST['Datum'];
foreach ($_POST['Datum'] as $date){
$index = strftime('%d%m%y',strtotime($date));
$beschikbaarheid = (isset($_POST['beschikbaarheid'][$index]) && ($_POST['beschikbaarheid'][$index] == 1 ))?1:0;
mysql_query("INSERT INTO `Werkdagen` (`UserID`, `Datum`, `bevestigd`, `invuldatum`, `beschikbaarheid`) VALUES ('$UserID', '$date', FALSE, NOW(), '$beschikbaarheid')");
-
<?php
setlocale(LC_TIME, 'dutch');
date_default_timezone_set("Europe/Amsterdam");
$two = strtotime('+1 weeks'); $date = time(); while ($date <= $two) {
echo "<li class=".strftime('%A',$date) . "><input name='Datum[]' type='hidden' id='".strftime('%A %e %B %Y',$date) . "' value='".strftime('%Y-%m-%d',$date)."'><input name='beschikbaarheid[".strftime('%d%m%y',$date) . "]' type='radio' value='1'><input name='beschikbaarheid[".strftime('%d%m%y',$date) . "]' type='radio' value='0'>".strftime('%A %e %B %Y',$date) . "</li>";
$date += 86400;
}
答案 0 :(得分:0)
首先我会清理输入,即使它是一个单选按钮。在Chrome中,我可以在单选按钮值下输入各种令人讨厌的东西并将其发送到数据库。然后放下它。
我觉得你的默认值设置为0,意味着不可用。我会做以下事情:
表单的单选按钮的值字段为A或U表示可用或不可用。然后服务器端过滤掉A或U,如果你得到零,你就知道没有输入字段。
<input type="radio" id="r1" name="rate" value="A">Available</input>
<input type="radio" id="r1" name="rate" value="U">Unavailable</input>
然后服务器端
if($_POST['r1'] == "A") //Set available
else if($_POST['r1'] == "U") //Set unavailable
else if($_POST['r1'] == 0 || !isset($_POST['r1']) ) //Untouched entry field, something wrong
这是你想要做的吗?过滤掉选定的条目与未触及的条目?