2013-03-17 28 views
0

嗨,我想比較的日期已被輸入單獨的形式,其中包含1輸入字段鍵入工作歷史名稱和2個輸入字段的開始和結束日期。目前,我可以成功檢查他們是否輸入了比他們下一個工作歷史的開始日期更高的日期。我試圖讓它在用戶當前正在工作時工作,因此沒有添加結束日期,它只會插入作業和開始日期。在下面的代碼中,我已經強調了它的意圖工作,但可悲的是它沒有。任何人都可以解釋這一點?提前致謝。如果一個日期被設置,而另一個沒有

if($_POST['job3'] !=""){ 
    $job3 = preg_replace('#[^a-z 0-9,è û é É ]#i', '', $_POST["job3"]); 
    $start3 = $_POST["start3"]; 
    $end3 = $_POST["end3"]; 
    $unixstart3 = strtotime($start3); 
    $unixend3 = strtotime($end3); 

    if(isset($unixstart3) && !isset($unixend3)){ //This does not work how do i fix this 
    $sqlx = "INSERT INTO employment(employer, start) VALUES('$job3', '$unixstart2')"; 
     $queryx = mysqli_query($db_conx, $sqlx) or die(mysqli_error($db_conx)); 
mysqli_close($db_conx); 
    } 
    else if($unixstart3>$unixend3) 
     { 
     echo "Your date is incorrect (JOB 3)"; 
     } 

     else if($unixend3<$unixstart3) 
     { 
     echo "Your date is incorrect (JOB 3)"; 
      } 
      else if($unixend2>$unixstart3) 
    { 
    echo "Your end date of JOB2 is more than the start date of JOB3"; 
} 

     else 
     { 
     $sql2 = "INSERT INTO employment(employer, start, end) VALUES('$job3',    '$unixstart2', '$unixend3')"; 
     $query2 = mysqli_query($db_conx, $sql2) or die(mysqli_error($db_conx)); 
     mysqli_close($db_conx); 
     } 
    } 
+0

如果vardump($ UNIX end3)是否爲空? – eliot 2013-03-17 19:25:51

+0

如果我沒有弄錯* $ start3 = $ _POST [「start3」]; *如果start3沒有發佈,會給出一個錯誤,但是如果它來自表單,那麼$ start3 =''並且總是被設置。 – grahamj42 2013-03-17 19:29:46

+0

如果沒有日期被添加到鏈接到這個php的表單中,這只是沒有。我的問題是,即使我沒有價值的結束日期3它仍然會檢查是否unixend2> unixend3,從而給出錯誤「您的日期不正確(工作3)」 – hsd 2013-03-17 19:30:47

回答

1

不要在使用if語句isset(),而是試試這個:if($unixstart3 && !$unixend3) 我希望這有助於。

+0

嗨感謝您的建議,似乎聽,但出現以下警告 警告:mysqli_error():無法獲取mysqli(其中插入字符串在裏面,如果) – hsd 2013-03-17 19:50:24

+0

也不是與該unixstart2作爲ive改變了發佈後的問題 – hsd 2013-03-17 19:51:16

+0

@hsd嘗試並刪除mysqli語句中的unixstart2周圍的單引號,因爲它是一個int而不是字符串:) – 2013-03-17 19:59:37

0

而不是檢查的東西的strtotime你不知道存在,設置與否,是否只是確保張貼變量實際設置,通過使用三元運算符:

$job3 = isset($_POST['job3']) ? $_POST['job3'] : false; 
$start3 = isset($_POST['start3']) ? $_POST['start3'] : false; 
$end3 = isset($_POST['end3']) ? $_POST['end3'] : false; 

所以,你可以檢查它們是否可以安全使用:

if($job3 && $start3 && end3) 
{ 
    // Do your thing 
} 
else 
{ 
    // Not allowed to do your thing 
} 

所以你不必做

if(isset($unixstart3) && !isset($unixend3)) 
相關問題