簡體   English   中英

從表單中獲取用戶名,密碼和電子郵件,並使用它創建數據庫行

[英]Get username, password and email from a form and create database row with it

我一直在努力解決這個關於jQuery,php和mySQL之間通信的問題。

長話短說,我想把你的“注冊表”中的信息插入到我的數據庫中,如果你願意的話。

這是我在login.php中的表單:

<form action="login.php" method="post">
    <input type="text" name="username" id="username">
<br><br>
    <input type="password" name="password">
<br><br>
    <input type="text" name="email">
<br><br>
    <input type="submit" value="Register" class="submitRegistration"/>
</form>

當我按下Register按鈕時,我想要觸發它,這是在head.php中。

$(document).ready(function(){
    $(".submitRegistration").click(function(){
    var clickBtnValue = $(this).val();
    var username = $("#username").val();
    var password = $("#password").val();
    var email = $("#email").val();
    var ajaxurl = 'ajaxdisk.php';
    data = {'action': clickBtnValue};
    $.post(ajaxurl, data, function (response) {
        alert(response);
        });
    });

});

這是ajax.php中的數據庫連接和我想要運行的函數

$servername = "localhost";
$username = "root";
$password = "root";
$dbname = "swag";


// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}
//I have suspicions that this is where things go wrong, because it checks if 
//$_POST['action'] != NULL before it is defined, I want it to 
//do this WHEN the button is hit, not when the page loads.
if (isset($_POST['action'])) {
    switch ($_POST['action']) {
        case 'Submit':
            submit();
            break;
        case 'Register':
            register($conn);
            break;
    }
}
else {
    print("Error");
}

function submit() {
    echo "The submit function is called.(unfinished)";
    exit;
}

function register($cpnn) {
    echo "The register function is called.";
    $sql = "INSERT INTO MyGuests (username, password, email)
    -- Here i want the values from the textboxes to be, so it gets put     into the database
    VALUES (username, password, email)";
    if ($cpnn->query($sql) === TRUE) {
        echo "New record created successfully";
    }   
    else {
        echo "Error: " . $sql . "<br>" . $conn->error;
    }
}


   $conn->close();

我可能已經從無數個小時試圖解決這個問題搞砸了,但我真的希望你們其中一個人能夠理解它並認識到錯誤。

謝謝。

更改通過評論說明: -

你的html文件代碼如下: -

<form method="post">
    <input type="text" name="username" id="username">
<br><br>
    <input type="password" name="password" id="password"> <!-- id required -->
<br><br>
    <input type="text" name="email" id="email"> <!-- id required -->
<br><br>
    <input type="submit" value="Register" class="submitRegistration"/>
</form>
<script src="https://code.jquery.com/jquery-1.12.0.min.js"></script>
<script type = "text/javascript">
$(document).ready(function(){
    $(".submitRegistration").click(function(e){// e for event
    e.preventDefault(); // to stop form submission
    var clickBtnValue = $(this).val();
    var username = $("#username").val();
    var password = $("#password").val();
    var email = $("#email").val();
    $.post('ajaxdisk.php', {'action': clickBtnValue,"username":username,"password":password,"email":email}, function (response) {
        alert(response);
        });
    });
});
</script>

你的php文件(ajaxdisk.php)代碼如下: -

<?php
$servername = "localhost";
$username = "root";
$password = "root";
$dbname = "swag";
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}
if (isset($_POST['action'])) {
    $username = $_POST['username'];
    $password = $_POST['password'];
    $email = $_POST['email'];
    echo "The register function is called.";
    $sql = 'INSERT INTO `MyGuests` (username, password, email) VALUES ("'.(string)$username.'","'.(string)$password.'","'.(string)$email.'")';
    if ($conn->query($sql)) {
        echo "New record created successfully";
    }   
    else {
        echo "Error: ". $conn->error;
    }
}
?>

注意: - 問題出在您的switch代碼中(我無法找到答案)。 此外,您的值將以字符串形式出現,但在查詢中它不會被視為字符串(這對我來說也是可理解的,為什么會發生這種情況)

這段代碼肯定會對你有用。 檢查一次。

我的實際代碼: -

  1. http://prntscr.com/atqnpv

  2. http://prntscr.com/atqnye

  3. http://prntscr.com/atqob0

  4. http://prntscr.com/atqomw

首先你必須發布你的變量,所以你的api調用應該像這樣:

data = {'action': clickBtnValue, 'username': username, 'password': password, 'email': email};
$.post(ajaxurl, data, function (response) {
    alert(response);
    });
});

然后在您的PHP頁面中,您可以從$ _POST對象中檢索數據。

您的SQL字符串應如下所示:

INSERT INTO MyGuests (username, password, email) VALUES ($_POST['username'], $_POST['password'], $_POST['email'])

希望這對你有所幫助,再見!

現在你沒有將任何表單數據傳遞給php文件。 使用$('form')。serialize()並將所有數據傳遞給php文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM