![](/img/trans.png)
[英]table updates empty spaces when user do not enter anything to the textbox
[英]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.