正在验证PHP中动态填充的文本框字段


Validating dynamically populated text box fields in PHP

嗨,我在之前的笔记中也试图找到以下问题的答案,但没有找到。有人能强调一下我哪里错了吗?

我的问题是,当单击Save按钮时,无论文本框是有值还是为空,它都会打印消息Saved!。简单地说,它不会验证文本框中的值。

还要注意,文本框是通过循环填充的。

谢谢。

<?php 
SESSION_start();
if(!isset($_SESSION['userLogin']))
{
header('Location:../2-lo');
}

include ("../connection/index.php"); 
?>
<?php
    function putForm2(){
    $myForm = "<form name='form2' method='post' action=''><table border='1'><tr><td>form 2 is here!<br></td></tr><tr><td><input type='text' name='txt123' id='txt123'></td></tr> <tr><td><input type='submit' name='sendtwo' id='sendtwo' value='TwoClick'></td></tr></table></form>";
    return $myForm;
    }
?>
<!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["bname"]."</td>";
    $brndTable .= "<td class='brT2'>".$reK["bvariant"]."</td>";
    $brndTable .= "<td class='brT3'>".$reK["bsku"]."</td>";
    $brndTable .= "<td class='brT4'><input type='checkbox' name='delz[]' 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['delz']))
                {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>Brands</td>
                    <td>Scheme</td>
                    <td>Allocation</td>
                    <td>Focus Channels</td>
                    <td>Focus Provinces</td>
                    </tr>";
                foreach($_POST['delz'] as $delz)
                            {
                                $delz=mysqli_real_escape_string($db,$delz);
                                $QR = "SELECT bname, bvariant, bsku FROM brands WHERE id='$delz'";
                                $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='allocas[]' id='vtext' class='sc_two' size='80' maxlength='5'></td>
                                   <td><input  style='width:80px;' type='text' name='channelz[]' id='vtext' class='sc_three' size='120' maxlength='30'></td>
                                   <td><input  style='width:80px;' type='text' name='provinz[]' id='vtext' class='sc_four' size='120' maxlength='30'></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($_POST['provinz'] == "")
    {echo $_SESSION['cb']; echo "Province is empty!"; return;} else   { echo $_SESSION['cb']; echo "Saved!"; return;}
    if(!isset($_POST['allocas']) || $_POST['allocas'] == '')
    {echo $_SESSION['cb']; echo "Allocation is empty!"; return;} else   { echo $_SESSION['cb']; echo "Saved!"; return;}
}
            ?>
        </div>
    </body>
</html>
if(!isset($_POST['allocas']) || $_POST['allocas'] == '')

很可能是你的问题线。如果allocas未设置或已设置但为空,则返回true。

也许你的意思是:

if(!(isset($_POST['allocas']) || $_POST['allocas'] == ''))

只有当allocas包含文本时,才会返回true。