PHP如果. .如果echo未注册,则返回Else



我试图使用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();
   ?>

相关内容

最新更新