2016-06-03 14 views
0

Das Problem tritt auf, wenn ich mehr als eine Bestellung auf einer Seite wiederhole und abschicke. Das ist meine Form:Wie mache ich mehrere Arrays zu einem?

<input name="checkOrder['.($row['ord_no']).'][ord_no]" value="'.($row['ord_no']).'" type="checkbox" class="checkOrder" id="checkOrder"> 
     <input type="hidden" name="checkOrder['.($row['ord_no']).'][item_seq_no]" value="'.$line_number.'" /> 
     <input type="hidden" name="checkOrder['.($row['ord_no']).'][item_no]" value="'.$item_number.'" /> 
     <input type="hidden" name="checkOrder['.($row['ord_no']).'][item_desc_1]" value="'.$item_description.'" /></input> 

Gerade jetzt meine ouput ist dies:

Array ([ord_no] => 1000007 [item_seq_no] => 1 [item_no] => 001 [item_desc_1] => item1) 
    Array ([ord_no] => 1000008 [item_seq_no] => 1 [item_no] => 002 [item_desc_1] => item2) 
    Array ([ord_no] => 1000000 [item_seq_no] => 1 [item_no] => 003 [item_desc_1] => item3) 
    Array ([ord_no] => 1000001 [item_seq_no] => 1 [item_no] => 001 [item_desc_1] => item1) 

ich würde das lieber:

[checkOrder] => Array 
(
     [ord_no] => 1000007 
     (
      [item_seq_no] => 1 [item_no] => 001 [item_desc_1] => item1 
     ) 
     [ord_no] => 1000008 
     (
      [item_seq_no] => 1 [item_no] => 002 [item_desc_1] => item2 
     ) 
     [ord_no] => 1000000 
     (
      [item_seq_no] => 1 [item_no] => 003 [item_desc_1] => item3 
     ) 
     [ord_no] => 1000001 
     (
     [item_seq_no] => 1 [item_no] => 001 [item_desc_1] => item1 
     ) 
) 

So wie ich meine Form ändern einem großen Array zu erstellen eher als multiple oder denke ich nicht richtig darüber nach. Im Moment füge ich all diese, die überprüft werden, in eine Tabelle in einer foreach-Schleife ein. Dann sende ich eine E-Mail außerhalb meiner Foreach. Es wird nur die erste Array-Bestellnummer in die E-Mail eingefügt. Wenn ich wirklich jeden brauche, der überprüft wurde. Ich glaube mit diesem anderen Array, das ich im Auge habe, wird es mein Problem beheben. Wenn Sie weitere Informationen wünschen, lassen Sie es mich wissen.

+0

Haben Sie nach der Funktion array_merge() gesucht? –

+0

Nein, ich bin ziemlich neu bei diesem Thema. Ich werde mir das ansehen. – Ryan

+1

'Im Moment ist mein Ausgang das 'ist nicht richtig !! Verwenden Sie foreach ($ checkOrder als $ v) und drucken Sie das ?. Probieren Sie einfach 'var_dump ($ _ POST);' und Sie bekommen, was Sie wollen. – JustOnUnderMillions

Antwort

0

Ihre Form ändern:

<input name="checkOrder['.($row['ord_no']).'][checked]" value="" type="checkbox" class="checkOrder" id="checkOrder"> 
    <input type="hidden" name="checkOrder['.($row['ord_no']).'][ord_no]" value="'.($row['ord_no']).'" /> 
    <input type="hidden" name="checkOrder['.($row['ord_no']).'][item_seq_no]" value="'.$line_number.'" /> 
    <input type="hidden" name="checkOrder['.($row['ord_no']).'][item_no]" value="'.$item_number.'" /> 
    <input type="hidden" name="checkOrder['.($row['ord_no']).'][item_desc_1]" value="'.$item_description.'" /></input> 

wenn Sie jetzt var_dump ($ _ POST); Sie bekam:

[checkOrder] => Array 
(
     [1000007] => Array 
     (
      [ord_no] => 1000007, [item_seq_no] => 1, [item_no] => 001, [item_desc_1] => item1, [checked]='on' 
     ) 
     [1000008] => Array 
     (
      [ord_no] => 1000008, [item_seq_no] => 1, [item_no] => 002, [item_desc_1] => item2, [checked]='on' 
     ) 
     [1000000] => Array 
     (
      [ord_no] => 100000, [item_seq_no] => 1, [item_no] => 003,[item_desc_1] => item3, [checked]='on' 
     ) 
     [1000001] => Array 
     (
      [ord_no] => 1000001, [item_seq_no] => 1, [item_no] => 001, [item_desc_1] => item1, [checked]='on' 
     ) 
) 

[checked]='on' ist es nur, wenn Sie die in der Form geprüft.

Hoffe, dass hilft.

I need to save just the order numbers outside the foreach

Dann array_keys($_POST['checkOrder']) verwenden und Sie haben die IDs.

Aber es Sache, die Sie sollten statt

<input name="checkOrder['.($row['ord_no']).'][checked]" value="" type="checkbox" class="checkOrder" id="checkOrder">

diese

<input name="checkedOrders[]" value="'.($row['ord_no'].'" type="checkbox" class="checkOrder" id="checkOrder">

Und dann in $_POST['checkedOrders'] verwenden sind alle IDs, die in dem in Form geprüft.

Der Rest wird immer noch gleich sein.

+0

Das ist es. Diese Checkboxen waren das Problem. Danke – Ryan

Verwandte Themen