2016-05-03 14 views
0

Ich versuche, die beste Zeile zu finden. Ich muss die Tabellenzeile mit den Eingabefeldern mit JS verknüpfen können, damit mehrere Elemente gleichzeitig eingegeben werden können Form, aber ich muss irgendwie jeder Eingabe einen eindeutigen Namen haben, um mit PHP zu zielen. Von dort muss ich auf die jeweils eine Insert-Anweisung ausgeführt in eine mySQL db einfügen .. Im Art von Hinzufügen von Zeilen und Ausführen mehrerer mySQL-Abfragen

hier

stapfte ======================

<form action="" method="post" id="myForm"> 
     <table class="addTable"> 
      <tr> 
       <th>Title</th> 
       <th>Type</th> 
       <th>Quantity</th> 
       <th>Customer Price</th> 
      </tr> 
      <tr> 
       <td> 
        <input type="text" name="name" placeholder="Title" maxlength="60" value="<?php echo $_POST['name']; ?>"> 
       </td> 
       <td> 
        <input type="text" name="type" placeholder="Type" maxlength="20" value="<?php echo $_POST['type']; ?>"> 
       </td> 
       <td> 
        <input type="number" name="qty" placeholder="QTY" max="100" value="<?php echo $_POST['qty']; ?>"> 
       </td> 
       <td> 
        <input type="text" name="price" placeholder="Price" value="<?php echo $_POST['price']; ?>"> 
       </td> 
      </tr> 
     </table> 
    </form> 
+0

Dies ist eher eine konzeptionelle Sache Frage. Was ist der beste Weg, dies zu tun? –

+0

haben Sie in Betracht gezogen, mit Array-Variablen zu arbeiten? Verwenden Sie ie. 'Qty []' als das 'name' Attribut in Ihrem HTML. Keine Notwendigkeit für eindeutige Namen, und PHP behandelt es schön als ein Array, wenn Sie '$ _GET ['qty']' '. – Pevara

+0

"Machen Sie jeder Eingabe einen eindeutigen Namen": Können Sie bitte erklären, was Sie damit meinen? Meinst du eine eindeutige Zeilennummer? – Webomatik

Antwort

0

Sie ein Array als Namen, zum Beispiel verwenden können:

<form action="" method="post" id="myForm"> 
     <table class="addTable"> 
      <tr> 
       <th>Title</th> 
       <th>Type</th> 
       <th>Quantity</th> 
       <th>Customer Price</th> 
      </tr> 
      <tr> 
       <td> 
        <input type="text" name="name[]" placeholder="Title" maxlength="60" value="<?php echo $_POST['name']; ?>"> 
       </td> 
       <td> 
        <input type="text" name="type[]" placeholder="Type" maxlength="20" value="<?php echo $_POST['type']; ?>"> 
       </td> 
       <td> 
        <input type="number" name="qty[]" placeholder="QTY" max="100" value="<?php echo $_POST['qty']; ?>"> 
       </td> 
       <td> 
        <input type="text" name="price[]" placeholder="Price" value="<?php echo $_POST['price']; ?>"> 
       </td> 
      </tr> 
     </table> 
    </form> 

Dann können Sie so etwas wie verwenden:

<?php 
for($i = 0; $i < count($_POST['name']; $i++) { 
    $name = $_POST['name'][$i]; 
    $type = $_POST['type'][$i]; 
    $qty = $_POST['qty'][$i]; 
    $price = $_POST['price'][$i]; 
    // make your query here 
} 

Auch ein kleiner Hinweis: in Ihrem HTML-Code nicht direkt $ _POST-Werte Echo, zuerst überprüfen, ob sie existieren, e. G. <?= isset($_POST['price'])?$_POST['price']:""?>

Die <?= ist eine Abkürzung für <?php echo

Der isset($_POST['price'])?$_POST['price']:"" Teil eine Abkürzung für if-else Anweisung. (Es ist ternary operator genannt)

Es bedeutet dasselbe wie folgt aus:

if(isset($_POST['price'])) { 
    echo $_POST['price']; 
} else { 
    echo ""; 
} 

Und die isset() selbst überprüft, ob die Variable (oder Array-Schlüssel in diesem Fall) besteht.

EDIT: Aktualisierte Informationen über

Anhängen Wenn Sie jQuery verwenden können, ist es einfach. Wenn Sie es nicht verwenden, starten Sie es :)

<script> 
$(document).ready(function() { 
    $('.some-class-of-your-button').click(function() { 
    $('.addTable').append($('.addTable tr:nth-child(2)').clone()); 
    $('.addTable tr:last-child input').val(""); 
    }); 
}); 
</script> 

ersetzen some-class-of-your-button mit einer Klasse, die Ihre Schaltfläche hat. Die Schaltfläche muss sich außerhalb der Tabelle befinden, damit dies funktioniert.

+0

Das hilft viel .. Gibt es eine einfache Möglichkeit, eine weitere Zeile der Eingänge mit JS anhängen? –

+0

Aktualisiert meine Antwort. –

+0

Noch besser .. aber wie setze ich dann den Namen jeder Eingabe mit JQuery .. zum Beispiel sollte der erste Name sein = "name [1]" und dann name = "name [2]" und so weiter –

Verwandte Themen