我试图使用if...else
与'是' '否'单选按钮。由于某些原因,"如果"代码会被忽略,而无论选择"是"还是"否",都会出现"您的报价将发送到提供的邮政编码"。我哪里做错了?
<?php
$delivery = 'unchecked';
$delivery = 'delivery';
if ($delivery == 'no') {
echo "Collection from bottleneck, littlebeck!";
} else {
echo "Your quote will include the delivery to the postcode you provided";
}
// creating cover for all unchecked
if (isset($_POST['delivery'])) {
$delivery = $_POST['delivery'];
if ($delivery == 'Delivery') {
$delivery = 'checked';
}
}
// creating 'insert' statement
$sql = "INSERT INTO cupcake(delivery, additionalInformation, postcode ) VALUES ('$delivery', '$additionalInformation', '$postcode')";
if (!mysql_query($sql))
{
die('Error:' .mysql_error ());
}
mysql_close();
?>
…相反,出现了第二个echo 'delivery to your postcode included '。
你有
$delivery = 'delivery';
if ($delivery == 'no')
所以$delivery
总是字符串delivery
而不是字符串no
,所以它总是到else
我来修改一下
$delivery = 'unchecked';
$delivery = 'delivery';
if ($delivery == 'no') {
echo "Collection from bottleneck, littlebeck!";
} else {
echo "Your quote will include the delivery to the postcode you provided";
}
// creating cover for all unchecked
if (isset($_POST['delivery'])) {
$delivery = $_POST['delivery'];
if ($delivery == 'Delivery') {
$delivery = 'checked';
}
}
变成这样
<?php
$checked = false;
$delivery = isset($_POST['delivery']) ? $_POST['delivery'] : false;
if (!$delivery) {
echo "Collection from bottleneck, littlebeck!";
}else if($delivery == 'Delivery'){ //make sure casing is right ( delivery is not equal to Delivery - this is why i suggest using boolean below, or numbers even text can be more complicated to check )
$checked = true;
} else {
// do we want it checked or do we want it delivered -- not sure from your code but this might be redundant with the above elseif
echo "Your quote will include the delivery to the postcode you provided";
}
// creating cover for all unchecked
if ($checked) {
//do some stuff
}
说明:不要害怕使用更多的变量。尽可能使用布尔值(true和false)。将初始化(默认和赋值部分)与逻辑(决策部分)和结果部分(输出等)分开。. 然后它就会像一首诗一样流淌。虽然这并不总是可能的,但请始终牢记。
初始化决定
执行
您需要获取所选单选的值并将其放入delivery变量中,或者直接使用它来检查是否为isSelected
正如dave指出的,你的if语句是错误的。但是为了回答你关于复选框的问题,如果你有一个这样的复选框:
<input type="checkbox" name="delivery" value="deliver!" />
你可以使用以下两种方法检查它是否被选中:
if(isset($_POST['delivery']))
如果是POST,或者:
if(isset($_GET['delivery']))
我看不出$delivery在哪里会被赋值给'no' -所以'else'总是会返回。
我建议尝试更显式的变量名,不要重复使用它们。还要记住php中代码执行的顺序。
感谢大家的宝贵意见。我想我现在知道我错在哪里了!我迫不及待地想尝试你今晚建议的这些东西,不幸的是,我第一次有机会(英国时间)将发布发生的事情的反馈:)
好的,我得到了我想要的,如果有人发现它有用,但要小心,即使有上面有用的反馈,我仍然在黑暗中摸索我的方式,如果复制要小心
. html形式 <form method="post" action="postcode.php">
<p>Will You Require Delivery? <p>Yes<input type="radio" name="delivery" value="yes"/> <p>No<input type="radio" name="delivery" value="no"/></p>
<br/>
</form>
。php形式……
// below enterubg values from the form
// this is the new piece of code that IS WORKING :)))
if ($_POST['delivery'] == "yes")
{
echo "Thank you. Your quote will include the delivery charge to the postcode you provided";
}
else if ($_POST['delivery'] == "no")
{
echo "Thank you, pick up from little beck humperding-dong!";
}
/* my previous code that wasn't working :((((
$delivery = 'unchecked';
$delivery = 'Delivery';
if ($delivery == 'Delivery') {
echo "Your quote will include the delivery to the postcode you provided";
} else {
echo "Collection from bottleneck, little beck!";
}
*/
// creating cover if unchecked
if (isset($_POST['delivery'])) {
$delivery = $_POST['delivery'];
if ($delivery == 'Delivery') {
$delivery = 'checked';
}
}
// creating 'insert' statement
$sql = "INSERT INTO cupcake(delivery) VALUES ('$delivery')";
if (!mysql_query($sql))
{
die('Error:' .mysql_error ());
}
mysql_close();
?>