<?php
$mysqli =mysqli_connect("localhost","root","","testdb1" );
$display_block ="<h1>my categories</h1><p>select a category to see its items.</p>";
$get_cats_sql="select id,cat_title,cat_desc from store_categories order by cat_title";
$get_cats_res=mysqli_query($mysqli,$get_cats_sql);
if(mysqli_num_rows($get_cats_res) < 1){
$display_block = "<p>sorry</p>";
}else{
while($cats = mysqli_fetch_array($get_cats_res)){
$cat_id = $cats['id'];
$cat_title=strtoupper(stripslashes($cats['cat_title']));
$cat_desc = stripslashes($cats['cat_desc']);
$display_block .= "<p><strong><a href=\"".$_SERVER['PHP_SELF']."?cat_id=".$cat_id."\">".$cat_title."</a></strong><br/>".$cat_desc."</p>";
if(isset($_GET['cat_id'])&&($_GET['cat_id']==$cat_id)){
$safe_cat_id=mysqli_real_escape_string($mysqli,$_GET['cat_id']);
$get_items_sql = "select id,item_title,item_price from store_items where cat_id '".$cat_id."' order by item_title";
$get_items_res = mysqli_query($mysqli,$get_items_sql);
if(mysqli_num_rows($get_items_res)< 1){
$display_block = "<p>sorry</p>";
}else{
$display_block .="<ul>";
while($items = mysqli_fetch_array($get_items_res)){
$item_id = $items['id'];
$item_title= stripslashes($items['item_title']);
$item_price = $items['item_price'];
$display_block.="<li><a href=\"showitem.php?item_id".$_items_id."\"</a>(\$".$item_price.")</li>";
}
$display_block .="</ul>";
}
}
}
}
mysqli_close($mysqli);
?>
<!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 echo $display_block; ?>
</body>
</html>
您好,我给您的代码加上了注释。
<?php
$mysqli =mysqli_connect("localhost","root","","testdb1" ); //连接数据库
$display_block ="<h1>my categories</h1><p>select a category to see its items.</p>";//页面显示的内容,提示用户选择一个类型去查看详细信息
$get_cats_sql="select id,cat_title,cat_desc from store_categories order by cat_title";//定义sql语句,从store_categories表中查询id,cat_title,cat_desc,并按照cat_title排序
$get_cats_res=mysqli_query($mysqli,$get_cats_sql);//执行sql语句,若执行成功将返回一个 mysqli_result对象
if(mysqli_num_rows($get_cats_res) < 1){//mysqli_num_rows()函数返回结果集中行的数量,若小于1则sql执行失败,提示用户“sorry”,否则显示详细信息
$display_block = "<p>sorry</p>";
}else{
while($cats = mysqli_fetch_array($get_cats_res)){//循环遍历结果集 mysqli_fetch_array()函数从结果集中取得一行作为关联数组
$cat_id = $cats['id'];
$cat_title=strtoupper(stripslashes($cats['cat_title']));//stripslashes()函数删除由 addslashes()函数添加的反斜杠。strtoupper() 函数把字符串转换为大写。
$cat_desc = stripslashes($cats['cat_desc']);
//显示数据信息<a>标签里放的是链接的信息,格式为:地址?参数名称=参数值
$display_block .= "<p><strong><a href=\"".$_SERVER['PHP_SELF']."?cat_id=".$cat_id."\">".$cat_title."</a></strong><br/>".$cat_desc."</p>";//$_SERVER['PHP_SELF'] 当前正在执行脚本的文件名。
if(isset($_GET['cat_id'])&&($_GET['cat_id']==$cat_id)){//isset()检测变量是否已设置并且非 NULL,该条语句的意思是判断,你在url中获取的cat_id是否和当前遍历到的cat_id相等
$safe_cat_id=mysqli_real_escape_string($mysqli,$_GET['cat_id']);//mysqli_real_escape_string()函数转义在 SQL 语句中使用的字符串中的特殊字符。第一个参数为数据库连接,第二个参数为需要转义的字符。
$get_items_sql = "select id,item_title,item_price from store_items where cat_id '".$cat_id."' order by item_title";//定义sql,查询某个cat_id的信息
$get_items_res = mysqli_query($mysqli,$get_items_sql);//执行查询语句
if(mysqli_num_rows($get_items_res)< 1){//同上,<1时说明查询失败
$display_block = "<p>sorry</p>";
}else{
$display_block .="<ul>";
while($items = mysqli_fetch_array($get_items_res)){//遍历查询结果
$item_id = $items['id'];
$item_title= stripslashes($items['item_title']);
$item_price = $items['item_price'];
$display_block.="<li><a href=\"showitem.php?item_id".$_items_id."\"</a>(\$".$item_price.")</li>";//显示具体信息
}
$display_block .="</ul>";
}
}
}
}
mysqli_close($mysqli);//关闭先前打开的数据库连接
?>
<!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 echo $display_block; ?>
</body>
</html>
代码中的$_GET['cat_id']实际上是您自己点击【$cat_desc】显示的数据时触发的,在页面点击时会刷新本页面,并通过url传递cat_id参数,所以,需要$_GET['cat_id']来获取传递过来的参数,不点击时,参数为空,就是if判断的那条语句,通过isset方法会进行判空操作,执行结果为false,就不执行if里的代码块了。
不知道我的回答您能否明白,如果您仍有疑问,请给我留言,如果对您有所帮助,请您采纳,谢谢~~
基本上来说就是一个页面读取数据库返回价格表信息,没办法详细回答你了,因为你之前基本都不采纳的
先查商品的结果,商品的结果小于1,也就是没有,则返回sorry提示,若不为0,则把商品的详情信息列表展示