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 哪位朋友能跟我聊聊给我解释解释 加分……
展开
 我来答
cdunna
2011-01-21 · TA获得超过1676个赞
知道小有建树答主
回答量:1.9万
采纳率:0%
帮助的人:1598万
展开全部
不见得那样写就会错。如果配置中开了全局变量。一样会有输出。错误的真正原因是。你用的是小写。。

echo $PHP_SELF;

预定义变量要用大写。楼主记好。而且不支持你这样用。存在很大的安全问题。支持楼上的用法。

echo $_SERVER['PHP_SELF'];

这样相对安全些。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
牛松5
2011-01-20 · TA获得超过208个赞
知道答主
回答量:82
采纳率:0%
帮助的人:84万
展开全部
可以显示什么?你是想对图书信息进行排序吧!代码错了,不是提交错了! 你加上if(isset($_post['submit'])){。。。。}就不会提示这个错误了

明天中午加我593728071
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sinofaneliu
2011-01-20 · TA获得超过145个赞
知道答主
回答量:105
采纳率:0%
帮助的人:94.3万
展开全部
1、同楼上没有是否提交表单的验证判断
2、<select id="by_what"> ==》 <select name="by_what" id="by_what">
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
运纵j4
2011-01-21 · TA获得超过621个赞
知道小有建树答主
回答量:245
采纳率:0%
帮助的人:52.7万
展开全部
没分啊。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式