简体   繁体   English

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

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

i am doing a project where one may update the name, position, department and tag of the employee.我正在做一个项目,可以更新员工的姓名、position、部门和标签。

But as i do my project, it wont update, i know there is something wrong with my code.但是当我做我的项目时,它不会更新,我知道我的代码有问题。 would you guys mind checking it.你们介意检查一下吗?

my php page has an index.php which is the main menu, if you click the employee name in the list, a pop up window will appear.我的 php 页面有一个索引。php 是主菜单,如果你点击列表中的员工姓名,会弹出 window。 that pop up is for updating.该弹出窗口用于更新。

my php code (it now updating) but errors found:我的 php 代码(现在正在更新)但发现错误:

<?php
$con=mysql_connect('localhost','root','pss') or die(mysql_error());
mysql_select_db('intra',$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 
        }       
    ?>

*NOTE: this is now updating, but if a user leaves one of the textboxes empty, it updates the table with empty spaces as well and that is my problem now. *注意:现在正在更新,但如果用户将其中一个文本框留空,它也会用空格更新表格,这就是我现在的问题。 how do i avoid that?我该如何避免呢? i mean if a user leaves one textbox empty,the data with empty values must still contain its old value,but how to do that with this code?我的意思是,如果用户将一个文本框留空,则具有空值的数据仍必须包含其旧值,但是如何使用此代码执行此操作? thanks for those who will help感谢那些会帮助的人

MisaChan

You use $_POST for 'name/pos/dep/tag' and $_GET for 'emp' so you're probably not getting the values.您将 $_POST 用于“name/pos/dep/tag”,将 $_GET 用于“emp”,因此您可能无法获得这些值。 Change the GETs to POST - that should do it.将 GET 更改为 POST - 应该这样做。 Since you're updating, I'd recommend using POST over GET.由于您正在更新,我建议您使用 POST 而不是 GET。 GET is more appropriate for searching. GET 更适合搜索。

Also, you can put all your update queries into one update query.此外,您可以将所有更新查询放入一个更新查询中。 Like so.像这样。

$name = $_POST['name'];
$pos = $_POST['pos'];
$dep = $_POST['dep'];
$tag = $_POST['tag'];
$emp = $_POST['emp'];

$qry_start = "UPDATE gpl_employees_list SET ";
$where = " WHERE emp_id = $emp";
$fields = "";
$updates = "";

if($name){
  $updates .= " `emp_name` = $name,";
}
if($pos){
  $updates .= " `emp_pos` = $pos,";
}
if($dep){
  $updates .= " `emp_dep` = $dep,";
}
if($tag){
  $updates .= " `emp_tag` = $tag,";
}
$updates = substr($updates, 0, -1); //To get rid of the trailing comma.
$qry = $qry_start . $updates . $where;

this is what i used to keep it working:) i hope this could be a source for others as well:)这就是我用来保持它工作的原因:)我希望这也可以成为其他人的来源:)

$col['emp_nme'] = (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){
if($val){
    $queryString .="`".$key."`='".$val."',";
}
                            }
$queryString = substr($queryString ,0 ,strlen($queryString) - 1 )." WHERE emp_id = '".$_POST['eid']."'"; 
mysql_query($queryString);

After making changes to an SQL database, remember to commit those changes, otherwise they'll be ignored.对 SQL 数据库进行更改后,请记住提交这些更改,否则它们将被忽略。

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

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