2012-01-24 29 views
0

希望這個問題有道理。如果在文本框中輸入的房間號碼在數據庫中,我想使用javascript顯示一條消息。如果它在數據庫中,則不顯示任何內容(「」),如果它不在數據庫中,則顯示消息「房間無效」。當我打開我的頁面時收到通知錯誤

的問題是,雖然當我打開其中的文本保存頁面時,它與公告稱出現:

公告:未定義的索引:在/ web /螺柱/ Mobile_app /建立事務roomChosen。 php on line 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 validat離子的房間號文本框:

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 = ""; 
      } 

回答

1

只是檢查,看看是否值是那裏第一次做所有你的邏輯了。

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

而且,當你現在鑄造用戶輸入到int安全,你可能學會做準備的查詢與PDO,所以你不小心打開了一個安全漏洞。

+0

你要我把這個代碼,以便它檢查此當頁面打開或之後點擊提交按鈕? – user1163005

+0

你會把它放在PHP腳本的正上方,在287行上,使行號碼爲288. – buley

+0

完全一樣,通知仍然存在,因爲就像我說過的我不想在頁面打開之前發佈任何內容,我想點擊提交按鈕後發佈一些東西 – user1163005

1

這是一個PHP的問題,你會發現在create_session.php發生在線路287上

什麼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(); 
} 
+0

但是就像我說過的,我不想在打開頁面之前發佈任何內容,我希望在點擊提交按鈕後發佈一些內容。此時,它正試圖在文本框中發佈房間號碼,然後用戶有機會在文本框中輸入房間號碼 – user1163005

+1

您似乎基本上將JavaScript和PHP在您的應用程序中的作用混淆了。 PHP發生在服務器端,並且與客戶端單擊按鈕或輸入房間號碼無關。這個錯誤發生在PHP中,如果你在瀏覽器中看到它,可能是因爲你正在記錄/提醒PHP應用程序響應的內容。 – buley

+0

我應該以正確的順序發佈我的代碼,以便您可以看到代碼是如何顯示的? – user1163005

相關問題