在PHP中验证动态文本框数组值
问题是,当显示第二个表单时,验证并没有按照我需要的方式进行。无论我是否在在PHP中验证动态文本框数组值,php,Php,问题是,当显示第二个表单时,验证并没有按照我需要的方式进行。无论我是否在TextBoxEntry中有值,我都会收到消息已保存。理想情况下,如果文本框不是空的,则只有我应该保存消息,但即使我没有任何内容,也会保存消息 有人能帮忙吗 谢谢 代码如下: <?php SESSION_start(); include ("../connection/index.php"); ?> <!DOCTYPE html> <html> <head><tit
TextBoxEntry
中有值,我都会收到消息已保存
。理想情况下,如果文本框不是空的,则只有我应该保存消息
,但即使我没有任何内容,也会保存消息
有人能帮忙吗
谢谢
代码如下:
<?php
SESSION_start();
include ("../connection/index.php");
?>
<!DOCTYPE html>
<html>
<head><title></title>
</head>
<body>
<div id="One">
<form name="form1" method="post" action="">
<?php
$SQLbrands="SELECT * FROM brands";
$runBrands=mysqli_query($db, $SQLbrands) or die ("SQL Error");
$noRow=mysqli_num_rows($runBrands);
$brndTable = "<table border='1' cellspacing='0' cellpadding='1' id='brndTable1' class='brndTable1'>";
$brndTable .= "<thead><tr><th class='brT11'>Brand Name</th><th class='brT21'>Variant</th><th class='brT31'>SKU</th><th class='brT41'></th></tr></thead>";
$brndTable .= "<tbody>";
while ($reK = mysqli_fetch_array($runBrands))
{
$wec = $reK['id']; $wec2 = $reK['bvariant']; $wec3 = $reK['bsku'];
$brndTable .= "<tbody class='colormine'><tr>";
$brndTable .= "<td class='brT1'>".$reK["name"]."</td>";
$brndTable .= "<td class='brT2'>".$reK["address"]."</td>";
$brndTable .= "<td class='brT3'>".$reK["tphone"]."</td>";
$brndTable .= "<td class='brT4'><input type='checkbox' name='checkedMe[]' value='$wec' /></td>";
$brndTable .= "</tr>";
}
$brndTable .= "</tbody>";
$brndTable .= "</table>";
echo $brndTable;
?>
<input type="submit" name="sendone" id="sendone" value="OneClick">
</form>
</div>
<div id="two">
<?php
if(isset($_POST['sendone']))
{ if(!isset($_POST['checkedMe']))
{echo 'No check boxes are selected!'; return;} else
{
$mohan = "<form method='post' action=''><table border='1' id='myTad' cellspacing='0' cellpadding='2'>
<tr class='tabColor'>
<td>Name</td>
<td>Address</td>
<td>Phone</td>
</tr>";
foreach($_POST['checkedMe'] as $checkedMe)
{
$checkedMe=mysqli_real_escape_string($db,$checkedMe);
$QR = "SELECT bname, bvariant, bsku FROM brands WHERE id='$checkedMe'";
$rr = mysqli_query($db,$QR) or die ("SQL Error");
$roV = mysqli_num_rows($rr);
$rr = $rr->fetch_assoc();
$mohan .= "<tr class='sc_eght' ><td class='sc_five'>".$rr['bname']." ".$rr['bvariant']." ".$rr['bsku'];
$mohan .="</td>
<td><textarea style='width:80px;' name='schema[]' id='vtext' class='sc_one' rows='1' cols='1' maxlength='100'></textarea></td>
<td><input style='width:80px;' type='text' name='TextBoxEntry[]' id='vtext' class='sc_two' size='80' maxlength='5'></td>
</tr>";
}
$mohan .= "<input type='submit' name='sendMe' id='sendMe' value='Save'></table></form>";
$_SESSION['cb'] = $mohan; }
if(isset($_SESSION['cb']))
echo $_SESSION['cb'];
}
if(isset($_POST['sendMe']))
{
if(!(isset($_POST['TextBoxEntry']) || $_POST['TextBoxEntry'] == ''))
{echo $_SESSION['cb']; echo "Empty!"; return;} else { echo $_SESSION['cb']; echo "Saved!"; return;}
}
?>
</div>
</body>
</html>
更改if(!(设置($_POST['TextBoxEntry']))|$_POST['TextBoxEntry']=='')
到
如果(!isset($_POST['TextBoxEntry'])|$_POST['TextBoxEntry']=='')
试试看
if(empty($_POST['TextBoxEntry']))
{
echo $_SESSION['cb'];
echo "Empty!";
} else {
echo $_SESSION['cb'];
echo "Saved!";
}
我刚刚意识到“TextBoxEntry”是一个数组。
希望能有帮助
干杯 如果(!(isset($\u POST['TextBoxEntry']))|$\u POST['TextBoxEntry']=='')等于如果(!isset($\u POST['TextBoxEntry']&&$\u POST['TextBoxEntry'])
但您需要将其更改为
if(!isset($_POST['TextBoxEntry'] || $_POST['TextBoxEntry'] == '')
另一件事是,我认为您不需要在代码中使用return
语句。而不是这行代码
if(!(isset($_POST['TextBoxEntry']) || $_POST['TextBoxEntry'] == ''))
你应该买这个
if( (!(isset($_POST['TextBoxEntry'])) || $_POST['TextBoxEntry'] == ''))
因为当你编写完你的代码后,程序接受了所有条件的否定,所以你需要另一个()来只保留第一部分的否定
试试这个。希望它能起作用!事实上,我之前有你的建议,但我猜问题出在其他地方。@JohnEnglish那句话无论如何都是错的。照drarkayl说的去做。@jackflash谢谢你!会改成那样的。不过问题仍然存在persists@JohnEnglish由于TextBoxEntry是一个数组,因此无法将其与空字符串进行比较。您必须使用empty()
来计算它是否包含任何元素。我没有注意到它是一个数组。是的,正如@jackflash所说的,更改为empty()。然后按照if语句如果$foo='',那么empty($foo)==true。我刚刚实现了“TextBoxEntry”是数组吗?在你的第一行有一个额外的括号吗?是的,它是数组。所以在数组中这不起作用。是吗?@Ricky Dang所以你有一个建议给我?好的,现在发生的事情是,表中有“TextBoxEntry”重复项,当点击“保存”按钮时,消息已经打印出来了。