2016-06-13 3 views
0

Ich bin mir sicher, dass ich das falsch mache, also bin ich hier um zu fragen.Senden von doppelten Namenswerten in einem PHP-Formular

Ich habe ein Formular, das mehrere HTML-Formular sendet $_POST Schlüssel (name Attribut) und Werte (value Attribut).

Das sieht HTML wie folgt aus:

<input type="text" value="0" name="Quantity"> 

ich einige jQuery Multiplikation Preis von Quantität haben und sie in die Form einreichen.

.

Dieser Teil funktioniert gut. Dann sende ich beim Senden des Formulars einfach alle Daten und sende sie mit durch. Vereinfachtes Beispiel ...

$('form').on('submit', function (event) { 
event.preventDefault(); 

    var formValues = $(this).serialize(); 
    $.ajax({ 
    type: 'POST', 
    url: 'send.php', 
    data: formValues 
    }); 
}); 

Und die PHP sieht wie folgt aus

foreach ($_POST as $key => $value) { 
    $message .= $key.': '.$value. "\n"; 
} 

Also, alles richtig funktioniert (vereinfacht!) - das JavaScript aufaddiert alle Mengen und sendet sie an den PHP. Mein einziges Problem ist, dass Sie nicht mehrere name Attribute senden können, also muss ich sie für jede Eingabe ändern.

Also, ich denke, meine Frage ist, wie man das Namensattribut zu etwas besser lesbar in einer E-Mail ändern.

Mit anderen Worten, sendet die E-Mail, wie:

  • Produkt 1
  • Menge1: 10

  • Produkt 2

  • Quantity2: 12

und ich möchte es einfach sein ...

  • Produkt 1
  • Menge: 10

  • Artikel 2

  • Menge: 12
+0

Ihre Frage ist wirklich unklar. Was brauchst du eigentlich? Brauchen Sie eine Namenskonvention für die Menge? – Akshay

+1

Ich weiß nicht, wie Sie in JS darauf zugreifen würden, aber um ein Array in PHP zu bekommen, benutzen Sie 'name =" Quantity [] "'. Dann können Sie das '$ _POST ['Quantity']' Array loopen. – AbraCadaver

+0

In der E-Mail sendet es als "Quantity1: x, Quantity2: y'. Ich möchte es nur" Quantity "sagen, egal was. –

Antwort

2

Für alle Ihre Eingaben Sie können <input type="text" value="0" name="quantity[]"> tun und in Ihrer PHP

foreach($_POST['quantity'] as $quantity){ 
.... your stuff here 
} 

Scheint, wie Sie Ihre Produkte und Mengen sind in Ordnung und die gleiche Länge d.h für jedes Produkt gibt es nur ein Mengenfeld. Wenn das stimmt, können Sie beide in einer Schleife durchlaufen.

$quantities = $_POST['quantity']; // array of quantities 

$products = $_POST['products']; // array of products 

for ($i = 0; $i < count($_POST['quantity']); $i++){ 

    $quantity = $quantities[$i]; 
    $product = $products[$i]; 


.... do more stuff here 
} 
+0

Vielen Dank! Ich nehme an, mein Problem ist jetzt dass ich mehrere foreach-Schleifen machen muss - 'foreach ($ _ POST ['Produkt'] als $ Produkt)', 'foreach ($ _ POST ['Menge'] als $ Menge)' so listet es alle Produkte DANN alle Mengen auf , Anstatt von Produkt, Menge, Produkt, Menge. –

+1

aktualisierte die Antwort. –

+0

Schön! Ich danke dir sehr. Funktioniert perfekt. –

1

Ah das ist einfach, Sie können ein Namedd Array dafür verwenden.

Etwas wie folgt aus: -

<input type="text" value="0" name="quantity[]"> 

Jetzt in Ihrem php, können Sie die Werte auf diese Weise zugreifen.

if(is_array($_POST['quantity'])) 
{ 
foreach($_POST['quantity'] as $quantity) 
{ 
//access the quantity. 
//so the first time the loop runs, the quantity is for product 1 
//second time -> Product 2 
//and so on 
} 
} 
Verwandte Themen