【问题标题】:Best way to use this IF statement and && Logical expression使用此 IF 语句和 && 逻辑表达式的最佳方式
【发布时间】:2012-01-18 12:15:34
【问题描述】:
require_once('mysqli_connect.php');

$errors = array(); 


if(empty($_POST['senFirstName']) && empty($_POST['senLastName']) 
&& empty($_POST['recFirstName']) && empty($_POST['recLastName']) 
&& empty($_POST['proName']) && empty($_POST['proWeight']) 
&& empty($_POST['traNo']) &&  empty($_POST['shipDate']) 
&& empty($_POST['deliDate'])) {

    $errors[] = 'Please make sure you type in all the information.';

}
else {
    $sfn = mysqli_real_escape_string($dbc, trim($_POST['senFirstName']));
    $sln = mysqli_real_escape_string($dbc, trim($_POST['senLastName']));
    $rfn = mysqli_real_escape_string($dbc, trim($_POST['recFirstName']));
    $rln = mysqli_real_escape_string($dbc, trim($_POST['recLastName']));
    $pn = mysqli_real_escape_string($dbc, trim($_POST['proName']));
    $pw = mysqli_real_escape_string($dbc, trim($_POST['proWeight']));
    $traNo = mysqli_real_escape_string($dbc, trim($_POST['traNo']));
    $shipDate = mysqli_real_escape_string($dbc, trim($_POST['shipDate']));
    $deliDate = mysqli_real_escape_string($dbc, trim($_POST['deliDate']));
    $status = mysqli_real_escape_string($dbc, trim($_POST['status']));
    $shiptype = mysqli_real_escape_string($dbc, trim($_POST['shiptype']));
    }   


if(empty($errors)) { // If everything's OK.

$query = "SELECT traNo, CONCAT(recFirstName, ' ', recLastName) AS recieverName, proName, CONCAT(senFirstName, ' ', senLastName) AS senderName, status, shiptype FROM tracking, rel_tracking_reciever, reciever, product, sender
    WHERE traNo='$traNo' AND tracking.traId = rel_tracking_reciever.traId AND reciever.recId = rel_tracking_reciever.recId AND tracking.proId = product.proId AND tracking.senId = sender.senId";

    $result = @mysqli_query($dbc, $query); 
    $num = mysqli_num_rows($result);

    if ($num) { // tracking number was found

    while ($row = mysqli_fetch_array($result,MYSQL_ASSOC)) {


        echo '<div id="error">';
        echo "<p>This tracking number <b>{$row['traNo']}</b> has already been assigned to <b>{$row['senderName']}</b></p>\n";
        echo '</div>';
    }
    mysqli_free_result ($result); // Free up the resources.
    } 

1) 我想使用 && 逻辑表达式验证具有多个 IF 条件的输入框,但它会将空表单提交到数据库中。 注意:我特意省略了发货和状态输入框,因为选项默认不能为空。

2) 有没有一种方法可以自动生成跟踪号,而无需手动输入。我已经尝试过 GUID,但没有得到它。

谢谢..

【问题讨论】:

  • 我想你的意思可能是 ||而不是 &&... 您正在测试查看 every $_POST 值是否为空,而不是 any $_POST 值是否为空
  • 是的,我希望每个 $_POST 检查,我认为 && 应该这样做。

标签: php mysql if-statement guid


【解决方案1】:

您必须设置要验证的 id - 没有抱怨。

你可以这样做:

$ids = array('senFirstName', 'senLastName', 'recFirstName', 'recLastName' /* ... and more */);
$valid = true;

foreach ( $ids as $id ) {
  if ( empty($_POST[$id]) ) {
    $valid = false;
  }
}

if ( $valid === true ) {
  // everything's ok
} else {
  $errors[] = 'Please make sure you type in all the information.';
}

【讨论】:

  • 谢谢。我会试试看。
【解决方案2】:

如果要测试,则需要||,而不是&&,如果为空。

否则你会证明,如果它们都是空的。

(抱歉英语不好)

if(empty($_POST['senFirstName']) || empty($_POST['senLastName'])  ...

【讨论】:

    猜你喜欢
    • 2021-10-16
    • 2014-06-21
    • 2014-06-26
    • 1970-01-01
    • 1970-01-01
    • 2014-11-22
    • 1970-01-01
    • 2018-03-26
    • 1970-01-01
    相关资源
    最近更新 更多