2016-05-20 17 views
1

Ich habe ein Admin-Panel, wo ich eine Option zum Hinzufügen eines Benutzers in die Datenbank haben. Ich habe ein Skript erstellt. Wenn Sie auf den Link Benutzer hinzufügen klicken, wird das Formular geladen, in dem Sie die Benutzerinformationen eingeben können. Die Sache ist, ich möchte auf der gleichen Seite den Code laden, der ausgeführt wird, wenn das Formular übermittelt wird.Load PHP-Formular beim Einreichen

Hier ist die js-Funktion, die die Datei geladen:

$(".add").on("click", function() { 
    $(".add-user-content").load("add-user-form.php") 
}); 

und hier ist die PHP-Form

Ich war nicht so klar, wollen
<form id="formID" action="add-user-form.php" method="post"> 
    <p>Add Blog Administrator:</p> 
    <input type="text" name="admin-user" value="" placeholder="username" id="username"><br> 
    <input type="password" name="admin-pass" value="" placeholder="password" id="password"><br> 
    <input type="email" name="admin-email" value="" placeholder="email" id="email"><br> 
    <input type="submit" name="add-user" value="Add User"> 
</form> 

<?php 
include '../config.php'; 

$tbl_name="blog_members"; // Table name 

if(isset($_POST['add-user'])){ 
    $adminuser = $_POST['admin-user']; 
    $adminpass = $_POST['admin-pass']; 
    $adminemail = $_POST['admin-email']; 

    $sql="INSERT INTO $tbl_name (username,password,email) VALUES('$adminuser','$adminpass','$adminemail')"; 
    $result=mysqli_query($link,$sql); 

    if($result){ 
     echo '<p class="user-added">User has been added successfully!</p>'; 
     echo '<a class="view-users" href="view-users.php">View Users</a>'; 
    }else { 
     echo "Error: ".$sql."<br>".mysqli_error($link); 
    } 

} 

?> 

Vielleicht

if($result){ 
    echo '<p class="user-added">User has been added successfully!</p>'; 
    echo '<a class="view-users" href="view-users.php">View Users</a>'; 
}else { 
    echo "Error: ".$sql."<br>".mysqli_error($link); 
} 

diesem Code I auf der gleichen Seite ausgegeben werden, auf der ich das Formular geladen habe, weil es mich gerade in die add-user-form.php bringt, wenn ich auf den Link klicke Schaltfläche "Senden"

Danke für Ihre Hilfe!

+0

'Last () 'hat seine Methode als GET, wenn keine Daten (als Objekt) übergeben wurden. Zeigen Sie sich am Ende von [dieser Seite] (http://api.jquery.com/load/), wie Sie die Funktion 'load()' POSTIEREN können. Oder verwenden Sie einfach [andere Ajax] (http://api.jquery.com/category/ajax/) verfügbare Funktionen – Chay22

Antwort

0

Was Sie suchen, ist das Formular mit AJAX anstatt HTML zu senden.

die Antwort Mit Submit a form using jQuery von tvanfosson

würde ich Ihre

<input type="submit" name="add-user" value="Add User"> 

mit

<button id="add-user-submit">Add User</button> 

ersetzen und dann ein onClick-Handler registrieren

$("#add-user-submit").on("click", function() { 
    $.ajax({ 
    url: 'add-user-form.php', 
    type: 'post', 
    data: $('form#formID').serialize(), 
    success: function(data) { 
       $(".add-user-content").append(data); 
      } 
    }); 
}); 

, um die tatsächliche Übermittlungsfunktion hinzuzufügen.

1

wenn Sie dies tun, wird der Code auf Pfosten zu Ihrer Seite weitergeleitet:

<form name="formID" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>" > 

Sie eine Validierung hinzufügen sollte, damit es die Form zeigen doest wenn Sie $ _POST [ ‚add-user‘] erhalten

0

Sie müssen Ihre für über Ajax senden. Alternativ müssen Sie nicht Formular html laden, verstecken Sie einfach das Formular und klicken Sie auf Hinzufügen, klicken Sie auf das Formular. Überprüfen Sie diesen Code. Hoffe, das hilft Ihnen: -

// Add User Button 
    <div class="color-quantity not-selected-inputs"> 
     <button class="add_user">Add User</button> 
    </div> 
    // Append form here 
    <div class="add_user_form"></div> 
    // for posting response here 
    <div class="result"></div> 

Script für die Verarbeitung Form und Anhängen Benutzerformular

<script> 
$(function(){ 
    $(".add_user").on("click", function() { 
     $(".add_user_form").load("form.php") 
    }); 
    $(document).on("submit","#formID", function(ev){ 
     var data = $(this).serialize(); 
     console.log(data); 
     $.post('handler.php',data,function(resposne){ 
      $('.result').html(resposne); 
     }); 
     ev.preventDefault(); 
    }); 
}); 
</script> 

form.php

<form id="formID" action="" method="post"> 
    <p>Add Blog Administrator:</p> 
    <input type="text" name="admin-user" value="" placeholder="username" id="username"><br> 
    <input type="password" name="admin-pass" value="" placeholder="password" id="password"><br> 
    <input type="email" name="admin-email" value="" placeholder="email" id="email"><br> 
    <input type="submit" name="add-user" value="Add User"> 
</form> 

handler.php

<?php 
include '../config.php'; 

$tbl_name="blog_members"; // Table name 

if(isset($_POST['add-user'])){ 
    $adminuser = $_POST['admin-user']; 
    $adminpass = $_POST['admin-pass']; 
    $adminemail = $_POST['admin-email']; 

    $sql="INSERT INTO $tbl_name (username,password,email) VALUES('$adminuser','$adminpass','$adminemail')"; 
    $result=mysqli_query($link,$sql); 

    if($result){ 
     echo '<p class="user-added">User has been added successfully!</p>'; 
     echo '<a class="view-users" href="view-users.php">View Users</a>'; 
    }else { 
     echo "Error: ".$sql."<br>".mysqli_error($link); 
    } 
    die; 
} 

?> 
+0

Danke für die Antwort. Ich habe versucht, dies zu tun und das Skript geht bis zur Konsole.Logdaten); Er gibt dies in die Konsole aus, geht aber nicht weiter und es wird nichts angezeigt. –

+0

können Sie versuchen, Konsole für Ajax-Anfrage zu überprüfen? –

Verwandte Themen