2016-04-18 12 views
1

Ich habe versucht, dieses Problem zu lösen Ich habe in Bezug auf die Kommunikation zwischen jQuery, PHP und mySQL.Holen Sie sich Benutzername, Passwort und E-Mail aus einem Formular und erstellen Sie damit eine Datenbankzeile

Lange Rede, kurzer Sinn, ich möchte die Informationen in mein "Registrierungsformular" einfügen, wenn du willst, in meine Datenbank über PHP.

Dies ist meine Form, in 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> 

Und ich will diese ausgelöst werden, wenn ich die Register-Taste drücken, das in head.php ist.

$(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); 
     }); 
    }); 

}); 

Dies ist die Datenbankverbindung in ajax.php und die Funktion I

$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(); 

ich wahrscheinlich messed it up irgendwie von den unzähligen Stunden versuchen, dieses Problem zu lösen, aber ich wirklich ausgeführt werden soll Ich hoffe, einer von euch kann einen Sinn daraus machen und den Fehler erkennen.

Danke.

+0

Was passiert eigentlich, wenn Sie auf register drücken? –

+0

Sie geben keine Informationen (außer dem Namen der Schaltfläche) an den AJAX-Anruf weiter. –

+1

Warum nicht den Code zurückschneiden und alles vollständig testen? Überprüfen Sie Ihre Formular-Posts, wo es zu posten ist, überprüfen Sie Ihre Fehler-Konsole, wenn Sie AJAX verwenden, können Sie dies leicht selbst debuggen –

Antwort

2

Änderungen durch Kommentar werden angegeben: -

Ihre HTML-Datei wie unten sein wird: -

<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> 

Ihre PHP-Datei (ajaxdisk.php) Code wie unten sein wird: -

<?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; 
    } 
} 
?> 

Hinweis: - das Problem ist in Ihrem switch Code (ich bin una blue um herauszufinden, was). Auch Ihre Werte kommen als String, aber in der Abfrage wird nicht als String behandelt (dies ist auch in-verständlich für mich, warum dies passiert)

Dieser Code wird für Sie sicher funktionieren. Einmal prüfen.

Mein eigentlicher Code: -

  1. http://prntscr.com/atqnpv

  2. http://prntscr.com/atqnye

  3. http://prntscr.com/atqob0

  4. http://prntscr.com/atqomw

+0

Das hat funktioniert, vielen Dank. Kannst du bitte die Änderungen erklären, die du gemacht hast und warum sie es geschafft haben? – Grymfogel1

0

gerade übergeben Sie keine Formulardaten an PHP-Datei. Verwenden Sie $ ('form'). serialize() und übergeben Sie alle Daten an die php-Datei.

1

Zunächst einmal müssen Sie Ihre Variablen zu schreiben, damit Ihre api Aufruf wie folgt somethig sein shoud:

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

dann in Ihre PHP-Seite, die Sie shud der Lage sein, Daten von _POST Objekt $ abzurufen.

Ihre SQL-Zeichenfolge shoud wie folgt aussehen:

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

Hoffnung, dies hilft Ihnen, Bye!

+0

Ich werde das versuchen. – Grymfogel1

+0

@ Grymfogel1 überprüfen Sie bitte meine umgeschriebene Antwort. es funktioniert an meinem Ende –