php - 验证未出现

标签 php javascript

我有两个问题。第一个问题是,它会出现一条通知,指出 roomChosen 未定义,这是一个 php 错误,其次,如果文本框中的房间号与数据库中的房间号不匹配,它不会显示 javascript 错误。

请查看此处的应用程序:application

在 courseId 文本框中输入“info101”,然后单击“提交”。您将在页面中看到所有功能。在底部,您将看到一个“准备问题”按钮,单击它,您将看到所有验证消息,包括下面的空房间文本框。现在输入一个房间号,例如 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 的答案之一的编辑:

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) 您需要检查是否 $_POST['roomChosen'] isset()在尝试使用它之前。

2)尝试:

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

关于php - 验证未出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8986649/

相关文章:

php - SQL_ASCII 数据库不显示特殊字符

php - 用变量替换占位符的有效方法

Javascript 图像编辑器库

javascript - 如何查找并修复未定义属性的类型错误

javascript - 使用 Vanilla JS 的 CRC-16 校验和计算器

php - 检查名称是否为 "human"?

javascript - 需要密码/密码短语才能使用 Wordpress 查看类别内容

php - 短代码和 javascript 包含

javascript - 在函数片段中理解这个 javascript jquery 函数

javascript - 在自定义 Umbraco 数据类型中加载 $scope.model.value 时格式错误的 JSON