向web页面显示数据

本文详细介绍如何使用PHP进行数据库操作,包括数据的显示、分页、插入、编辑和删除。涵盖数据库连接、数据检索、结果集处理及网页交互等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.向web页面显示数据

首先数据库里面要有数据 

主要的是连接数据库后再在web上显示数据这一过程

 

<?php
header("content-type:text/html;charset=utf-8");
if($conn=mysql_connect('localhost','root','root')){
	
}else{
	die('数据库连接失败:'.mysql_error());
}

//连接过数据库后就要带上这两句命令,选择数据库和设置编码方式
mysql_query('use test',$conn);
mysql_query('set name utf-8',$conn);

//因为上面已经选择过test数据库了,就不需要再加mysql_select_db('test');这一句了

$sql = 'select id,name,created_time,place from users';

$result = mysql_query($sql) OR die("<br/>ERROR:<b>".mysql_error()."</b></br/>产生问题的sql:".$sql);

?>

<!DOCTYPE html>
<html>
<head>
	<title>web显示</title>
	<meta charset="utf-8">
	
</head>
<body>
	<table width="75%" border=0.1px solid black cellpadding="0" cellspacing="1" bgcolor="black">
		<tr bgcolor="pink">
			<td height="33"><div align="center"><strong>用户ID</strong></div></td>
			<td><div align="center"><strong>用户名称</strong></div></td>
			<td><div align="center"><strong>来自国家</strong></div></td>
			<td><div align="center"><strong>注册时间</strong></div></td>
		</tr>

		<?php
			//mysql_num_rows() 函数返回结果集中行的数目,该结果集从 mysql_query() 的调用中得到。
			if ($num = mysql_num_rows($result)) {  
				// mysql_fetch_array() 中可选的第二个参数 result_type 是一个常量,可以接受以下值:MYSQL_ASSOC,MYSQL_NUM 和 MYSQL_BOTH
				while ($row = mysql_fetch_array($result,MYSQL_ASSOC)) { 
			?>	
			<tr bgcolor="white">
				<td height="22" align="center"><?php echo $row['id'];?></td>
				<td height="22" align="center"><?php echo $row['name'];?></td>
				<td height="22" align="center"><?php echo $row['place'];?></td>
				<td height="22" align="center"><?php echo $row['created_time'];?></td>
			</tr>

			<?php

				}
			}
			mysql_close($conn);
			?>	
		
	</table>
</body>
</html>



2.数据分页显示的原理及实现

 所谓分页显示就是通过程序将结果集一段一段地来显示。实现分页显示需要两个初始参数,即每页显示多少记录和当前是第几页,再加上完整的结果集,就可以实现数据的分段显示。

使用limit子句对查询结果做限定,比如要取得某表中的前10记录,使用 select * from table_name limit 0,10; 如果查找第11-20条记录的话使用 select * from table_name limit 10,10; 如果查找第21-30条记录的话使用 select * from table_name from 20,10;

从上面的语句可以看出,每取10条记录相当于每个页面显示10条数据,而没每次所要取得记录的起始位置和当前页数之间存在着这样的关系: 起始位置=(当前页数-1)x每页要现实的记录数。如果以变量 $page_size 表示每页所显示的记录数,以变量$cur_page表示当前的页数,上述语句就可以用如下的sql语句归纳:

select * from table_name limit  ($cur_page-1) * $page_size,$page_size; 

下面将在上面的代码基础上增加分页的功能

<?php
header("content-type:text/html;charset=utf-8");
if($conn=mysql_connect('localhost','root','root')){
	
}else{
	die('数据库连接失败:'.mysql_error());
}

//连接过数据库后就要带上这两句命令,选择数据库和设置编码方式
mysql_query('use test',$conn);
mysql_query('set name utf-8',$conn);

//因为上面已经选择过test数据库了,就不需要再加mysql_select_db('test');这一句了


//page是当前页数
if(isset($_GET['page'])){
    $page = $_GET['page'];
}else{
    $page = 1;
}

$page_size = 2;  //每页显示两条数据

//获取数据总量
$sql = 'select * from users';
$result = mysql_query($sql);
$total = mysql_num_rows($result);

//开始计算总页数
if($total){
    if($total<$page_size){
        $page_count = 1;
    }
    if($total % $page_size){
        $page_count = (int)($total/$page_size)+1;
    }else{
        $page_count = $total/$page_size;
    }
}else{
    $page_count = 0;
}

//翻页链接
$turn_page = '';
if($page==1){
    $turn_page = '首页 | 上一页 ';
}else{
    $turn_page = '<a href=conn.php?page=1> 首页 </a> | <a href=conn.php?page='.($page-1).'>上一页</a>';
}

//当没有数据以及最后一页的时候
if($page_count==0 || $page == $page_count){
    $turn_page = '下一页 | 尾页 ';
}else{
    $turn_page = '<a href=conn.php?page=($page+1)> 下一页 </a> | <a href=conn.php?page=$page_count> 尾页 </a>';
}

$sql = 'select id,name,created_time,place limit '.($page-1)*$page_size.','.$page_size.'';
$result = mysql_query($sql) OR die("<br/>ERROR:<b>".mysql_error()."</b></br/>产生问题的sql:".$sql);
?>

<!DOCTYPE html>
<html>
<head>
	<title>web显示</title>
	<meta charset="utf-8">
	
</head>
<body>
	<table width="75%" border=0.1px solid black cellpadding="0" cellspacing="1" bgcolor="black">
		<tr bgcolor="pink">
			<td height="33"><div align="center"><strong>用户ID</strong></div></td>
			<td><div align="center"><strong>用户名称</strong></div></td>
			<td><div align="center"><strong>来自国家</strong></div></td>
			<td><div align="center"><strong>注册时间</strong></div></td>
		</tr>

		<?php
			//mysql_num_rows() 函数返回结果集中行的数目,该结果集从 mysql_query() 的调用中得到。
			if ($num = mysql_num_rows($result)) {  
				// mysql_fetch_array() 中可选的第二个参数 result_type 是一个常量,可以接受以下值:MYSQL_ASSOC,MYSQL_NUM 和 MYSQL_BOTH
				while ($row = mysql_fetch_array($result,MYSQL_ASSOC)) { 
			?>	
			<tr bgcolor="white">
				<td height="22" align="center"><?php echo $row['id'];?></td>
				<td height="22" align="center"><?php echo $row['name'];?></td>
				<td height="22" align="center"><?php echo $row['place'];?></td>
				<td height="22" align="center"><?php echo $row['created_time'];?></td>
			</tr>

			<?php

				}
			}
                echo $turn_page; //将分页字符串输出
			mysql_close($conn);
			?>	
		
	</table>
</body>
</html>



3.从页面获取数据并插入数据库

1.首先建立一个web页面,供用户提交数据

<!DOCTYPE html>
<html>
<head>
	<title>提交用户信息</title>
	<meta charset="utf-8">
</head>
<body>
	<h2>提交用户信息</h2>
	<form name="from" method="post" action="tijiao.php">
		<table width="15%"  cellpadding="0" cellspacing="1">
			<tr>
				<td height="20px">用户名:</td>
				<td><input type="text" name="user_name" id="user_name" size="20"></td>
			</tr>
			<tr>
				<td height="20px">来自城市:</td>
				<td>
					<select name="place" id="place">
						<option value="Beijing">北京</option>
						<option value="London">伦敦</option>
						<option value="NewYork">纽约</option>
						<option value="Paris">巴黎</option>
						<option value="Rome">罗马</option>
					</select>
				</td>
				<tr>
					<td>&nbsp</td>
				</tr>
				<tr>
				<td><input type="submit" value="提交"></td>	
				</tr>
			</tr>
		</table>
	</form>

</body>
</html>

2.写相应的php文件,文件名要和from表单里action的值相同

<?php
header("content-type:text/html;charset=utf-8");

$conn = mysql_connect('localhost','root','root');
mysql_query('use test',$conn);
mysql_query('set name utf8',$conn);

//通过post 的方法传入表单数据
$name = $_POST['user_name'];
$place = $_POST['place'];

if(empty($name) || trim($name)==''){
	echo '请填写用户名!<a href="index1.html">返回</a>';
	exit();
}

//注意这里的id可以设置为自动增加
$sql = "insert into users set id=7,name='".$name."',place='".$place."',created_time = NOW()";
mysql_query($sql) OR die("<br/>ERROR:<b>".mysql_error()."</b></br/>产生问题的sql:".$sql);
mysql_close($conn);

echo '数据表插入成功,打开<a href="conn.php">查看数据表</a>';

?>

如果想让id自动增加,首先要把id设置为AUTO_INCREMENT,修改$sql那一行代码

$sql = "insert into users(name,place,created_time) values('$name','$place',NOW())";

4.编辑用户信息页面

增加用到insert语句,编辑就需要用到update语句

该编辑页面和添加页面的样式一样,只是将用户信息显示在了页面的表单元素里。

-------------先区别一下mysql_num_rows(); 和 mysql_fetch_array(); 的区别-------------

 

--------------------------------------------------------------------------------------------------------------------

 编辑功能需要一个修改页面和一个对应的php文件
edit1.html

<!DOCTYPE html>
<html>
<head>
	<title>提交用户信息</title>
	<meta charset="utf-8">
</head>
<body>
	<h2>提交用户信息</h2>
	<form name="from" method="post" action="edit.php?id=<?php echo $row['id'];?>">
		<table width="15%"  cellpadding="0" cellspacing="1">
			<tr>
				<td height="20px">用户名:</td>
				<td><input type="text" name="user_name" id="user_name" size="20" value="<?php echo $row['name']; ?>"></td>
			</tr>
			<tr>
				<td height="20px">来自城市:</td>
				<td>
					<select name="place" id="place">
						<?php
							foreach($arr_city as $k => $v) {						
								$option = ($row['place']==$k) ? '<option value="'.$k.'" selected>'.$v.'</option>' : '<option value="'.$k.'">'.$v.'</option>';
								echo $option.'\n';
							}
						?>
					</select>
				</td>
				<tr>
					<td>&nbsp</td>
				</tr>
				<tr>
				<td><input type="submit" value="提交"></td>	
				</tr>
			</tr>
		</table>
	</form>

</body>
</html>

 edit.php

<?php 

header("content-type:text/html;charset=utf8");
$conn = mysql_connect('localhost','root','root');
mysql_query('use test',$conn);
mysql_query('set name utf8',$conn);

//页面中的城市列表将有数组生成
$arr_city = array('Beijing'=>'北京','London'=>'伦敦','NewYork'=>'纽约','Paris'=>'巴黎','Rome'=>'罗马');
//print_r($arr_city);
if(!isset($_GET['id'])){
	echo "参数错误。。。";
}

$id = $_GET['id'];
//echo $id;
$sql = "select * from users where id='$id'";
$result = mysql_query($sql) OR die("<br/>ERROR:<b>".mysql_error()."</b></br/>产生问题的sql:".$sql);
if(!mysql_num_rows($result)){
	echo "用户id错误!";
	exit();
}

$row = mysql_fetch_array($result);
require('./edit1.html');
//print_r($row);

$name = $_POST['user_name'];
$place = $_POST['place'];
if (!empty($name)||trim($name)!='') {
	$sql = "update users set name='".$name."',place='".$place."' where id=$id";
	mysql_query($sql) OR die("<br/>ERROR:<b>".mysql_error()."</b></br/>产生问题的sql:".$sql);
	mysql_close($conn);

	echo '数据修改成功!打开<a href="conn.php">查看数据</a>';
	exit();
}


?>


5.删除信息

<?php
header("content-type:text/html;charset=utf8");
if($conn=mysql_connect('localhost','root','root')){
	
}else{
	die('数据库连接失败:'.mysql_error());
}
mysql_query('use test',$conn);
mysql_query('set name utf-8',$conn);

if (!isset($_GET['id'])) {
	echo "参数错误";
	exit();
}

$id = $_GET['id'];
//echo $id;

if(empty($id)){
	echo "用户id为空";
	exit();
}

$sql = "select * from users where id=$id";
$result = mysql_query($sql) OR die("<br/>ERROR:<b>".mysql_error()."</b></br/>产生问题的sql:".$sql);
if(!mysql_num_rows($result)){
	echo "用户id错误";
	exit();
}
//删除用户数据
$sql = "delete from users where id=$id";
$result = mysql_query($sql) OR die("<br/>ERROR:<b>".mysql_error()."</b></br/>产生问题的sql:".$sql);
mysql_close($conn);

echo '数据删除成功,返回<a href="conn.php">查看数据</a>';


?>

编辑功能总是比删除功能繁杂的。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值