2017-01-05 1 views
1

Wenn ich ein Formular, dass ein Benutzer optional zusätzliche Felder hinzufügen kann, bin ich verwirrt, wie ich das verarbeiten sollte. Zum BeispielPhP SQL Umgang mit einem "Add More" -Option auf einem Formular

HTML

<input name="provider_name" type="text" /> 
<button class="add-more">Add Provider</button> 

Javascript/jQ

var addtlCounter = 0; 
$(".add-more").click(function(e){ 
    e.preventDefault(); 
    addtlCounter++; 
    $(this).before('<input name="provider_name_' + addtlCounter + '" type="text" />'); 
}) 

Offensichtlich wenn es nur EIN provider_name kann ich nur

INSERT INTO MyTable(value) VALUES ($_POST["provider_name"])

Aber je nachdem, wie viele Male Der Benutzer klickt auf einen Provider hinzufügen, ich bekomme ein Unk Anzahl von provider_name_*.

Irgendwelche Vorschläge auf, wenn ich gehe, um dieses Formular zu verarbeiten, kann ich sagen, wie viele zusätzliche Anbieter sie hinzugefügt und entsprechend eingefügt haben.

+0

vorsichtig sein, $ _POST Daten einzufügen, möchten Sie wahrscheinlich, es zu sanieren. – Pete

Antwort

1

Verwenden Sie HTML-Arrays.

<input name="provider_name[]" type="text" /> 
<button class="add-more">Add Provider</button> 

Dann in Ihrem PHP.

foreach($_POST["provider_name"] as $provider) 
{ 
    echo $provider; 
} 

Edit:

Um zwei verwandten Bereichen haben, können Sie ein Array innerhalb eines Arrays haben, aber die Namen indiziert werden müssen. Als solche:

<input name="providers[1][name]" type="text" /> 
    <input name="providers[1][number]" type="text" /> 
    <input name="providers[2][name]" type="text" /> 
    <input name="providers[2][number]" type="text" /> 
    <input name="providers[3][name]" type="text" /> 
    <input name="providers[3][number]" type="text" /> 
    <input name="providers[4][name]" type="text" /> 
    <input name="providers[4][number]" type="text" /> 
    <input name="providers[5][name]" type="text" /> 
    <input name="providers[5][number]" type="text" /> 

Das in diesem Array führen würde:

array(1) { 
    ["providers"]=> 
    array(5) { 
    [1]=> 
    array(2) { 
     ["name"]=> 
     string(0) "" 
     ["number"]=> 
     string(0) "" 
    } 
    [2]=> 
    array(2) { 
     ["name"]=> 
     string(0) "" 
     ["number"]=> 
     string(0) "" 
    } 
    [3]=> 
    array(2) { 
     ["name"]=> 
     string(0) "" 
     ["number"]=> 
     string(0) "" 
    } 
    [4]=> 
    array(2) { 
     ["name"]=> 
     string(0) "" 
     ["number"]=> 
     string(0) "" 
    } 
    [5]=> 
    array(2) { 
     ["name"]=> 
     string(0) "" 
     ["number"]=> 
     string(0) "" 
    } 
    } 
} 
+0

Was passiert, wenn ich mehrere Felder habe, wie zum Beispiel 'provider_name' und' provider_number', die beide miteinander in Beziehung stehen und eine weitere Zeile dieser beiden Felder hinzufügen können ?? –

+0

Ich werde eine Sekunde bearbeiten. – Phiter

+0

Werfen Sie einen Blick auf meine Bearbeitung – Phiter

Verwandte Themen