不使用javascript检索输入字段中的值以进行数据库插入

时间:2015-12-17 03:56:04

标签: javascript php html mysql

所以,首先,我要列出我引用的3段代码。

HTML:

<div id='newuserpage'>

    <h1><font color='white'>Create New User</font></h1>

    <div id='userbody'>
        <div id='userfields'>
            <div id='usernamelabel'>
                <font color='white'>Enter Username:</font>
                <input id='createfield1' type='text'>
            </div>

            <div id='passwordlabel'>
                <font color='white'>Enter Password:</font>
                <input id='createfield2' type='password'>
            </div>

            <div id='usertype'>
                <br>
                <font color='white'>User Type:</font>
                <select name="typeofuser" id='type'>
                    <option value="2">Student</option>
                    <option value="1">Teacher</option>
                </select>
                <br><br>
            </div>
        <button id = 'newuserbutton' onclick='createuser()'>
            Submit
        </button>

        <button id = 'backtomenu' onclick = 'backtomenu()'>
            Back to Teacher Menu
        </button>

Javascript功能

function createuser()
{
var newuser;
var newpass;

// check browser type
if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
    xmlhttp = new XMLHttpRequest();
} else { // code for IE6, IE5
    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}


newuser = document.getElementById("createfield1").value;
newpass = document.getElementById("createfield2").value;

xmlhttp.onreadystatechange = function() {
if ((xmlhttp.readyState == 4) && (xmlhttp.status == 200)) {

        if (xmlhttp.responseText == '1') { //Connected properly
            var createdmessage= document.getElementById('createdmessage');
            createdmessage.style.visibility= 'visible';
        }
        if (xmlhttp.responseText == '2') {
            var loginpage = document.getElementById('loginbox');
            loginpage.style.display = 'block';
            }
         else {
            // show error message
            loginlabelerror.style.visibility = 'visible';
        }
    }
}

// call php function
xmlhttp.open("GET","createuser.php");
xmlhttp.send("username=" + encodeURIComponent(newuser) + "&password=" + encodeURIComponent(newpass));

//var createdmessage= document.getElementById('createdmessage');
//createdmessage.style.visibility= 'visible';

}

处理插入的PHP页面

<?php

$q=$_GET["username"];
$p=$_GET["password"];
$t=$_GET["type"];

$host="xxx"; // Host name 
$username="xxx"; // Mysql username 
$password="xxx"; // Mysql password 
$db_name="xxx"; // Database name 

// Connect to server and select databse.
$link = mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$db_name",$link)or die("cannot select DB");


$sql="INSERT INTO users (username, password, type) VALUES('".$q."', '".$p."', 2)";

$retval = mysql_query($sql);
if(! $retval)
{
    echo 2;
}

    echo 1;

mysql_close($link);
?>

我遇到的问题是,它实际上从未实际从createfield1和createfield2输入区域中提取值。它只是将空字符串抛出到数据库中。

(忽略下拉菜单,这是我们一直在玩的东西,但并不是真的需要。)

据我所知,可以在网上找到,我做过的工作应该是什么?除非我完全误解了某些内容,否则我不知道为什么它实际上没有检索输入到输入字段中的值。

出于外部源的演示目的,我想要允许空白字段作为&#34; passthrough&#34;它实际上并没有做任何事情。手头的问题是,即使有一个例子:

ASDF

1234

进入两个输入字段,当按钮调用函数发送要插入的信息时,它不会提取这些值,而只是使用空字符串。我不希望值检查需要它不使用空字符串,人们会认为应该在字段中提取值。

1 个答案:

答案 0 :(得分:0)

稍微偏离主题,创作活动应始终发布,而不是获取。 http://www.w3schools.com/tags/ref_httpmethods.asp(有更多有信誉的消息来源,但即使他们同意)

更重要的是......修改您的发送电话..

xmlhttp.open("GET","createuser.php");

xmlhttp.open("GET","createuser.php?username=" + encodeURIComponent(newuser) + "&password=" + encodeURIComponent(newpass));

您仍然需要调用send方法。

考虑改为发帖请求:http://www.w3schools.com/ajax/ajax_xmlhttprequest_send.asp

至少对我来说,post / get的首要原因是get可以在没有提示的情况下重新运行。帖子至少会警告用户,当涉及到帐户创建时,会发出警告。