2012-01-18 38 views
0
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,但沒有得到它。

謝謝..

+3

我想你可能意味着||而不是&& ...您正在測試以查看__every__ $ _POST值是否爲空,而不是__any__ $ _POST值爲空 – 2012-01-18 12:20:30

+0

是的,我希望每個$ _POST都被檢查過,並且我認爲&&應該做到這一點。 – user1156124 2012-01-18 13:33:35

回答

2

你必須設置要驗證IDS - 有沒有抱怨。如果你想測試,如果是空的

$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.'; 
} 
+0

謝謝。我會試一試。 – user1156124 2012-01-18 13:31:05

1

你需要||,不& &:

你可以做到這一點。

否則,如果它們都是空的,你會證明。

(對不起,我英文不好)

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

感謝它現在的工作。 – user1156124 2012-01-19 15:06:48