查询分为关键字查询和准确查询

1.没有提交的时候--查所有

2.两个输入都为空--查所有
3.第一个条件有,第二个为空--根据第一个条件查
4.第一个没有,第二个有--根据第二个条件查
5.两个都有--根据两个条件查

where name like '%宋%' and 1=1
where 1=1 and nation='n001'

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>
<!-- 修改思路:提交到当前页面,根据传过来的数据查:-->
<body>
<br />
<form action="1028afternoonmain.php" method="post">
<div>姓名:
<input type="text" name="xm" />
<input type="submit" value="查询" />
</div>
</form>
<br />
<form action="1101morningpiliangshanchu.php" method="post">
<table width="100%" border="1" cellpadding="0" cellspacing="0">
<tr>
<td><input type="checkbox" onclick="quanxuan(this)" />代号</td>
<td>姓名</td>
<td>性别</td>
<td>民族</td>
<td>生日</td>
<td>操作</td> </tr> <?php
//查询规律:在用户不输入的情况下,查询的是全部数据
//先判断有没有提交值 /*简化前
$xm="";
if(!empty($_POST["xm"]))//empty();判断是否为空.加一个条件判断,防止报错
{
$xm = $_POST["xm"];
} //简化前
$tj = "";
if($xm == "")//如果没有值,查所有的,不加条件,或者给一个恒成立的条件。如果有值,按条件查找
{
$tj = " 1=1 ";//不要忘记两边加空格(方便拼接sql语句)
}
else
{
$tj = " name like '%{$xm}%' ";//不要忘记两边加空格,模糊查询用like
}
//简化后
$tj = " 1=1 ";//默认恒成立
if($xm != "")
{
$tj = " name like '%{$xm}%' ";
}
*/
//简化后 写法一:
$xxm = "";
$tj = " 1=1 ";
if(!empty($_POST["xm"]) && $_POST["xm"] !="")//判断xm是否为空
{
$xxm = $_POST["xm"];
$tj = " name like '%{$_POST['xm']}%' "; //变量里面可以加单引号
}
/*简化后 写法二:
$tj = " 1=1 ";
if(!empty($_POST["xm"]))//判断xm是否为空
{
if($_POST["xm"] !="")//判断xm是否为空字符串
{
$tj = " name like '%{$xm}%' ";
}
}*/ //造连接对象
$db = new MySQLi("localhost","root","数据库密码","1016");
//写sql语句
$sql = "select * from info where ".$tj;//(拼接sql语句,where后面的空格是为了防止拼接语句错误.单独拿出来是因为如果写成一句的话,用户如果什么都不输入,查询的值则为空,这与查询规律冲突即用户什么都不输入的情况下,查询全部数据)
//执行sql语句
$result = $db->query($sql);
//读数据,返回一个二维数组
$attr = $result->fetch_all();
//foreach遍历数组,
foreach($attr as $v)//$attr as $v取attr里面的每一个小数组
{
echo"<tr>"; $sex = $v[2]?"男":"女";//数组v $v 取索引二,用三元运算符判断,前面是一个布尔型数据,true显示男,false显示女 0 false,1 true //根据民族代号查询民族名称 也可以使用join查询,但是一般不推荐使用,因为查询的数据量太大了 /*$sname = "select name from nation where code = '{$v[3]}'";
$rname = $db->query($sname);
$aname = $rname->fetch_row();*/ $name = nationname($v[3]);
//使关键字高亮 <mark></mark>
/*简化后的在上面
$xxm = "";//先把xxm变量定义在外层
if(!empty($_POST["xm"]))//然后判断是否有提交值
{
$xxm = $_POST["xm"];//有传值的话就取xm
}
*/
//替换关键字
$newname = str_replace($xxm,"<mark>{$xxm}</mark>",$v[1]);//查找替换,第一个参数:关键字,根据什么去找;第二个关键字,替换后的内容;第三个参数:要替换哪个字符串,即要替换的区域
//复选的话用数组提交 sc[] ,到处理页面,遍历数组就可以了
echo"<td><input type='checkbox' value='{$v[0]}' name='sc[]' class='qx' />{$v[0]}</td><td>{$newname}</td><td>{$sex}</td><td>{$name}</td><td>{$v[4]}</td><td><a href='1028afternoonshanchu.php?c={$v[0]}'>删除</a> <a href='1030morningxiugai.php?c={$v[0]}'>修改</a></td>"; //跳转到另外一个页面并且带一个值过去的方式是get方式,因此我们要模拟一个get传值方式 ?c={$v[0]} //要想加入删除的功能要先让它可以点击,一种方法是按钮,另一种方法是<a>标签。样式可以随便做,比如在外面加上一个漂亮的DIV,在里面加上<a>标签。 /*输出的两种方法
foreach($v as $v1)
{
echo "<td>{$v1}</td>";
}*/ echo"</tr>";
} //给一个民族代号,返回民族名称
function NationName($code)
{
//造连接对象
$db = new MySQLi("localhost","root","数据库密码","1016");
//写SQL语句
$sql = "select name from nation where code='{$code}'";
//执行SQL语句
$result = $db->query($sql); $attr = $result->fetch_row(); return $attr[0];
} ?> </table>
<a href="1028afternoonadd.php"><input type="button" value="添加数据" /></a>
<input type="submit" value="批量删除" onclick="return confirm('确定删除吗?')" />
</form>
<!--批量删除思路:把复选框和批量删除按钮看作是一个表单--> <script> function quanxuan(a) {
//找到下面所有的复选框
var ck = document.getElementsByClassName("qx");
//不是document点出来的就没有提示,如果怕出错可以在这里随便定义一个变量然后点出来然后复制过来
//遍历所有复选框,设置选中状态
for(var i=0;i<ck.length;i++)
{
if(a.checked)
{
/*setAttribute("checked","checked")
设置属性(“名字”;“值”)*/
ck[i].setAttribute("checked","checked");
}
else
{
/*removeAttribute("checked","checked")
移除属性(“名字”;“值”)*/
ck[i].removeAttribute("checked","");
}
} } </script> </body>
</html>

1028afternoonmain.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head> <body>
<!--嵌入PHP代码查询数据库-->
<?php
$code = $_GET["c"];
//造连接对象
$db = new MySQLi("localhost","root","789","1016");
//写sql语句
$sinfo = "select * from info where code='{$code}'";
//$db调用query方法,执行sql语句,返回一个结果集对象
$rinfo = $db->query($sinfo);
//从结果集里面读数据,返回一个数组
$ainfo = $rinfo->fetch_row();
?> <form action="1028afternoonxiugaichuli.php" method="post">
<!--用post提交方式时name=""是提交的值
为了对用户友好,即用户输入方便,将性别和民族从文本框改成下拉菜单,方便选择.代号不能随便让用户修改(避免重复),因此把它做成只读 readonly="readonly" 但是还需要提交,所以就不能使用 disabled="disabled" 或者如果主键值是自增长列或者是对用户没有意义的,则可以隐藏,即先把代号删掉,然后把type从"text"改成"hidden" 隐藏域-->
<div><!--代号:--><input readonly="readonly" type="hidden" name="code" value="<?php echo $ainfo[0]; ?>" /></div>
<div>姓名:<input type="text" name="name" value="<?php echo $ainfo[1]; ?>" /></div> <!--做成修改的思路:选中用的是属性checked,如果性别是true的话就让男的加一个属性(即如果sex为true,就输出一个checked="checked"),如果性别是false的话就让女的加一个属性-->
<div>性别:
<input type="radio" name="sex" value="1" <?php echo $ainfo[2]?"checked='checked'":"" ?> />男
&nbsp;
<input type="radio" name="sex" value="0" <?php echo $ainfo[2]?"":"checked='checked'" ?> />女
</div> <div>民族:
<select name="nation" style="width:173px; position:relative; right:8px">
<?php
//造连接对象
$db = new MySQLi("localhost","root","789","1016");
$sql = "select * from nation";
$result = $db->query($sql);
$attr = $result->fetch_all(); /*单选菜单选中checked="checked" 多选菜单选中selected="selected" 思路:因为是用foreach循环,因此可以在输出前判断用户的代号($ainfo[3])是不是输出的代号($v[0])*/ foreach($attr as $v)
{
if($v[0]==$ainfo[3])
{
echo "<option selected='selected' value='{$v[0]}'>{$v[1]}</option>";
}
else
{
echo "<option value='{$v[0]}'>{$v[1]}</option>"; }//<option>中间是显示用的,value值才是提交的数据
}
?> </select>
<!--下拉列表<select><option></option></select>-->
</div>
<div>生日:<input type="text" name="birthday" value="<?php echo $ainfo[4]; ?>" /></div>
<div><input type="submit" value="修改" /></div>
<!--提交按钮submit的value是显示的内容--> </form> </body>
</html>

1030morningxiugai.php

<?php
//这种页面不能直接跳转,要通过上一个页面跳转
//把提交的5个值取出
$code = $_POST["code"];
$name = $_POST["name"];
$sex = $_POST["sex"];
$nation = $_POST["nation"];
$birthday = $_POST["birthday"];
//造连接对象
$db = new MySQLi("localhost","root","数据库密码","1016");
//写sql语句 set name='{$name}' 把数据库的name修改成用户输入的name
$sql = "update info set name='{$name}',sex={$sex},nation='{$nation}',birthday='{$birthday}' where code='{$code}'";
echo $sql;
$db->query($sql); header("location:1028afternoonmain.php"); ?>

1028afternoonxiugaichuli.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>
<!-- 思路提交到当前页面,根据传过来的数据查;几个条件几个if循环-->
<body>
<br />
<form action="1030afternoonduotiaojian.php" method="post">
<div>姓名:
<input type="text" name="xm" />
民族代号:
<input type="text" name="mz" />
<input type="submit" value="查询" />
</div>
</form>
<br /> <table width="100%" border="1" cellpadding="0" cellspacing="0">
<tr>
<td>代号</td>
<td>姓名</td>
<td>性别</td>
<td>民族</td>
<td>生日</td>
<td>操作</td> </tr> <?php
//查询规律:在用户不输入的情况下,查询的是全部数据
//先判断有没有提交值 /*简化前
$xm="";
if(!empty($_POST["xm"]))//empty();判断是否为空.加一个条件判断,防止报错
{
$xm = $_POST["xm"];
} //简化前
$tj = "";
if($xm == "")//如果没有值,查所有的,不加条件,或者给一个恒成立的条件。如果有值,按条件查找
{
$tj = " 1=1 ";//不要忘记两边加空格(方便拼接sql语句)
}
else
{
$tj = " name like '%{$xm}%' ";//不要忘记两边加空格,模糊查询用like
}
//简化后
$tj = " 1=1 ";//默认恒成立
if($xm != "")
{
$tj = " name like '%{$xm}%' ";
}
*/
//简化后 写法一:
$xxm = "";
$tj = " 1=1 ";
$tj2 = " 1=1 ";
if(!empty($_POST["xm"]) && $_POST["xm"]!="")//判断xm是否为空
{
$xxm = $_POST["xm"];
$tj = " name like '%{$_POST['xm']}%' "; //变量里面可以加单引号
}
/*简化后 写法二:
$tj = " 1=1 ";
if(!empty($_POST["xm"]))//判断xm是否为空
{
if($_POST["xm"] !="")//判断xm是否为空字符串
{
$tj = " name like '%{$xm}%' ";
}
}*/
//第二个条件
if(!empty($_POST["mz"]) && $_POST["mz"]!="")
{
$mz = $_POST["mz"];
$tj2 = " nation='{$mz}' ";
} //造连接对象
$db = new MySQLi("localhost","root","789","1016");
//写sql语句
$sql = "select * from info where ".$tj." and ".$tj2;
//一个小的并一个大的,得出的以小的为主
//(拼接sql语句,where后面的空格是为了防止拼接语句错误.单独拿出来是因为如果写成一句的话,用户如果什么都不输入,查询的值则为空,这与查询规律冲突即用户什么都不输入的情况下,查询全部数据)
//执行sql语句
$result = $db->query($sql);
//读数据,返回一个二维数组
$attr = $result->fetch_all();
//foreach遍历数组,
foreach($attr as $v)//$attr as $v取attr里面的每一个小数组
{
echo"<tr>"; $sex = $v[2]?"男":"女";//数组v $v 取索引二,用三元运算符判断,前面是一个布尔型数据,true显示男,false显示女 0 false,1 true //根据民族代号查询民族名称 也可以使用join查询,但是一般不推荐使用,因为查询的数据量太大了 /*$sname = "select name from nation where code = '{$v[3]}'";
$rname = $db->query($sname);
$aname = $rname->fetch_row();*/ $name = nationname($v[3]);
//使关键字高亮 <mark></mark>
/*简化后的在上面
$xxm = "";//先把xxm变量定义在外层
if(!empty($_POST["xm"]))//然后判断是否有提交值
{
$xxm = $_POST["xm"];//有传值的话就取xm
}
*/
//替换关键字
$newname = str_replace($xxm,"<mark>{$xxm}</mark>",$v[1]);//查找替换,第一个参数:关键字,根据什么去找;第二个关键字,替换后的内容;第三个参数:要替换哪个字符串,即要替换的区域 echo"<td>{$v[0]}</td><td>{$newname}</td><td>{$sex}</td><td>{$name}</td><td>{$v[4]}</td><td><a href='1028afternoonshanchu.php?c={$v[0]}'>删除</a> <a href='1030morningxiugai.php?c={$v[0]}'>修改</a></td>"; //跳转到另外一个页面并且带一个值过去的方式是get方式,因此我们要模拟一个get传值方式 ?c={$v[0]} //要想加入删除的功能要先让它可以点击,一种方法是按钮,另一种方法是<a>标签。样式可以随便做,比如在外面加上一个漂亮的DIV,在里面加上<a>标签。 /*输出的两种方法
foreach($v as $v1)
{
echo "<td>{$v1}</td>";
}*/ echo"</tr>";
} //给一个民族代号,返回民族名称
function NationName($code)
{
//造连接对象
$db = new MySQLi("localhost","root","789","1016");
//写SQL语句
$sql = "select name from nation where code='{$code}'";
//执行SQL语句
$result = $db->query($sql); $attr = $result->fetch_row(); return $attr[0];
} ?> </table>
<a href="1028afternoonadd.php"><input type="button" value="添加数据" /></a> </body>
</html>

1030afternoonduotiaojian.php

PHP数据访问修改和多条件查询(20161030)的更多相关文章

  1. MYSQLi数据访问修改数据

    <link href="../bootstrap.min.css" rel="stylesheet" type="text/css" ...

  2. 9_13学习完整修改和查询&&实体类,数据访问类

    完整修改和查询:中间变量运用. 1.先查 2.执行操作 ---------------------------------------------------- namespace ADO.NET_小 ...

  3. ADO.NET(完整修改和查询、实体类,数据访问类)

    一.完整修改和查询 在编写c#语句时需考虑到用户体验,例如在编写修改语句时,需要考虑到输入的内容在数据库中是否能够找到. 中间变量运用. 1.先查 2.执行操作 完整修改语句: bool has = ...

  4. 【hbase】——Java操作Hbase进行建表、删表以及对数据进行增删改查,条件查询

    1.搭建环境 新建JAVA项目,添加的包有: 有关Hadoop的hadoop-core-0.20.204.0.jar 有关Hbase的hbase-0.90.4.jar.hbase-0.90.4-tes ...

  5. (转)Java操作Hbase进行建表、删表以及对数据进行增删改查,条件查询

    1.搭建环境 新建JAVA项目,添加的包有: 有关Hadoop的hadoop-core-0.20.204.0.jar 有关Hbase的hbase-0.90.4.jar.hbase-0.90.4-tes ...

  6. Java操作Hbase进行建表、删表以及对数据进行增删改查,条件查询

    1.搭建环境 新建JAVA项目,添加的包有: 有关Hadoop的hadoop-core-0.20.204.0.jar 有关Hbase的hbase-0.90.4.jar.hbase-0.90.4-tes ...

  7. 利用PHP访问数据库——实现分页功能与多条件查询功能

    1.实现分页功能 <body><table width="100%" border="1">  <thead>    < ...

  8. MYSQLi数据访问分页查询

    <?php //分页工具 直接加载使用 /** file: page.class.php 完美分页类 Page */ class Page { private $total; //数据表中总记录 ...

  9. 在MyBatis中查询数据、涉及多参数的数据访问操作、插入数据时获取数据自增长的id、关联表查询操作、动态SQL、关于配置MyBatis映射没有代码提示的解决方案

    1. 单元测试 在单元测试中,每个测试方法都需要执行相同的前置代码和后置代码,则可以自定义2个方法,分别在这2个方法中执行前置代码和后置代码,并为这2个方法添加@Before和@After注解,然后, ...

随机推荐

  1. Java泛型在spring jdbc template中的类似应用

    泛型的使用保证返回的对象类型的正确: package com.stono.gentest; import java.util.ArrayList; import java.util.List; pub ...

  2. SoapUI:使用Excel进行参数化

    本章中学习如下内容: 1)         使用DataSource调用Excel中的数据给接口参数化: 2)         使用DataSource Loop使得测试用例根据Excel中的取值循环 ...

  3. 以Tomcat+Mysql为例,实现Docker多容器连接

    Docker提供了多个容器直接访问的方法,最简单的方式是直接使用端口映射-p参数指定映射的端口或者-P映射所有端口,多个容器直接通过网络端口进行访问. 但网络端口映射方式并不是Docker中连接多个容 ...

  4. 内功心法 -- java.util.ArrayList<E> (3)

    写在前面的话:读书破万卷,编码如有神--------------------------------------------------------------------下文主要对java.util ...

  5. mybatis入门-第一个程序

    今天,我们就一起来完成mybatis的第一个小demo,使用mybatis对我们的数据库进行一个小小的操作. 需求 根据用户id查询用户的信息. 环境搭建 java环境:jdk1.7版本 开发工具:e ...

  6. 毕向东udp学习笔记2

    项目功能:  发送端读取控制台输入,然后udp发送 接收端一直接收,直到输入为886 相对于笔记1,修改了发送端代码,实现发送控制台的内容,接收端循环接收,当输入886时,停止发送 发送端: impo ...

  7. C语言 memcpy二维数组的复制

    今天在实现二维数组的复制功能时,竟然出现了好多问题,还是太不小心了. 我们知道,平时进行矩阵复制,无非是二重循环进行赋值操作,所以今天想改用利用memcpy进行复制操作,当然一维数组的复制在上一篇文章 ...

  8. Windows编程坐标系统概念

    Windows编程中关于设置映象模式的四个函数 SetWindowOrgSetViewPortOrgSetMapModeSetWindowExtExSetViewPortExtEx 一.Windows ...

  9. Noip 2014酱油记+简要题解

    好吧,day2T1把d默认为1也是醉了,现在只能期待数据弱然后怒卡一等线吧QAQ Day0 第一次下午出发啊真是不错,才2小时左右就到了233,在车上把sao和fate补掉就到了= = 然后到宾馆之后 ...

  10. android shell常用命令

     du -sm foldername 查看文件夹foldername 的大小,单位是兆(m),du -sk foldername单位是k    adb shell rm -r /mnt/sdcard/ ...