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 値をループして、どのボックスが設定されているかを確認し、マーカーでチェックされている場合はデータベースを更新する必要があります。

チェックボックスが選択されているかどうかを確認するために isset を使用して、while ループの使用を検討しています。

$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)構文の値だけを提供します。

質問コードの構文エラーの修正:

2 番目のコードには、非常に明白な初歩的な構文エラーがあります。将来それらを避けることができるように、いくつか指摘します。

$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 に答える
-1

array_values($_GET) を使用して、新しい配列で $_GET から選択された値だけを取得できます。その後、foreach ループを使用してこれらの値を反復処理できます。

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