2012-03-30 4 views
0

Я пытаюсь вставить $ teacherId в поле «TeacherId» в базе данных, но для этого ему нужно найти имя пользователя учителя «TeacherUsername», чтобы иметь возможность найти правильный TeacherId который соответствует имени пользователя учителя.Как исправить эту ошибку неопределенного уведомления

Проблема заключается в том, что я получаю уведомление о том: Примечание: Undefined индекс: teacherusername в /Mobile_app/QandATable2.php на линии 27, которая находится здесь:

$teacherid = "SELECT TeacherId FROM (SELECT TeacherUsername from Teacher where TeacherUsername = '".mysql_real_escape_string($_POST['teacherusername'])."')"; 

Почему это дает мне это уведомление, потому что нет ничего плохого в методе $ _POST, и он работает на дне здесь:

<?php echo $_POST['teacherusername']); ?> 

Ниже приведен полный код:

<?php> 

    session_start(); 

     $username="xxx"; 
     $password="xxx"; 
     $database="mobile_app"; 

     mysql_connect('localhost',$username,$password); 

     @mysql_select_db($database) or die("Unable to select database"); 

     $teacherid = "SELECT TeacherId FROM (SELECT TeacherUsername from Teacher where TeacherUsername = '".mysql_real_escape_string($_POST['teacherusername'])."')"; 

     $sql="INSERT INTO Session (TeacherId) 
     VALUES 
     (' ". mysql_real_escape_string($teacherid) . "')"; 

     mysql_query($sql); 

     mysql_close(); 
?> 

<?php echo $_POST['teacherusername']); ?> 
+0

Что в '$ _POST'? Можете ли вы сделать 'print_r ($ _ POST)'? Имейте в виду, что индексы массива чувствительны к регистру. – Brad

+0

У вас может быть невидимый символ в первом '$ _POST ['teacherusername']'. Попробуйте удалить его и переписать его. – MichaelRushton

+0

В $ _POST ['teacherusername'] он отправляет имя пользователя, которое учитель ввел в текстовое поле на предыдущей странице. Так, например, я набрал «j.lu» в текстовом поле, и когда я отправляю форму, она отображается в эхом, вы видите «j.lu». Таким образом, $ _POST работает, но он не распознает его в запросе, который я пытаюсь сделать. – user1394925

ответ

1

Если этот сценарий запускается ТОЛЬКО при возникновении POST, и вы убеждены, что имя_учреждения ДОЛЖНО быть установлено, вы можете захотеть var_dump ($ _ POST) и дважды проверить, что форма действительно передает поле имя_изыка.

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

<?php 
if (isset($_POST) && isset($_POST['teacherusername'])) { 
    echo $_POST['teacherusername']; 
} 
?> 

Это только отзовется индекс пост пост устанавливается и поэтому поле под вопросом. Вы могли бы даже добавить else для правильной обработки ошибки. Например, отправка сообщения «это поле обязательно».

Надеется, что это помогает,

ISE

+0

Правильно, сделал дамп var, и он пришел с NULL. Но я меняю $ _POST на $ _SESSION, потому что я упомянул об этом внизу if (isset ($ _ POST ['teacherusername']) {$ _SESSION ['teacherusername'] = $ _POST ['teacherusername']; }. но проблема в том, что в базе данных он должен указать «T1» в поле TeacherId, но вместо этого он указывает «SEL». Что это значит? – user1394925

+0

Если var_dump ($ _ POST) имеет значение null, то вы неправильно отправляете свою форму. Убедитесь, что тэг

правильно сформирован с помощью метода attribute = "post". – ise

Смежные вопросы