2012-01-24 6 views
1

私には2つの問題があります。最初の問題は、roomChosenが定義されていないこと、PHPエラーであること、テキストボックスの部屋番号がデータベース内の部屋番号と一致しない場合にjavascriptエラーを表示しないという通知が出されることです。バリデーションが表示されない

ここでアプリケーションを見てください:application

はcourseIdテキストボックスに「info101」を入力し、[送信]をクリックします。ページ内のすべての機能が表示されます。下部に「Prepare Questions」ボタンがあり、それをクリックすると下の空のテキストボックスを含むすべての検証メッセージが表示されます。今度はデータベースにないので、再度「Prepare Questions」ボタンをクリックすると、42のような部屋番号を入力すると、部屋が有効ではないというメッセージは表示されません。

なぜ機能しないのですが、どうして上に表示される通知が表示されるのですか?部屋のテキストボックスの

JavaScript検証:部屋のテキストボックスの値が値と一致するかどうかを確認しようとしているの

function validation() { 
    var isDataValid = true; 
    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; 

//above is if room textbox is empty 
    } else if(roomTextO.getAttribute("roomthere") == false) { 
     errRoomMsgO.innerHTML = "This Room is Invalid"; 
//above is if room number in textbox does not match database, which at moment it isn't working 

    } else { 
     errRoomMsgO.innerHTML = ""; 
    } 
    return isDataValid; 
} 

PHPコード

以下

は、それが内に表示され、正しい順序で、関連するコードを示しています以下は、データベース内の

<?php 
$username="xxx"; 
$password="xxx"; 
$database="mobile_app"; 
$room_there = true; 
$roomresult = mysql_query("SELECT Room FROM Room WHERE Room = " . (int) $_POST['roomChosen']); 
if (isset($_POST['roomChosen'])) { 
    $roomresult = mysql_query("SELECT Room FROM Room WHERE Room = " . (int) $_POST['roomChosen']); 
} else { 
    $room_there = false; 
} 
if(mysql_num_rows($roomresult) == 0) $room_there = false; 
?> 

ルームテキストボックスのHTML形式であり、タグ

にあるボタンを提出最後に、以下の
<p><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> 

それがクリックされた後、送信ボタン用のjavascriptハンドラである:

以下
function myClickHandler(){ 
    if(validation()){ 
     showConfirm(); // this is a function for a confirmation box 
    } 
} 

は私がISSETを使用しています方法については、以下の答えの1の編集です:

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

新しい質問を作成しないでください。代わりにこれを更新して編集してください。 – hugomg

答えて

0

1)使用する前に、$_POST['roomChosen']isset()かどうかを確認する必要があります。

2)試してみてください:すべての

roomTextO.getAttribute("roomthere") != 1; 
+0

/web/stud/u0867587/Mobile_app/T_STRINGまたはT_VARIABLEまたは '$'を期待して、パースエラー: create_session.php on line 286、私はissetを置いた場所に私の質問にコードを入れました – user1163005

0

まず$_POST['roomChosen']ためisset()チェックを追加します。データベース内のすべての部屋番号を取得する

if (isset($_POST['roomChosen'])) 
{ 
    $roomresult = mysql_query("SELECT Room FROM Room WHERE Room = " . (int) $_POST['roomChosen']); 
} 
else 
{ 
    $room_there = false; 
} 
+0

データベースで部屋番号を見つけることができない場合、これはもう必要ありません:if(mysql_num_rows($ roomresult)= = 0)$ room_there = false; – user1163005

+0

いいえ、あなたもそれが必要です。私のコードスニペットは '$ _POST'で変数が渡されたかどうかを調べます。 '$ roomresult = ...; 'の後にこれを' if'文に入れてください – devdRew

+0

「この部屋は無効です」という検証が表示されます。問題は、テキストボックスの値がデータベースの値と一致しても表示され、私の質問でJavaScriptの検証が表示され、phpコードを編集できるので、現在のPHPの外観を確認できます。 – user1163005

0

使用PHP、 はJS配列に入れます。たとえば :

<?php 
$query = .... 
while($data = mysql_fetch_array($query)) 
$js_var = $data.","; 
?> 
<script> 
var str = <?=$js_var?>; 
var myRooms =new Array(); 
myRooms = str.split(","); 
</script> 

今、あなたが投稿した値が配列かどうかに存在するかどうかを確認するためのJSを使用することができます。

関連する問題