如何在php中从URL获取重复参数的值?

时间:2013-02-12 21:45:41

标签: php url get

如何使用$ _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;

到目前为止还不是很成功...想知道是否有更好的方法可以像使用数组那样做?

5 个答案:

答案 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
}