当我打开页面时,我收到一个通知错误


I get a notice error when I open up my page

希望这个问题有意义。如果在文本框中输入的房间编号是否在数据库中,我希望使用javascript显示一条消息。如果它在数据库中,则不显示任何内容("),如果它不在数据库中则显示消息"Room is Invalid"。

问题是,当我打开存储文本框的页面时,会出现一条通知,上面写着:

注意:未定义的索引:在/web/stro/Mobile_app/create_session.php的第287行中选择房间

现在我相信它声明这个错误的原因是因为在打开这个页面之前没有发布任何内容。这是假设张贴在文本框中输入的房间号,但很明显房间号的文本框在同一页上,因此在打开页面之前无法张贴。我想要的是用户这样做:

步骤1:在文本框中输入房间编号

步骤2:点击提交按钮

步骤3:检查文本框中的房间号是否在数据库中

步骤4:根据房间号码是否在数据库中显示消息

所以我想知道的是,我如何存储php编码,以便在单击提交按钮后检查文本框中的房间号是否在数据库中?

以下是房间编号文本框和提交按钮的html:

//textbox where room number is entered in
<p><strong>10: Room:</strong> <input type="text" id="room" name="roomChosen" roomthere="<?php echo $room_there; ?>" />
//message displayed if room number is in database or not
<br/><span id="roomAlert"></span></p>  

// submit button 
<p><input class="questionBtn" type="button" value="Prepare Questions" name="prequestion" onClick="myClickHandler()"/></p>

下面是php,它检查文本框中的房间号是否在数据库中:

$room_there = true;
$roomresult = mysql_query( "SELECT Room FROM Room WHERE Room = " . (int) $_POST['roomChosen']);
if( mysql_num_rows( $roomresult ) == 0 ) $room_there = false;

以下是点击提交按钮时处理该按钮的处理程序:

function myClickHandler(){
    if(validation()){
        showConfirm();
    }
}

房间号文本框的Javascript验证:

var roomTextO = document.getElementById("room"); 
var errRoomMsgO = document.getElementById("roomAlert");
          if (roomTextO.value == ""){
          errRoomMsgO.innerHTML = "Please Enter in a Room Number";
          isDataValid = false;
            }else if (!trimmedRoomText.length){
          errRoomMsgO.innerHTML = "Please Enter in a Room Number"; 
          isDataValid = false;  
      }else if(roomTextO.getAttribute("roomthere") == false){
          errRoomMsgO.innerHTML = "This Room is Invalid"; 
        }else{
                errRoomMsgO.innerHTML = ""; 
            }

在执行所有逻辑之前,只需先检查值是否存在。

if (!empty($_POST['roomChosen'])) {
    // Check database, and output whatever you need here
}

此外,虽然现在通过将用户输入强制转换为int来确保安全,但您可能会学会使用PDO进行准备好的查询,这样就不会意外地打开安全漏洞。

这是发生在create_session.PHP第287行的PHP问题。

结果是,您使用的是一个数组,而没有对其进行初始化。

例如,我可以通过键入以下内容来抛出此错误:

$arr = '';
$arr[ 'notgoingtohappen' ] = 'arr var is a string here, not an array';

这种情况也往往发生在多维数组上。例如:

$arr = array();
$arr[ 'notgoingtohappen' ][ 'error' ]; 'the first part here is ok, second is not.'

要更正任何一个实例,只需调用var。例如,在上一个实例中,如果在第2行之前调用,那么下面的行将解决问题:

$arr[ 'notgoingtohappen' ] = array();

当使用以$variables为键的多维数组时,有时您不知道该数组是否已初始化。在这些情况下,可以这样做以防止压扁任何数组:

if( !is_array( $arr[ 'notgoingtohappen' ] ) ) {
     $arr[ 'notgoingtohappen' ] = array();
}