2017-03-11 5 views
0

Ich habe eine multiple Eingabezeile erstellt, die das Hinzufügen und Entfernen von Zeilen mit Javascript erlaubt. HierWie fügt man mehrere Array-Datensätze in PHP ein?

ist der Code:

var field = 1; 
 

 
function plan_fields() { 
 

 
    field++; 
 
    var objTo = document.getElementById('plan_fields') 
 
    var divtest = document.createElement("div"); 
 
    divtest.setAttribute("class", "form-group removeclass" + field); 
 
    var rdiv = 'removeclass' + field; 
 
    divtest.innerHTML = '<div class="col-sm-4 nopadding"><div class="form-group"> <input type="text" class="form-control" id="plannumber" name="plannumber[' + field + ']" value="" placeholder="School name"></div></div><div class="col-sm-4 nopadding"><div class="form-group"> <input type="text" class="form-control" id="Degree" name="Degree[' + field + ']" value="" placeholder="Degree"></div></div><div class="col-sm-4 nopadding"><div class="form-group"><div class="input-group"> <select class="form-control" id="plandate" name="plandate[' + field + ']"><option value="">Date</option><option value="2015">2015</option><option value="2016">2016</option><option value="2017">2017</option><option value="2018">2018</option> </select><div class="input-group-btn"> <button class="btn btn-danger" type="button" onclick="remove_plan_fields(' + field + ');"> <span class="glyphicon glyphicon-minus" aria-hidden="true"></span> </button></div></div></div></div><div class="clear"></div>'; 
 

 
    objTo.appendChild(divtest) 
 
} 
 

 
function remove_plan_fields(rid) { 
 
    $('.removeclass' + rid).remove(); 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> 
 
<form action="?create" method="post"> 
 
    <div class="panel-body"> 
 
    <div id="plan_fields"> 
 

 
    </div> 
 
    <div class="col-sm-4 nopadding"> 
 
     <div class="form-group"> 
 
     <input type="text" class="form-control" id="plannumber" name="plannumber[0]" value="" placeholder="Plan Number"> 
 
     </div> 
 
    </div> 
 
    <div class="col-sm-4 nopadding"> 
 
     <div class="form-group"> 
 
     <input type="text" class="form-control" id="context" name="context[0]" value="" placeholder="Context represented on plan"> 
 
     </div> 
 
    </div> 
 

 

 
    <div class="col-sm-4 nopadding"> 
 
     <div class="form-group"> 
 
     <div class="input-group"> 
 
      <select class="form-control" id="plandate" name="plandate"> 
 
      
 
      <option value="">Date Completed</option> 
 
      <option value="2015">2015</option> 
 
      <option value="2016">2016</option> 
 
      <option value="2017">2017</option> 
 
      <option value="2018">2018</option> 
 
      </select> 
 
      <div class="input-group-btn"> 
 
      <button class="btn btn-success" type="button" onclick="plan_fields();"> <span class="glyphicon glyphicon-plus" aria-hidden="true"></span> </button> 
 
      </div> 
 
     </div> 
 
     </div> 
 
    </div> 
 
    <div class="clear"></div> 
 

 
    </div> 
 

 
    <div class="form-group"> 
 
    <div class="col-md-9 col-sm-9 col-xs-12 col-md-offset-3"> 
 
     <button type="submit" value="submit" class="btn btn-success">Add Plan</button> 
 
    </div> 
 
    </div> 
 

 
</form>

Nun, ich die Aufzeichnungen der mehrere Arrays hinzugefügt werden soll, aber ich bin hier stecken, so wie behebe ich meine PHP-Teil ?

<?php    
    $host  = "localhost"; 
    $username = "root"; 
    $password = ""; 
    $dbname = "project"; 

    if (isset($_GET['create'])) { 
    $link = mysqli_connect($host, $username, $password, $dbname) 
     or die('Could not connect: ' . mysqli_error()); 

    mysqli_select_db($link, $dbname) 
     or die('Could not select database'); 

    foreach($_POST as $key => $value) 
    { 
     if (strstr($key, '')) 
     { 
      $x = str_replace('',NULL,$key); 
      inserttag($value, $x); 
     } 
    } 

    $plannumber= $_POST['plannumber[]']; 
    $plan = $_POST['context[]']; 
    $date = $_POST['plandate[]']; 


    $query = "INSERT INTO plans 
      VALUES ($plannumber,'$date','$plan')"; 
    $result = mysqli_query($link, $query) or die('Could not connect: '); 

    $message = "Plan Added"; 
    echo "<script type='text/javascript'>alert('$message');window.location.href = 'plans.php';</script>"; 



    } 


?> 
+0

'plannumber' alleine und nicht' plannumber [] '? – Roljhon

+0

Sie sind offen für [SQL Injections] (http://php.net/manual/en/security.database.sql-injection.php) und sollten wirklich [Prepared Statements] (http://php.net/ manual/de/mysqli.quickstart.prepared-statements.php) anstelle der Verkettung Ihrer Abfragen. Besonders, da Sie den Benutzereingaben überhaupt nicht entkommen! –

+0

Mögliches Duplikat von [Mehrere Zeilen mit einer Abfrage MySQL einfügen] (http://stackoverflow.com/questions/12502032/insert-multiple-rows-with-one-query-mysql) - Diese Antwort funktioniert mit MySQLi und vorbereiteten Anweisungen als Gut. –

Antwort

0

Wenn Sie Array in der Tabelle speichern möchten, dann können Sie serialize($array) Funktion (ersetzen $ array mit Ihrem Array Variablenname) verwenden. Es wird serialisierte Daten zurückgeben, und dann können Sie dieses serialisierte Array speichern, und ich würde Ihnen eine vorbereitete Anweisung wärmstens empfehlen. Ihr Code ist sehr unsicher.

0

Zuerst benötigen Sie eine Variable, die Array-Wert enthält, dann implode der Array-Wert ein Leerzeichen-Trennzeichen, implode-Trennwert ist eine Zeichenfolge. dann können Sie den Trennzeichenwert einfügen. So

$plannumber= $_POST['plannumber[]']; 
$plannumber_separated = implode(" ", $plannumber); 
$plan= $_POST['context[]']; 
$plan_separated = implode(" ", $plan); 
$query = "INSERT INTO plansVALUES ($plannumber_separated,$plan_separated)"; 
+0

hat es nicht funktioniert, können Sie mir mehr helfen? – martinBibo

+0

Haben Sie einen Array-Wert eine Spalte einfügen ??? –

Verwandte Themen