我有一个网页,用户在其中选择他们是否在某个日期可用(=1)(beschikbaar)或不可用(=0),它们在列表中提供。
我使用单选按钮,以确保用户不能选择可用和不可用的同一日期,然而。只要用户实际输入他们是否可用,代码就可以正常工作。我的问题发生在用户不输入任何东西时,因为隐藏字段,列表中的所有空日期都以值0发送到数据库。
我需要隐藏字段来确保用户条目和日期实际上是匹配的,但它似乎是上述问题的原因。有人能告诉我怎么解决这个问题吗?
le代码:<?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;
}
首先,我将清理输入,即使它是一个单选按钮。在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
这就是你想做的吗?过滤掉选中的条目和未动的条目?