如何使用$ _GET返回网址栏中的值?
复选框以表格形式打勾,这是与$ _GET变量有关的部分(我已将其中的一部分删除):
<form action= "<?php echo $_SERVER['PHP_SELF'];?>" method="get">
echo "<table border='1'>";
// Start of the table
while($row = mysql_fetch_array($result))
// The while loop enables each of the stock codes to have
// a separate page within the table, based on the stock code.
{
echo "<tr>";
// Starts the table row.
echo "<td>Stock Code: " . $row['stock_code'] . "
</br> Stock Name: " . $row['stock_name'] . "</td>";
$num = 0;
echo "<td><input type='checkbox' id='select" . $num . "' name='select" . $num . "' value=".$row['stock_code']."></input></td>";
$num = $num+1; }
当我点击提交时,股票代码会像这样进入网址栏:
submitcheckbox.php?select72=DFC107&select74=DFC120&select79=DFC123
我需要它循环遍历$ _GET值,检查设置了哪些框,然后更新数据库(如果已使用标记检查它们)。
我正在使用while循环,使用isset检查是否已选中复选框:
$numrows = count($row);
$i=0;
while ($i<=$numrows){
if (isset ($_GET['select.i']));
echo $_GET['select.i'];
$i++;
$save = $_GET['select.i'];
echo $save;
到目前为止还不是很成功...想知道是否有更好的方法可以像使用数组那样做?
答案 0 :(得分:0)
我不确定count($row)
是您认为的那样,是否可以按照编写的顺序发布包含该部分的整个页面代码?
也是$_GET['select'.$i]
而不是$_GET['select.i']
:
$numrows = count($row); //make sure where this comes from and that it actually contains the number of rows
for($i=0;$i<$numrows;$i++){
if(isset($_GET['select'.$i])){
echo $i.' isset : '.$_GET['select'.$i].'<br/>';
//do whatever is required to save
}
}
答案 1 :(得分:0)
起初 - 不是while
不是for
而是foreach
。然后你就这样做了:
foreach($_GET as $key=>$value) {
if(substr($key, 0, 6)=="select") {//Just check the begining of the name - fur sure, can be ommited
echo "Checkbox #".substr($key, 6)." selected!<br>";
}
}
如果您已正确使用while
(而您没有),则会迭代许多未定义的值 - 您似乎拥有超过70个复选框!你想要程序检查它们吗?您只需检查发送的值即可
Foreach为每个迭代提供一个关联数组键和值。它只为foreach($array as $value)
语法提供了值。
在第二个代码中,您有非常明显的begginer语法错误。我会指出一些,所以你可以在将来避免它们:
$numrows = count($row);
$i=0;
while ($i<=$numrows){
if (isset ($_GET['select'.$i])); { //This must have brackets too, if it involves multiple commands!
echo $_GET["select$i"]; //This is how we concat strings in php
$save = $_GET['select'.$i]; //Or this
echo $save;
}
$i++; //Iterate at the end
} //Mising ending bracket!!
答案 2 :(得分:0)
如果我理解你正在尝试做什么,当你循环浏览潜在的'选择'(即$_GET['select'.$i]
)时,你可以将$ i添加到数组中,如下所示:
if (isset($_GET['select'.$i])) {
$my_array[] = $i;
}
然后,您可以循环浏览$my_array
并勾选与$i
关联的复选框,其中包含以下内容:
foreach($my_array as $checked) {
// do your checkbox stuff
}
答案 3 :(得分:0)
以下是关于如何使其发挥作用的想法
foreach($_GET as $key=>$value) {
// check if the key is something like select74
// by finding first occurance of the string on
// the key
$pos = strpos($key, 'select');
// If string exist
if ($pos !== false) {
// Get the save and save it
echo $value;
$save = $value;
echo $save;
}
}
注意:如果不是使用$ _GET而是可以为表单使用$ _POST,您只需要从select74更改字段名称以选择[74] $ _POST将具有的方式数组调用select键,其中键为74,值为DFC120
答案 4 :(得分:-1)
您可以使用array_values($ _ GET)来获取新数组中从$ _GET中选择的值。然后,您可以使用foreach循环来迭代这些值。
foreach(array_values($_GET) as $selected) {
// Do things with $selected
}