如何让php循环输出的表格可以提交数据并跳转页面
$i=0;
$j=0;
$amax=count($room_data);
echo '<table border="1"><tr><th>房间类型</th><th>门店价</th><th>会员价</th><th>剩余房间</th><th>预订</th></tr>';
for($i=0;$i<$amax;$i++){
echo '<tr>';
for($j=0;$j<4;$j++){
echo "<td>".$room_data[$j][$i]."</td>";
}
$ii=$i+1;
echo '<td><input id="room_type_'.$ii.'" name="room_type" type="button" value="预订" onclick="window.location.href="reserve.php""></td></tr>';
// echo "<script>location.href='reserve.php';</script>";
}
echo "</table>";
因为是要做个连锁酒店的预订系统,所以要循环输出多个店的信息,然后再选择预订。图为1家店的信息。
现在已经可以根据循环输出多个表格,想让表格里的每个“预订”按钮都能将这一行的数据传到reserve.php文件并跳转,然后再reserve.php文件里实现预订,请问怎么将值传过去,或者这样的功能怎么实现,要详细代码和讲解。急求大虾帮忙!小弟万分感谢!分不多,30分先奉上!成功后一定追加!
补充问题:
问题是点击表格中的按钮一直没有反应,是php输出的表格不能提交吗?求指教!
//二维数组是由多个一维数组合成的
$room_data=array($array_room_type,$array_basic_price,$array_vip_price,$array_last_room);
//循环输出各房型的房间信息
$i=0;
$j=0;
$amax=count($room_data);
echo '<table border="1"><tr><th>房间类型</th><th>门店价</th><th>会员价</th><th>剩余房间</th><th>预订</th></tr>';
for($i=0;$i<$amax;$i++){
echo '<tr>';
for($j=0;$j<4;$j++){
echo "<td>".$room_data[$j][$i]."</td>";
}
$ii=$i+1;
//$hotel_id;
//$room_type=$room_data[0][$i];
echo '<td><input id="room_type_'.$ii.'" name="room_type" type="button" value="预订" onclick="window.location.href=reserve.php?hotel_id=$array_hotel_id[$a]&room_type=$room_data[0][$i]&basic_price=$room_data[1][$i]&vip_price=$array_vip_price[2][$i]"></td></tr>';
}
echo "</table>"; 展开
onclick="window.location.href=reserve.php?hotel_id=$hotel_id&room_id=$room_id&price=$price"
注意上面这行用到三个变量,$hotel_id,$room_id,$price,它们应该都存在于你的 $room_data 中,这些你自己可以替换。然后在 onlick 跳转到 reserve.php 的时候,你就得到了 3 个 $_GET:
$_GET["hotel_id"],$_GET["room_id"],$_GET["price"]
你要注意单引号和双引号的使用,你写的这句 onclick="window.location.href="reserve.php"",在双引号中又出现了双引号,应该去掉里面的 “(双引号)或使用 \'(反斜杠 单引号)。
问题是点击表格中的按钮一直没有反应,是php输出的表格不能提交吗?求指教!
代码见补充问题
之前没有注意细节,window.location.href="两边不能省略引号"
echo '<td><input id="room_type_'.$ii.'" name="room_type" type="button" value="预订" onclick="window.location.href=reserve.php?hotel_id=$array_hotel_id[$a]&room_type=$room_data[0][$i]&basic_price=$room_data[1][$i]&vip_price=$array_vip_price[2][$i]"></td></tr>';
注意上面 $ii 可以正常输出,因为你使用了 '.$ii.'
window.location.href=后面整个要加 \",也就是 onclick="window.location.href=\'。。。\'"
你的 $array_hotel_id[$a],$room_data[0][$i],$root_data[1][$i],$array_vip_price[2][$i] 这些都是变量,要和前面的 $ii 写法一样:'.变量.'(单引号 点 变量 点 单引号),不然它们会被当做字符串直接被输出。所以把整个这一句改为:
echo '<td><input id="room_type_'.$ii.'" name="room_type" type="button" value="预订" onclick="window.location.href=\'reserve.php?hotel_id='.$array_hotel_id[$a].'&room_type='.$room_data[0][$i].'&basic_price='.$room_data[1][$i].'&vip_price='.$array_vip_price[2][$i].'\'"></td></tr>';
有时候这种单引号,双引号,变量夹杂在一起很容易出现错误,建议你使用带高亮显示的编辑器。这样看起来方便一些。
$i=0;
$j=0;
$amax=count($room_data);
echo '<table border="1"><tr><th>房间类型</th><th>门店价</th><th>会员价</th><th>剩余房间</th><th>预订</th></tr>';
for($i=0;$i<$amax;$i++){
echo '<tr>';
$link='';
for($j=0;$j<4;$j++){
echo "<td>".$room_data[$j][$i]."</td>";
$link.='&v'.$i.'='.$room_data[$j][$i];
}
$link='?' & substr($link,1);
$ii=$i+1;
echo '<td><input id="room_type_'.$ii.'" name="room_type" type="button" value="预订" onclick="window.location.href="reserve.php'.$link.'""></td></tr>';
// echo "<script>location.href='reserve.php';</script>";
}
echo "</table>";
注意,我增加了变量$link用来组装要传递的参数,参数名称我不知道,所以我弄的是v1=xxx&v2=xxx这样的格式,你可能需要调整。
M-V-C 基本过程
你的如何在那部分出了疑问?
2013-04-02
1. 在你的$room_data 数组里加每个房间的id号,就是数据表中的主键
2. 在循环显示中,在"预定"按钮的 reserve.php后加参数: reserve.php?id=<?php echo $room_data[$j][$i]?> 这个根据你数组id的位置定
3. 剩下的就是在reserve.php中接受改id值了 方法:$id=$_GET['id'];