我有一个要提交的表单,并且检查是否有文本框包含文本,以便可以更新数据库中的某些内容。
这是表格的代码:
<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的新手,因此我认为这样比较容易。
答案 0 :(得分:1)
else子句属于if非空条件。
首次加载php脚本时,不存在POST数据。这是预期的,因为它是GET请求。这就是为什么初始条件为false并显示错误消息的原因。 POST绝不会在HTTP GET请求上设置。
答案 1 :(得分:0)
您的代码运行正常,输出显示出来,因为在开始时未提交“表单”,而“如果”未提交,则“ else”应该起作用而“ else”正在起作用。如果您不希望显示它,则可以删除else。它将很好用,也请不要过早结束表单标签
代替
<form action="" method="POST"/>
使用此
<form action="" method="POST"> `
答案 2 :(得分:0)
“提交”按钮尚未被单击,但是您的代码正在输出“ Eroare”,因为最初,您没有设置页面加载时的任何发布数据,包括search2
。因此,除非您标记发生了错误,否则您不需要else
的条件部分,而是在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>
答案 3 :(得分:0)
只需从表单标签中删除关闭标签
即,将<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
}