0

如何使用 $_GET 从 URL 栏中返回值?

复选框在表格中打勾,这是与 $_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; }

当我点击提交时,股票代码进入 URL 栏,如下所示:

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;

到目前为止还不是很成功......想知道是否有更好的方法来做到这一点,比如使用数组?

4

5 回答 5

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
    }   
}
于 2013-02-12T21:51:57.077 回答
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)语法值。

修复问题代码中的语法错误:

在第二个代码中,您有非常明显的初学者语法错误。我将指出一些,以便您将来避免它们:

$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!!
于 2013-02-12T21:52:49.247 回答
0

如果我了解您正在尝试做什么,那么当您遍历潜在“选择”(即,$_GET['select'.$i])的数量时,您可以将 $i's 添加到具有以下内容的数组中:

if (isset($_GET['select'.$i])) {  
  $my_array[] = $i;  
}

然后,您可以循环$my_array并勾选与以下内容相关联的复选框$i

foreach($my_array as $checked) {
  // do your checkbox stuff
}
于 2013-02-12T22:02:07.687 回答
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;
 }

}

注意:如果您可以使用 $_POST 而不是使用 $_GET 您的表单,您只需将字段名称从 select74 更改为 select[74] 这样 $_POST 将有一个数组调用 select 其中键是 74 和值 DFC120

于 2013-02-12T22:03:08.167 回答
-1

您可以使用 array_values($_GET) 在新数组中仅获取从 $_GET 中选择的值。然后,您可以使用 foreach 循环来迭代这些值。

foreach(array_values($_GET) as $selected) {
  // Do things with $selected
}
于 2013-02-12T22:00:19.647 回答