Лучший способ использовать этот оператор IF и && Logical expression - PullRequest
0 голосов
/ 18 января 2012
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, используя && Logical expression, но вместо этого оно отправляет пустые формы в базу данных.Примечание. Я намеренно пропустил поле ввода «Отгрузка и статус», поскольку параметры по умолчанию не могут быть пустыми.

2) Есть ли способ, позволяющий автоматически генерировать номер отслеживания, не вводя его вручную.Я пробовал GUID, но не получаю его.

Спасибо ..

Ответы [ 2 ]

2 голосов
/ 18 января 2012

Вы должны установить идентификаторы, которые вы хотите проверить - нет жалоб.

Вы можете сделать это с помощью:

$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.';
}
1 голос
/ 18 января 2012

Вам нужно ||, а не &&, если вы хотите проверить, если оно пустое.

В противном случае вы бы доказали, если бы все они были пустыми.

(извините за плохой английский)

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