Ajax und PHP, um mehrere Formulareingaben in die Datenbank einzugeben

Lesezeit: 5 Minuten

Ajax und PHP um mehrere Formulareingaben in die Datenbank einzugeben
Maisloch LI

Ich habe ein PHP-generiertes Formular mit mehreren Eingabefeldern, deren Anzahl durch die Benutzerauswahl bestimmt wird. Ich möchte eine Ajax-Funktion verwenden, um alle Daten in die Datenbank einzugeben. Das Problem ist, dass ich neu bei Ajax bin und mir nicht sicher bin, wie ich vorgehen soll. Die folgende Ajax-Javascript-Funktion ist ein Beispiel dafür, was ich erreichen möchte, und ich weiß, dass sie nicht korrekt ist. Kann mich jemand in die richtige Richtung weisen. Ich habe mich umgesehen und von dem, was ich sehe, könnte Json eine Lösung sein, aber ich weiß nichts darüber und wenn ich es nachlese, verstehe ich es immer noch nicht.

Beispiel-Ajax:

function MyFunction(){

var i = 1;
var x = $('#num_to_enter').val();
   while (i <= x){
    var name = $('#fname[i]').val();
    var lname = $('#lname[i]').val();
    var email = $('#Email[i]').val();
    i++;
 }
    $('#SuccessDiv').html('Entering Info.<img src="https://stackoverflow.com/questions/20150130/images/processing.gif" />');
     $.ajax({url : 'process.php',
    type:"POST",
   while (i <= x){
    data: "fname[i]=" + name[i] + "&lname[i]=" + lname[i] + "&email[i]=" + email[i],
    i++;
 }
     success : function(data){
    window.setTimeout(function()
    {
    $('#SuccessDiv').html('Info Added!');
    $('#data').css("display","block");
    $('#data').html(data);
    }, 2000);
        }
});
        return false;
          }

Ein Musterformular:

<?php

   echo "<form method='post'>";

   $i=1;

    while($i <= $num_to_enter){

    $form_output .= "First Name:

    <input id='fname' type="text" name="fname[$i]"><br />

     Last Name:

    <input id='lname' type="text" name="lname[$i]"><br />

    Email:

    <input id='Email' type="text" name="Email[$i]"><br />

    $i++;

   }

   echo"<input type="button" value="SUBMIT" onClick='MyFunction()'></form>";

   ?>

Then DB MySQL Sample


   <?php
       while ($i <= $x){

    $x = $_POST['num_to_enter'];
    $fname = $_POST['fname[$i]'];
    $fname = $_POST['fname[$i]'];
    $fname = $_POST['email[$i]'];

        $sql = "INSERT INTO `mytable` 
    (`firstname`, `lastname`, `email`) VALUES ('$fname[$i]', '$lname[$i]', '$email[$i]');";

    $i++;

    }

   ?>

  • Schauen Sie sich dieses JQuery-Plugin an … jquery.malsup.com/form

    – cmorrissey

    22. November 2013 um 16:49 Uhr

  • Christopher Morrissey ist nicht das, wonach ich suche!

    – Maisloch LI

    22. November 2013 um 16:52 Uhr

Ajax und PHP um mehrere Formulareingaben in die Datenbank einzugeben
AffeZeus

Hier ist eine einfache Demo von AJAX:

HTML

<form method="POST" action="process.php" id="my_form">
    <input type="text" name="firstname[]">
    <input type="text" name="firstname[]">
    <input type="text" name="firstname[]">
    <input type="text" name="firstname[custom1]">
    <input type="text" name="firstname[custom2]">
    <br><br>
    <input type="submit" value="Submit">
</form>

jQuery

// listen for user to SUBMIT the form
$(document).on('submit', '#my_form', function(e){

    // do not allow native browser submit process to proceed
    e.preventDefault();

    // AJAX yay!
    $.ajax({
        url: $(this).attr('action') // <- find process.php from action attribute
        ,async: true // <- don't hold things up
        ,cache: false // <- don't let cache issues haunt you
        ,type: $(this).attr('method') // <- find POST from method attribute
        ,data: $(this).serialize() // <- create the object to be POSTed to process.php
        ,dataType: 'json' // <- we expect JSON from the PHP file
        ,success: function(data){

            // Server responded with a 200 code

            // data is a JSON object so treat it as such
            // un-comment below for debuggin goodness
            // console.log(data);

            if(data.success == 'yes'){
                alert('yay!');
            }
            else{
                alert('insert failed!');
            }
        }
        ,error: function(){
            // There was an error such as the server returning a 404 or 500
            // or maybe the URL is not reachable
        }
        ,complete: function(){
            // Always perform this action after success() and error()
            // have been called
        }
    });
});

PHP-Prozess.php

<?php
/**************************************************/
/* Uncommenting in here will break the AJAX call */
/* Don't use AJAX and just submit the form normally to see this in action */

// see all your POST data
// echo '<pre>'.print_r($_POST, true).'</pre>';

// see the first names only
// echo $_POST['firstname'][0];
// echo $_POST['firstname'][1];
// echo $_POST['firstname'][2];
// echo $_POST['firstname']['custom1'];
// echo $_POST['firstname']['custom2'];

/**************************************************/

// some logic for sql insert, you can do this part

if($sql_logic == 'success'){

    // give JSON back to AJAX call
    echo json_encode(array('success'=>'yes'));
}
else{

    // give JSON back to AJAX call
    echo json_encode(array('success'=>'no'));
}
?>

  • MonkeyZeus Danke für die Antwort! Ich glaube, Sie haben den Teil verpasst, in dem es mehr als ein fname-Feld gibt und so weiter, also fname[I]. Liege ich falsch??

    – Maisloch LI

    22. November 2013 um 17:14 Uhr


  • AJAX hat kein Problem damit, die Eingabefelder zu veröffentlichen, die Sie benötigen. Es liegt an Ihnen, sie richtig zu handhaben, sobald PHP die Daten erhält. Bitte beachten Sie die Bearbeitung

    – AffeZeus

    22. November 2013 um 17:18 Uhr

  • MonkeyZeus Können wir uns unterhalten und ich zeige dir mehr von dem, womit ich arbeite??

    – Maisloch LI

    22. November 2013 um 22:06 Uhr

  • Hängt davon ab, in welcher Zeitzone Sie sich befinden, ich bin in New York. Ich bin auch gerade am Telefon und werde erst morgen irgendwann an einem Computer sitzen

    – AffeZeus

    23. November 2013 um 0:57 Uhr


  • Ich bin in New York und werde versuchen, dich 2moro zu erwischen

    – Maisloch LI

    23. November 2013 um 1:34 Uhr

var postdata={};
postdata['num']=x;
   while (i <= x){
    postdata['fname'+i]= name[i];
    postdata['lname'+i]= lname[i];
    postdata['email'+i]= email[i];

    i++;
}
 $.ajax({url : 'process.php',
    type:"POST",
    data:postdata,
    success : function(data){
    window.setTimeout(function()
    {
    $('#SuccessDiv').html('Info Added!');
    $('#data').css("display","block");
    $('#data').html(data);
    }, 2000);
        }
});

PHP

$num=$_POST['num'];
for($i=1;i<=$num;i++)
{
 echo $_POST['fname'.$i];
 echo $_POST['lname'.$i];
 echo $_POST['email'.$i];
}

  • Patato, gib mir etwas Zeit, damit zu arbeiten. Danke für die Antwort, melde mich zurück.

    – Maisloch LI

    22. November 2013 um 17:16 Uhr

  • Patato Ich denke, Sie sind auf dem richtigen Weg, ich habe Ihren Code mit ein paar Änderungen verwendet, weil ich mehr Felder als hier gezeigt habe. Führen Sie den Code durch jsLint und es werden zu viele Fehler angezeigt, um nach 30% fortzufahren. Außerdem funktioniert mit dem Code in der Datei kein anderes Javascript. Können wir uns unterhalten und ich zeige dir, was ich habe??

    – Maisloch LI

    22. November 2013 um 22:09 Uhr


  • @CornHoleLI Entschuldigung für die Verspätung, denn ich bin in China, es ist fast Mitternacht

    – Patato

    23. November 2013 um 16:07 Uhr

  • Palato, bist du da?

    – Maisloch LI

    23. November 2013 um 18:41 Uhr

  • Entschuldigung, Sie können mir eine E-Mail [email protected] senden

    – Patato

    24. November 2013 um 10:23 Uhr

964350cookie-checkAjax und PHP, um mehrere Formulareingaben in die Datenbank einzugeben

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy