我做的提交表單,多數民衆贊成的PHP檢查,我想向用戶展示他們忘記填寫所有字段的PHP檢查所有空的輸入列表。我也在使用jQuery,但用戶可以禁用它,而且您確實需要服務器端檢查表單。如何顯示對形式
的事情是,如果有6個必填字段,他們提交的形式與他們的2個空,代碼只顯示第一位的,之後便再次提交,它會顯示他們的第二個。你會建議做什麼?
下面是代碼:
if (isset($_POST['submit'])){
$message = "";
if (trim($_POST['ign'])){
if (trim($_POST['god'])){
if (trim($_POST['replay_id'])){
if (trim($_POST['map_type'])){
if (trim($_POST['time_min']) AND trim($_POST['time_sec'])){
if (trim($_POST['description'])){
// Submit the form
}else{
$message .= "<li>Description is empty</li>";
}
}else{
$message .= "<li>Time not specified</li>";
}
}else{
$message .= "<li>Match type not specified.</li>";
}
}else{
$message .= "<li>Replay ID not specified.</li>";
}
}else{
$message .= "<li>God was not specified.</li>";
}
}else{
$message .= "<li>In game name was not specified!</li>";
}
if (!empty($message)){
$message = "<div style='text-align:left; display: inline-block;'><ul>".$message."</ul></div>";
}else{
$message = "Submit succesfull";
}
echo "<div id='close-message'><div class='admin-message'>$message</div></div>";
}
這樣做的,我能想到的,如果這個代碼的唯一的其他方式:
if (isset($_POST['submit'])){
$message = "";
$pass = TRUE;
if (!trim($_POST['ign'])){ $message .= "<li>In game name was not specified!</li>"; $pass = FALSE; }
if (!trim($_POST['god'])){ $message .= "<li>God was not specified.</li>"; $pass = FALSE; }
if (!trim($_POST['replay_id'])){ $message .= "<li>Replay ID not specified.</li>"; $pass = FALSE; }
if (!trim($_POST['map_type'])){ $message .= "<li>Match type not specified.</li>"; $pass = FALSE; }
if (!trim($_POST['description'])){ $message .= "<li>Description is empty</li>"; $pass = FALSE; }
if (!trim($_POST['time_min']) AND trim($_POST['time_sec'])){ $message .= "<li>Time not specified</li>"; $pass = FALSE; }
if ($pass){
$message = "Submit succesfull";
// Submit the form
}else{
$message = "<div style='text-align:left; display: inline-block;'><ul>".$message."</ul></div>";
}
echo "<div id='close-message'><div class='admin-message'>$message</div></div>";
}
是否有其他辦法做到這一點?同樣,純粹的PHP,jQuery在那裏,但它可以被禁用,HTML5也不適用於所有瀏覽器。
謝謝。
等什麼?此代碼如何將錯誤消息添加到錯誤列表中?或者繼續實際上意味着,它會忽略其餘的代碼,並立即開始在數組中的新項目?此外,Isnt循環比在我的第二個代碼中使用這些ifs更具資源要求? Thanyway,謝謝你的迴應,我沒有想到陣列。 – MiChAeLoKGB 2015-02-23 20:58:19
是的,這是'繼續'如何工作。至於你的其他問題,我會說,在處理這種代碼時,循環和重複if語句之間的納秒性能差異是不成問題的。可讀性,可維護性和清晰的結構更重要。 – mhall 2015-02-23 21:17:06
啊,我其實從來沒有使用過繼續,所以從來沒有打擾到它究竟發生了什麼:D另外,這是真的,所以病態可能使用數組:)謝謝。 – MiChAeLoKGB 2015-02-23 21:29:55