0

次のコードは、[16 人未満] チェックボックスがオンの場合は query1 を実行し、[16 以上] チェックボックスがオンの場合は query2 を実行します。これは完全に機能します。

<?php
//error_reporting (E_ALL ^ E_NOTICE);
$conn = mysql_connect('localhost','student','student') or die(mysql_error());
mysql_select_db('vgs',$conn);

//Get Question 1
if (isset($_GET['q1option'])) 
{
    $q1option = $_GET['q1option'];
} 
else 
{
    $q1option = "Null";
}

echo("".$_GET['q1option']);
echo("".$q1option);

//Process Question 1
if ($q1option == "Less than 16") 
{
    $query1 = "UPDATE free_hours SET times_selected=times_selected+1 WHERE q1option='Less than 16'";
    $result1 = mysql_query($query1,$conn) or die(mysql_error());
}
if ($q1option == "16 or more") 
{
    $query2 = "UPDATE free_hours SET times_selected=times_selected+1 WHERE q1option='16 or more'";
    $result2 = mysql_query($query2,$conn) or die(mysql_error());
}

ただし、$_GET['q1option'] を echo すると、次のエラーが発生します。

「通知: 未定義のインデックス: 16 行目の C:\wamp\www\Student\vgs\process_answers.php の q1option」

16行目は次のとおりです。

echo("".$_GET['q1option']);

また、$q1option をエコーすると、16 未満がチェックされていて「times_selected」の値が増加している場合でも、常に「Null」という単語がエコーされます。

ここで何が問題なのですか?

助けてくれてありがとう。

ダニエル

4

2 に答える 2

0

最初:ラップ

echo("".$_GET['q1option']);

の中へ

    if(isset($_GET['q1option'])){
      echo("".$_GET['q1option']);
    }

通知を取り除くために、 $_GET が何かを保持していない場合は、フォームを送信するためにまたはを使用していることを確認し、誤って2つのフォームを配置して別のフォームを送信しようとしないでください;)。ここでは、コード全体 (フォーム ファイル + process_answers.php) が役立ちます。

于 2013-03-08T12:22:42.107 に答える
0

GET問題は、 というパラメータを受け取っていないことですq1option。クライアント側のコードをデバッガーでチェックし、送信されていることを確認してください。

次のようにして、サーバー側で受信しているものを確認できます。

error_log('$_GET: '.print_r($_GET, true));

(または、安全な環境にいる場合は、エコーアウトすることもできます)。

于 2013-01-04T02:37:39.633 に答える