Переменная всегда возвращает слово Null

Следующий код выполняет запрос1, если установлен флажок «Меньше 16», и выполняет запрос2, если установлен флажок «16 или более». Это работает отлично.

<?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'].

«Уведомление: неопределенный индекс: q1option в C:\wamp\www\Student\vgs\process_answers.php в строке 16»

Строка 16 такова:

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

Кроме того, когда я вывожу $q1option, он всегда выводит слово «Null», даже если проверено «Меньше 16» и значение «times_selected» увеличивается.

В чем проблема?

Спасибо за любую помощь.

Даниэль


person dacudo    schedule 04.01.2013    source источник
comment
Не могли бы вы показать свой HTML-код формы, которая вызывает это?   -  person David Robinson    schedule 04.01.2013
comment
Вы действительно не должны делать NULL строкой, как вы делаете здесь $q1option = "Null"; См. здесь, что такое NULL: php.net/manual/en/language.types.null.php   -  person cryptic ツ    schedule 04.01.2013
comment
Это ты написал этот код?   -  person Shoe    schedule 08.03.2013


Ответы (2)


Проблема в том, что вы не получаете параметр GET с именем q1option. Проверьте код на стороне клиента с помощью отладчика и убедитесь, что он отправляется.

Вы можете увидеть, что вы получаете на стороне сервера, выполнив что-то вроде:

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

(в качестве альтернативы вы можете повторить это, если находитесь в безопасной среде).

person Madbreaks    schedule 04.01.2013
comment
В верхней части вашего файла PHP. - person Madbreaks; 04.01.2013
comment
Я так сделал и ничего не изменилось. Я разместил соответствующий код формы в комментарии выше, если это поможет. - person dacudo; 04.01.2013
comment
я повторил это, и это появилось: $_GET: Array() - person dacudo; 04.01.2013
comment
Должен ли он повторяться: $_GET: q1option? - person dacudo; 04.01.2013
comment
Верно, Array() говорит вам, что GET параметры не получены от вашего кода на стороне клиента. Так что сосредоточьтесь на своем HTML. Кроме того, стандартной практикой StackOverflow является голосование за любые ответы, которые вы считаете полезными. - person Madbreaks; 04.01.2013
comment
Я не могу проголосовать, потому что мне нужно сначала 15 репутации. Мне очень жаль, но я ценю помощь. Можете ли вы взглянуть на HTML-форму выше? Ниже приведен код JavaScript, встроенный в HTML. Он использует JQuery. $(document).ready(function() { // bind 'vgsForm' and provide a simple callback function $('#vgsForm').ajaxForm(function() { $('#Suggestion').load('process_answers.php'); }); }); - person dacudo; 04.01.2013

первое: обернуть

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

в

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

чтобы избавиться от уведомления, тогда, если ваш $_GET ничего не содержит, убедитесь, что вы используете или отправляете свою форму, и вы случайно не пытаетесь поместить две формы и отправить еще одну;). Весь код (файл формы + process_answers.php) тут бы точно помог.

person Jan Myszkier    schedule 08.03.2013