PHP中用action="<?php echo $PHP_SELF;?>"把form获取的数据在本页进行处理 但是总提示找不到by_what?
<html><head><title>虚拟图书馆</title></head><?php//存储书的数组$book_array=array(array("name"=>"...
<html>
<head>
<title>虚拟图书馆</title>
</head>
<?php
//存储书的数组
$book_array=array(
array("name"=>"三侠五义","price"=>20.00,"author"=>"孙"),
array("name"=>"七杰小五义","price"=>18.23,"author"=>"吴"),
array("name"=>"白眉大侠","price"=>34.99,"author"=>"赵"),
array("name"=>"童林传","price"=>11.45,"author"=>"王"),
array("name"=>"三侠剑","price"=>22.50,"author"=>"刘"),
);
//compare_name函数
function compare_name($array1,$array2){
return strcmp($array1["name"],$array2["name"]);
}
//compare_price函数
function compare_price($array1,$array2){
return ($array1["price"]-$array2["price"]);
}
//compare_author函数
function compare_author($array1,$array2){
return strcmp($array1["author"],$array2["author"]);
}
//显示图书列表的函数
function show_books(&$books_array){
if(count($books_array)){
foreach($books_array as $key=>$value){
echo "<tr><td>$key</td><td>书 名:$value[name]<td></tr>";
echo "<tr><td></td><td>价 格:$value[price]<td></tr>";
echo "<tr><td></td><td>作 者:$value[author]<td></tr>";
}
}
}
?>
<body>
<?php
echo "<h2>共有".count($book_array)."本书</h2>";
switch($_POST["by_what"]){
case "by_name": echo "按书名排"; break;
case "by_price": echo "按价格排"; break;
case "by_author": echo "按作者排"; break;
}
?>
<table width="600" border=1>
<tr>
<td width="10%">序号</td>
<td width="90%">图书信息</td>
</tr>
<?php
switch($_POST["by_what"]){
case "by_name": usort($book_array,"compare_name"); break;
case "by_price": usort($book_array,"compare_price"); break;
case "by_author": usort($book_array,"compare_author"); break;
}
show_books($book_array);
?>
</table>
<form action="<?php echo $PHP_SELF;?>" method="post">
请选择排序方式:
<select id="by_what">
<option disable>请选择</option>
<option value="by_name">书名</option>
<option value="by_price">价格</option>
<option value="by_author">作者</option>
</select>
<input type="submit" name="ok" value="显示">
</form>
<a href="shili_shuzu_abc.php">重选</a>
</body>
</html>
如果把最后一部分放到别的网页 不用action="<?php echo $PHP_SELF;?>"就可以显示
是对图书信息排序 但是这个程序执行的时候老是提示找不到里面那个by_what 要是把最后那个表单放到新建的网页中 不采用action="<?php echo $PHP_SELF;?>"方式 就可以正常的执行
能不能解释清楚点儿啊……
我的qq626670930 哪位朋友能跟我聊聊给我解释解释 加分…… 展开
<head>
<title>虚拟图书馆</title>
</head>
<?php
//存储书的数组
$book_array=array(
array("name"=>"三侠五义","price"=>20.00,"author"=>"孙"),
array("name"=>"七杰小五义","price"=>18.23,"author"=>"吴"),
array("name"=>"白眉大侠","price"=>34.99,"author"=>"赵"),
array("name"=>"童林传","price"=>11.45,"author"=>"王"),
array("name"=>"三侠剑","price"=>22.50,"author"=>"刘"),
);
//compare_name函数
function compare_name($array1,$array2){
return strcmp($array1["name"],$array2["name"]);
}
//compare_price函数
function compare_price($array1,$array2){
return ($array1["price"]-$array2["price"]);
}
//compare_author函数
function compare_author($array1,$array2){
return strcmp($array1["author"],$array2["author"]);
}
//显示图书列表的函数
function show_books(&$books_array){
if(count($books_array)){
foreach($books_array as $key=>$value){
echo "<tr><td>$key</td><td>书 名:$value[name]<td></tr>";
echo "<tr><td></td><td>价 格:$value[price]<td></tr>";
echo "<tr><td></td><td>作 者:$value[author]<td></tr>";
}
}
}
?>
<body>
<?php
echo "<h2>共有".count($book_array)."本书</h2>";
switch($_POST["by_what"]){
case "by_name": echo "按书名排"; break;
case "by_price": echo "按价格排"; break;
case "by_author": echo "按作者排"; break;
}
?>
<table width="600" border=1>
<tr>
<td width="10%">序号</td>
<td width="90%">图书信息</td>
</tr>
<?php
switch($_POST["by_what"]){
case "by_name": usort($book_array,"compare_name"); break;
case "by_price": usort($book_array,"compare_price"); break;
case "by_author": usort($book_array,"compare_author"); break;
}
show_books($book_array);
?>
</table>
<form action="<?php echo $PHP_SELF;?>" method="post">
请选择排序方式:
<select id="by_what">
<option disable>请选择</option>
<option value="by_name">书名</option>
<option value="by_price">价格</option>
<option value="by_author">作者</option>
</select>
<input type="submit" name="ok" value="显示">
</form>
<a href="shili_shuzu_abc.php">重选</a>
</body>
</html>
如果把最后一部分放到别的网页 不用action="<?php echo $PHP_SELF;?>"就可以显示
是对图书信息排序 但是这个程序执行的时候老是提示找不到里面那个by_what 要是把最后那个表单放到新建的网页中 不采用action="<?php echo $PHP_SELF;?>"方式 就可以正常的执行
能不能解释清楚点儿啊……
我的qq626670930 哪位朋友能跟我聊聊给我解释解释 加分…… 展开
4个回答
展开全部
不见得那样写就会错。如果配置中开了全局变量。一样会有输出。错误的真正原因是。你用的是小写。。
echo $PHP_SELF;
预定义变量要用大写。楼主记好。而且不支持你这样用。存在很大的安全问题。支持楼上的用法。
echo $_SERVER['PHP_SELF'];
这样相对安全些。
echo $PHP_SELF;
预定义变量要用大写。楼主记好。而且不支持你这样用。存在很大的安全问题。支持楼上的用法。
echo $_SERVER['PHP_SELF'];
这样相对安全些。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以显示什么?你是想对图书信息进行排序吧!代码错了,不是提交错了! 你加上if(isset($_post['submit'])){。。。。}就不会提示这个错误了
明天中午加我593728071
明天中午加我593728071
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1、同楼上没有是否提交表单的验证判断
2、<select id="by_what"> ==》 <select name="by_what" id="by_what">
2、<select id="by_what"> ==》 <select name="by_what" id="by_what">
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
没分啊。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询