[英]Submit button already clicked
我有一個要提交的表單,並且檢查是否有文本框包含文本,以便可以更新數據庫中的內容。
這是表格的代碼:
<form action="" method="POST"/> CNP Nou: <input type="text" name="cnpN"/><br/> Nume Nou: <input type="text" name="numeN"/><br/> Prenume Nou: <input type="text" name="prenN"/><br/> Data Nasterii Noua: <input type="text" name="dataNN"/> De forma AAAA-ZZ-LL <br/> Sex Nou: <input type="text" name="sexN"/> F sau M <br/> Numar Telefon Nou: <input type="text" name="telN"/><br/> Adresa Noua: <input type="text" name="adrN"/><br/> E-mail Nou: <input type="text" name="mailN"/><br/> <input type="submit" value="Modifica" name="search2" class="submit" /> </form>
然后,我檢查是否單擊了按鈕,以便查看是否有任何文本框已編寫文本以便在數據庫中進行更新:
if (isset($_POST["search2"]))
{
if (!empty($_POST['cnpN']) || !empty($_POST['numeN']) || !empty($_POST['prenN']) || !empty($_POST['dataNN']) || !empty($_POST['sexN']) || !empty($_POST['telN']) || !empty($_POST['adrN']) || !empty($_POST['mailN']))
{
//php code for update
}
}
else
{
echo "<h4><b> Eroare! </b><h4>";
}
問題在於,如果不單擊按鈕,我將看到“ Eroare!” 信息。 如果刪除了else語句,然后單擊按鈕,則即使對表單進行了介紹,數據庫也不會發生任何變化。
我使用else語句只是為了看看是否可能是問題所在。
我正在看代碼一段時間,看不到問題所在。 我知道可以使用更簡單的方法來檢查已完成的文本框,但是我是php的新手,所以我認為這種方法更容易。
else子句屬於if非空條件。
首次加載php腳本時,不存在POST數據。 這是預期的,因為它是GET請求。 這就是為什么初始條件為false並顯示錯誤消息的原因。 POST絕不會在HTTP GET請求上設置。
您的代碼運行正常,輸出顯示出來,因為在開始時未提交“表單”,而未提交“如果”,則“ else”應該起作用而“ else”正在起作用。 如果您不希望顯示它,則可以將else刪除。它會正常工作,也請盡量不要盡早結束表單標簽
代替
<form action="" method="POST"/>
用這個
<form action="" method="POST"> `
尚未單擊“提交”按鈕,但是您的代碼正在輸出“ Eroare”,因為最初,您沒有設置頁面加載時的任何發布數據,包括search2
。 因此,除非標記為發生了錯誤,否則不需要else
條件if(isset($_POST["search2"])){}
,而是在if(isset($_POST["search2"])){}
塊內。 否則,它將始終輸出“ Eroare”。
您首先需要驗證表單數據,然后在任何表單數據不滿足條件的情況下引發錯誤。
關於驗證過程,您可能需要實現一些現有的驗證庫,或者需要擴展條件以檢查特定數據,特定驗證要求。
其中一些將是必需的(不為空),其中一些將需要列表中的約束/有限值(例如“性別”字段),一些將需要數字值驗證(電話),電子郵件字段將需要電子郵件值驗證。
另外,您缺少用於數據庫插入的部分。
沒有高級驗證的簡化代碼將如下所示:
<?php
$post_search2 = filter_input(INPUT_POST,'search2'); //filter_input returns empty if input not set, and it is useful to filter and validate specific values;
if(!empty($post_search2))
{
$form_values = array('cnpN', 'numeN', 'prenN', 'dataNN', 'sexNN', 'telN', 'adrN', 'mailN'); //I have placed it in array to avoid having large code and simplify checks through iteration
$parsed_data = array();
foreach($form_values as $form_value){
$value = filter_input(INPUT_POST, $form_value);
if(!empty($value)){ //update parsed data only if form data is not empty
$parsed_data[$form_value] = $value;
}
}
//so if any of data is filled, do the updates
//this actually does same as !empty($_POST['cnpN']) || !empty($_POST['numeN']) || !empty($_POST['prenN']) && ...
// if you would require all data filled, check if count($parsed_data) === count($form_values) and that actually does same as this actually does same as !empty($_POST['cnpN']) && !empty($_POST['numeN']) && !empty($_POST['prenN']) && ...
//
if(count($parsed_data) > 0){
//php code for update
}else{
echo "<h4><b> Eroare! </b><h4>";
}
}
?>
<form action="" method="POST">
CNP Nou: <input type="text" name="cnpN"/><br/>
Nume Nou: <input type="text" name="numeN"/><br/>
Prenume Nou: <input type="text" name="prenN"/><br/>
Data Nasterii Noua: <input type="text" name="dataNN"/> De forma AAAA-ZZ-LL <br/>
Sex Nou: <input type="text" name="sexN"/> F sau M <br/>
Numar Telefon Nou: <input type="text" name="telN"/><br/>
Adresa Noua: <input type="text" name="adrN"/><br/>
E-mail Nou: <input type="text" name="mailN"/><br/>
<input type="submit" value="Modifica" name="search2" class="submit" />
</form>
只需從表單標簽中刪除關閉標簽
即,將<form action="" method="POST"/>
更改為<form action="" method="POST">
如果仍不能解決您的問題,請使用以下代碼段,
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">
CNP Nou: <input type="text" name="cnpN"/><br/>
Nume Nou: <input type="text" name="numeN"/><br/>
Prenume Nou: <input type="text" name="prenN"/><br/>
Data Nasterii Noua: <input type="text" name="dataNN"/> De forma AAAA-ZZ-LL <br/>
Sex Nou: <input type="text" name="sexN"/> F sau M <br/>
Numar Telefon Nou: <input type="text" name="telN"/><br/>
Adresa Noua: <input type="text" name="adrN"/><br/>
E-mail Nou: <input type="text" name="mailN"/><br/>
<input type="submit" value="Modifica" name="search2" class="submit" />
</form>
PHP代碼
if(isset($_POST["search2"]))
if(!empty($_POST['cnpN']) || !empty($_POST['numeN']) || !empty($_POST['prenN']) || !empty($_POST['dataNN']) || !empty($_POST['sexN']) || !empty($_POST['telN']) || !empty($_POST['adrN']) || !empty($_POST['mailN']))
{
//php code for update
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.