繁体   English   中英

当用户未在文本框中输入任何内容时,表格会更新空格

[英]table updates empty spaces when user do not enter anything to the textbox

这种情况是我的程序的目的是更新员工的详细信息。 用户可以选择他/她想要更新的信息(姓名,position,部门和标签(表明他/她是否仍然受雇于公司)) 他或她可能会也可能不会按照他/她的意愿填写所有详细信息。 换句话说,如果他/她不打算更改某些信息,他/她可以将其留空。

我的问题是更新。 它现在正在更新。 但是例如,如果用户只想更改该员工的 position 信息,他/她会将姓名,部门留空。 (标签默认设置为yes,所以总是有一个值) 当用户点击提交按钮时。 它会更新表格,会将空文本框更新为空格。 意思是,在示例中。 在数据库中,姓名和部门将包含“空格”。

我的目标是,如果用户将文本框留空,则应保留原始值。 它只会改变输入的值。


这是我在 empinfo.php 中使用的代码(注意:这是一个弹出窗口,emp,来自索引,但没有问题:D)

<body>
<center>
<table class="main" border="0" cellpadding="0" cellspacing="0"> 
<form action="empinfo.php" method="POST">
<input type='hidden' name='submitted' id='submitted' value='1'/>
<input type='hidden' name='eid' id='eid' value= '<?php echo $_GET['emp']?>' />  

<fieldset>
            <div class='container'>
                <label for='ename' >Employee name:</label><br/>
                <input type='text' name='ename' id='ename' maxlength="50" /><br/><br/>
             </div>

             <div class='container'>
                <label for='pos' >Position:</label><br/>
                <input type='text' name='pos' id='pos' maxlength="50" /><br/><br/>
             </div>

            <div class='container'>
                <label for='dep' >Department/Division:</label><br/>
                <input type='text' name='dep' id='dep' maxlength="100" /><br/><br/>
            </div>

            <div class='container'>
                <label for='tag' >Employee Tag:</label><br/>
                <select name="tag" id="tag">
                    <option value="Y">Yes</option>
                    <option value="N">No</option>
                </select> <br/><br/>
            </div>

            <div class='container'>
                <input type='submit' name='Submit' value='Submit' />
            </div>
</fieldset>

</form>
</div>
<?php   
$con=mysql_connect('localhost','root','mariel') or die(mysql_error());
mysql_select_db('intranet',$con);
    if(isset($_POST['submitted']))
    {

    $sql = "SELECT * FROM gpl_employees_list where emp_id='".$_POST['eid']."'";
    $result = mysql_query($sql) or die (mysql_error());
    if(!$result || mysql_num_rows($result) <= 0)
                            {                       
                                return false;
                            }

    $qry = "UPDATE gpl_employees_list SET emp_nme = '".$_POST['ename']."', emp_pos = '".$_POST['pos']."', emp_dep = '".$_POST['dep']."', emp_tag = '".$_POST['tag']."' WHERE emp_id = '".$_POST['eid']."' ";  

    mysql_query($qry) or die (mysql_error()); 
?><script>window.close();</script><?php 
        }       
    ?>
</table>
<?php mysql_close($con); ?>
</center>
</body>

鉴于这种情况,您的脚本如何知道空数据是否是故意的(我已决定删除该字段的内容)与否(正如您试图实现的那样)? 最简单的选择是跳过所有返回空白的字段,但是您可能希望将您的应用程序设计得更好一点。 最好在页面的表单字段中设置所有这些值。

除了你的问题,看看保护你的脚本有点。 随意使用 $_POST 和 $_GET 值并不是一个好主意。 那里有很多很好的资源。

做一些检查。 例如使用这个:

MoreSQL='';
if($_POST['ename']!='') {
    $MoreSQL.='emp_nme = "'.$_POST['ename'].'"';
}

if($_POST['emp_pos']!='') {
    if($MoreSQL!='') $MoreSQL.=', '; // add comma if $MoreSQL is not empty any more
    $MoreSQL.='emp_pos = "'.$_POST['emp_pos'].'"';
}

if($_POST['emp_dep']!='') {
    if($MoreSQL!='') $MoreSQL.=', '; // add comma if $MoreSQL is not empty any more
    $MoreSQL.='emp_dep= "'.$_POST['emp_dep'].'"';
}

if($_POST['tag']!='') {
    if($MoreSQL!='') $MoreSQL.=', '; // add comma if $MoreSQL is not empty any more
    $MoreSQL.='emp_tag= "'.$_POST['emp_tag'].'"';
}

if($_POST['eid']!='') {
    if($MoreSQL!='') $MoreSQL.=', '; // add comma if $MoreSQL is not empty any more
    $MoreSQL.='emp_id = "'.$_POST['eid'].'"';
}

if($MoreSQL!='') {
    $qry='UPDATE gpl_employees_list SET '.$MoreSQL.' WHERE emp_id = '.($_POST['eid']+0).'';
    mysql_query($qry) or die (mysql_error()); 
}else{
    echo 'nothing to update';
}
$col['emp_name'] = (trim($_POST['ename']))?trim($_POST['ename']):false;
$col['emp_pos']  = (trim($_POST['pos']))?trim($_POST['pos']):false;
$col['emp_dep']  = (trim($_POST['dep']))?trim($_POST['dep']):false;
$col['emp_tag']  = (trim($_POST['tag']))?trim($_POST['tag']):false;
// add a val in $col[] with key=column name for each corresponding $_POST val

$queryString ="UPDATE `gpl_employees_list` SET ";
foreach($col as $key => $val){
  $queryString .= ($val)?"`".$key."`='".$val."',":"";
}
$queryString = substr($queryString ,0 ,strlen($queryString) - 1 )." WHERE `emp_id` = '".$_POST['eid']."'"; 
mysql_query($queryString);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM