如何引入php文件:
once一次include包含require需要
include(文件)/include_once(文件)
require(文件)/require_once(文件)
用法:
include require
include('study.php');//这样文件就引入了
要引入的文件存在时,两者没有区别
不存在时,require报解析错误 include报警告错误
如果引入的文件和本文件是有相关性的,那么就用include
因为如果出错了,有报错信息可以看到问题所在
如果引入的文件和本文件无交集,只是显示,就用require
include_once/require_once
如果调函数的话,调两次同一个函数,第二次调就会出错,因为函数不能重名
这样就可以用include_once require_once,他就会只调一次
以后都用include_once、require_once
<?php
error_reporting(E_ALL ^ E_NOTICE);//E_ALL屏蔽所有错误,也可以从php.ini(配置文件)屏蔽,但是那样会屏蔽掉所有的错误,在这里用这个函数只会屏蔽掉这里的错误,后面的^ E_NOTICE表示除了notice错误,其他的错误都报出来
require_once('db.php');//引入封装好的函数库
if(!empty($_POST)){//如果post不为空,表示用户点了提交
$data = $_POST;
//接收post提交过来的所有数据
//如果姓名 or 学号为空,就不让用户提交
if(empty($data['number']) || empty($data['name'])){//判断名字和学号是否空
die("<script>alert('学号或姓名为空'); history.back();</script>");//如果为空输出提示信息,并回到上一层(前一个url页面),等价于点浏览器的回退,这是JS的browser对象中的history对象
}
//区分是添加还是修改
//这个id是页面中用户提交的信息(此页面最下一行代码)
//如果大于0,就是修改
if($data['id'] > 0){
$sql = "update student set number='{$data['number']}', name ='{$data['name']}', sex ='{$data['sex']}', age ='{$data['age']}' where id={$data['id']}";
}else{//否则就是添加
$sql = "insert into student (number, name, sex, age) values ('{$data['number']}', '{$data['name']}', '{$data['sex']}', '{$data['age']}')";
}
$ret = execute($sql);
//调用封装好的函数 execute查询所有数据
//无论是添加还是修改都是调用这个封装好的函数,区别只是sql语句不同
if($ret){
die("<script>alert('操作成功'); location.href='student_list.php';</script>");//操作成功就跳转到student_list.php
}else{
die("<script>alert('操作失败'); location.href='student_list.php';</script>");//操作失败也跳转到student_list.php
}
}
$id = $_GET['id'];
//这里用于接收student_list.php点击修改之后,跳转到这个页面,发送的信息
//在student_list.php页面点击修改没问题,但是点击添加学生会notice(通知)报错
//可以用三元运算符检测,也可以直接屏蔽这个错误,在此页面顶部用error_reporting()
//查询用这个语句,如果是添加就不用这个语句了,所以要先判断一下,然后在下面页面中显示
//id是自增长的才这样写
if($id > 0){
$sql = "select * from student where id=$id limit 1";
$row = get_row($sql);
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>添加页面</title>
</head>
<body>
<h3>添加学生</h3>
<form action="" method="post">
<p>学号: <input type="text" name="number" <?php echo $row['id'] > 0?'readonly':''; ?> value="<?php echo $row['number']; ?>"></p>
<!-- readonly 只读 disabled 不可用 只能在修改时使用,添加时不能用-->
<!-- 如果用disable,数据不会带着走,会显示姓名或学号为空 -->
<p>姓名: <input type="text" name="name" value="<?php echo $row['name']; ?>"></p>
<p>性别: <input type="radio" name="sex" value="1" <?php if($row['sex']==1){echo 'checked';}?> />男<input type="radio" name="sex" value="2" <?php if($row['sex']==2){echo 'checked';}?>/>女</p>
<!-- 如果用户输入1,男按钮输出checked,如果用户输入2,女按钮输出checked -->
<p>年龄: <input type="text" name="age" value="<?php echo $row['age']; ?>"></p>
<p><button>提交</button></p>
<input type="hidden" name="id" value="<?php echo $row['id'];?>">
<!-- 如果点击添加就把要修改列的id带到修改页面去,如果是添加,value就是空的 -->
<!-- 在上面判断是添加还是修改,就判断这里的值到底是大于0还是空 -->
</form>
</body>
</html>
<?php
//header("Content-type:text/html;charset=utf-8");
/*
如何引入php文件:
//once 一次 include包含 require需要
include(文件) include_once(文件)
require(文件) require_once(文件)
用法:
include require
include('study.php'); //这样文件就引入了
要引入的文件存在时,两者没有区别
不存在时,require报解析错误 include报警告错误
如果引入的文件和本文件是有相关性的,那么就用include
因为如果出错了,有报错信息可以看到问题所在
如果引入的文件和本文件无交集,只是显示,就用require
include_once require_once
如果调函数的话,调两次同一个函数,第二次调就会出错,因为函数不能重名
这样就可以用include_once require_once,他就会只调一次
以后都用include_once、 require_once
*/
//通过这个文件调用封装好的函数库 db.php
require_once('db.php');
$sql = "select * from student";
$list = get_all($sql);
?>
<!DOCTYPE html>
<html lang="zh">
<head>
<title>学生列表</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title></title>
</head>
<body>
<h3 align="center">学生列表</h3>
<p align="center"><a href="student_add.php">添加学生信息</a></p>
<hr size="10" color="gray" />
<table align="center" width="1200" border="1" cellspacing="0" cellspadding="3"><!-- cellspacing单元格间距 cellpadding单元格边距 -->
<tr>
<th>ID</th>
<th>学号</th>
<th>姓名</th>
<th>性别</th>
<th>年龄</th>
<th width="80">操作</th>
</tr>
<?php
foreach($list as $v){
?>
<tr align="center">
<td><?php echo $v['id'];?></td>
<td><?php echo $v['number'];?></td>
<td><?php echo $v['name'];?></td>
<td><?php echo $v['sex'];?></td>
<td><?php echo $v['age'];?></td>
<td><?php
switch($v['sex']){
case 1: echo '男'; break;
case 2: echo '女'; break;
default: echo '未知';
}
?></td>
<td><?php echo $v['age'];?></td>
<td>
<a href="student_add.php?id=<?php echo $v['id']; ?>">修改</a><!-- 在student_list.php页面点修改会跳到student_add.php页面,浏览器输入框中会带有id=1 -->
<!-- 点击修改后,会跳转到添加学生页面修改信息,所以添加学生页面要用$id = $_GET['id'];接收这里传过去的信息 -->
<a href="student_del.php?id=<?php echo $v['id']; ?>" onclick="return confirm('确定要删除吗?');">删除</a>
</td>
</tr>
<?php
}
?>
</table>
</body>
</html>
<?php
//自定义的数据库操作函数库
$link = @mysqli_connect('localhost', 'root', 'root', '180301') or die(mysqli_connect_error());
mysqli_set_charset($link, 'utf8') or die(mysqli_error($link));
function execute($sql){
global $link;
$result = mysqli_query($link, $sql) or die(mysqli_error($link));
if($result){
return mysqli_affected_rows($link);//返回受影响的行数,返回值为0 或者大于0 的数,大于0可以当 真 来用
}else{
return false;
}
mysqli_close($link);
}
//查询多行数据
function get_all($sql){
global $link;
$result = mysqli_query($link, $sql) or die(mysqli_error($link));
$list = mysqli_fetch_all($result, MYSQLI_ASSOC);
//mysqli_fetch_all获取所有关联数据,查询多行数据的函数
//MYSQLI_ASSOC 获取关联下标
//MYSQLI_both 两种下标都有
//MYSQLI_NUM 获取数字下标
mysqli_free_result($result);//释放资源 从结果集中取得行,然后释放结果内存
return $list;
}
//查询一行数据
function get_row($sql){
global $link;
$result = mysqli_query($link, $sql) or die(mysqli_error($link));
$list = mysqli_fetch_assoc($result);
//mysqli_fetch_assoc获取一行关联数据,查询一行数据的函数
//只获取一行数据,就不需要用 MYSQLI_ASSOC 了,这样取出的结果不再是二维数组,而是一维数组
mysqli_free_result($result);//释放资源 从结果集中取得行,然后释放结果内存
return $list;
}
//查询一个数据
function get_one($sql){
global $link;
$result = mysqli_query($link, $sql) or die(mysqli_error($link));
$list = mysqli_fetch_row($result);
mysqli_free_result($result);//释放资源 从结果集中取得行,然后释放结果内存
return $list[0]; //因为只查一个数据,所以,用mysqli_fetch_row,获取数字下标
//然后在这里直接拿这个下标,就可以得到数据了
//因为这个数组就只有一个数据,所以下标就是0,
//如果用 mysqli_fetch_assoc的话,拿到的数据是关联下标
//这样如果查询的结果变更了,就全部涉及到这个关联下标的地方都要换,所以就不方便
//这样用数字下标就无论查什么,下标都是0
}
?>
<?php
require_once('db.php');
$id = $_GET['id'];
$sql = "delete from student where id = $id";
$ret = execute($sql);
if($ret){
die("<script>alert('操作成功'); location.href='student_list.php';</script>");//操作成功就跳转到student_list.php
}else{
die("<script>alert('操作失败'); location.href='student_list.php';</script>");
}
?>











网友评论