繁体   English   中英

打开页面时出现通知错误

[英]I get a notice error when I open up my page

希望这个问题有道理。 如果在文本框中输入的房间号在数据库中,我想使用javascript显示消息。 如果它在数据库中,则不显示任何内容(“”),如果它不在数据库中,则显示消息“房间无效”。

问题是当我打开存储文本框的页面时,它会发出一条通知说:

注意:未定义的索引:roomChosen在第287行的/web/stud/Mobile_app/create_session.php中

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

第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进行准备好的查询,因此您不会意外地打开安全漏洞。

这是一个PHP问题,您可以在第287行的create_session.php中找到它。

什么是hapenning是你使用数组而不是初始化它。

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

$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();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM