我對此代碼邏輯中的空內容感到困惑。我有可變數量的表行(其他行通過 ajax 動態插入),每個接受四個輸入。我想要的邏輯是針對特定行 - 其輸入不完整 - 無法更新資料庫:
if ((isset($_POST['_branch']) && !empty($_POST['_branch']))
&& (isset($_POST['_day']) && !empty($_POST['_day']))
&& (isset($_POST['_starttimepicker']) && !empty($_POST['_starttimepicker']))
&& (isset($_POST['_endtimepicker']) && !empty($_POST['_endtimepicker']))) {
$b_id = $_POST['_branch'];
$w_date = $_POST['_day'];
$s_time = $_POST['_starttimepicker'];
$e_time = $_POST['_endtimepicker'];
// ... rest of code comes here
}
處理四個輸入的代碼片段:
<td>
<input class="form-control" type="text" id="_starttimepicker" name="_starttimepicker[]" placeholder="Enter Time" />
</td>
<td>
<input class="form-control" type="text" id="_endtimepicker" name="_endtimepicker[]" placeholder="Enter Time" />
</td>
當我的開始時間和結束時間為“空”(沒有與它們互動;占位符保持為“輸入時間”)時,上面的 if 條件邏輯仍在處理并且資料庫最終被更新(使用錯誤的值)。即使我嘗試使用默認值引數(我有 value = "" 和 "red"):
<td>
<input class="form-control" type="text" id="_starttimepicker" name="_starttimepicker[]" value="" placeholder="Enter Time" />
</td>
<td>
<input class="form-control" type="text" id="_endtimepicker" name="_endtimepicker[]" value="red" placeholder="Enter Time" />
</td>
if 邏輯仍在處理(此外,我擁有 value="red" 的相關資料庫值仍為 ""。我認為它會采用默認值 "red",所以也許我誤解了這一點)。
我有什么誤解?有什么建議嗎?
uj5u.com熱心網友回復:
我看到您使用輸入陣列。要檢查作為輸入陣列的空表單欄位,您需要的不僅僅是empty().
示例 HTML 表單:
<form method="post">
<input class="form-control" type="text" id="_starttimepicker" name="_starttimepicker[]" placeholder="Enter Time" />
<input class="form-control" type="text" id="_endtimepicker" name="_endtimepicker[]" placeholder="Enter Time" />
<button type="submit">Submit</button>
</form>
這是檢查它以及如何使用的PHP函式。
$_starttimepicker = ($_POST['_starttimepicker'] ?? []);
// in PHP older than 7.0 use (isset($_POST['_starttimepicker']) ? $_POST['_starttimepicker'] : []) instead.
$_endtimepicker = ($_POST['_endtimepicker'] ?? []);
/**
* Check if ANY fields are empty.
*
* @param array $fields The input form field, one by one.
* @return bool Return `true` if one of a form field is empty. Return `false` for otherwise.
*/
function isEmptyFields(...$fields)
{
$foundEmpty = false;
foreach ($fields as $field) {
if (is_array($field) && !empty($field)) {
foreach ($field as $index => $value) {
if (empty($value)) {
$foundEmpty = true;
break;
}
}
} else {
if (empty($field)) {
$foundEmpty = true;
break;
}
}
}
return $foundEmpty;
}
if (!isEmptyFields($_starttimepicker, $_endtimepicker)) {
// if all fields are NOT empty.
echo 'save your data.';
}
測驗通過填寫所有欄位提交表單,結果是條件(保存您的資料。)但如果只空一個,它將不會進入if條件。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/510081.html
標籤:php伊塞特是空的
