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

如何解决用户未在文本框中输入任何内容时,表将更新空白

| 这种情况是我程序的目的是更新员工详细信息。用户可以选择要更新的信息(姓名,职位,部门和标签(表明他/她是否仍在公司工作))中的哪一个。他或她可能会或可能不会按照自己的意愿填写所有详细信息。换句话说,如果他/她不打算更改某些信息,则可以将其留空。 我的问题是更新。现在正在更新。但是,例如,如果用户仅想更改该员工的职位信息,则他/她将部门名称保留为空白。(标记默认情况下设置为yes,因此总会有一个值)。当用户单击提交按钮时。它更新表,但是将空文本框更新为空格。在示例中。在数据库中,名称和部门将包含\“ spaces \”。 我的目标是,如果用户将文本框留空,则应保留原始值。它只会更改输入的值。 这是我在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>
    

解决方法

        
$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,strlen($queryString) - 1 ).\" WHERE `emp_id` = \'\".$_POST[\'eid\'].\"\'\"; 
mysql_query($queryString);
    ,        在这种情况下,您的脚本如何知道空数据是否是故意的(我决定删除该字段的内容)。不是(您正在尝试实现)?最简单的选择是跳过所有留空的字段,但是您可能希望设计出更好的应用程序。最好已经在页面的表单字段中设置了所有这些值。 除了您的问题外,还请看一下确保脚本安全的内容。仅使用$ _POST和$ _GET值willy nilly不是一个好主意。为此有很多好的资源。     ,        只是做一些检查。例如使用此:
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\';
}
    

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams[&#39;font.sans-serif&#39;] = [&#39;SimHei&#39;] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -&gt; systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping(&quot;/hires&quot;) public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate&lt;String
使用vite构建项目报错 C:\Users\ychen\work&gt;npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-
参考1 参考2 解决方案 # 点击安装源 协议选择 http:// 路径填写 mirrors.aliyun.com/centos/8.3.2011/BaseOS/x86_64/os URL类型 软件库URL 其他路径 # 版本 7 mirrors.aliyun.com/centos/7/os/x86
报错1 [root@slave1 data_mocker]# kafka-console-consumer.sh --bootstrap-server slave1:9092 --topic topic_db [2023-12-19 18:31:12,770] WARN [Consumer clie
错误1 # 重写数据 hive (edu)&gt; insert overwrite table dwd_trade_cart_add_inc &gt; select data.id, &gt; data.user_id, &gt; data.course_id, &gt; date_format(
错误1 hive (edu)&gt; insert into huanhuan values(1,&#39;haoge&#39;); Query ID = root_20240110071417_fe1517ad-3607-41f4-bdcf-d00b98ac443e Total jobs = 1
报错1:执行到如下就不执行了,没有显示Successfully registered new MBean. [root@slave1 bin]# /usr/local/software/flume-1.9.0/bin/flume-ng agent -n a1 -c /usr/local/softwa
虚拟及没有启动任何服务器查看jps会显示jps,如果没有显示任何东西 [root@slave2 ~]# jps 9647 Jps 解决方案 # 进入/tmp查看 [root@slave1 dfs]# cd /tmp [root@slave1 tmp]# ll 总用量 48 drwxr-xr-x. 2
报错1 hive&gt; show databases; OK Failed with exception java.io.IOException:java.lang.RuntimeException: Error in configuring object Time taken: 0.474 se
报错1 [root@localhost ~]# vim -bash: vim: 未找到命令 安装vim yum -y install vim* # 查看是否安装成功 [root@hadoop01 hadoop]# rpm -qa |grep vim vim-X11-7.4.629-8.el7_9.x
修改hadoop配置 vi /usr/local/software/hadoop-2.9.2/etc/hadoop/yarn-site.xml # 添加如下 &lt;configuration&gt; &lt;property&gt; &lt;name&gt;yarn.nodemanager.res