2016-10-10 4 views
-1

habe ich ein Formular zur Eingabe um einen Zeitplan zu einem bestimmten Ort und die Lage wird mehrere Zeitplan
Das Formular sieht wie folgt aus (ich kann mehr Eingabemaske hinzufügen, so viel wie ich brauche)Multidimentional Array PHP Post

<input name="location[]" type="text"> 
<input name="address[]" type="text"> 
    <input name="day[]" type="text"> 
    <input name="start[]" type="text"> 
    <input name="end[]" type="text"> 

Und so weiter. Das Problem ist, dass ich die location und address-addresses Tisch und day, start, end zu schedules Tisch und stellen Sie sicher einfügen möchten, dass die schedule das Recht hat, address_id wie unten

addresses Tisch

+----+----------+----------+ 
| id | location | address | 
+----+----------+----------+ 
| 1 | loc 1 | addr 1 | 
| 2 | loc 2 | addr 2 | 
+----+----------+----------+ 

schedules Tisch

+----+----------+----------+-------+------------+ 
| id | day | start | end | address_id | 
+----+----------+----------+-------+------------+ 
| 1 | day a | start a | end a |  1  | 
| 2 | day b | start b | end b |  1  | 
| 3 | day c | start c | end c |  2  | 
| 4 | day d | start d | end d |  2  | 
+----+----------+----------+-------+------------+ 

Ich habe gelesen, dass ich dazu foreach verwenden muss, aber das Problem ist, wie die Eingabe Schleife und sicherstellen, dass der Zeitplan den richtigen address_id Wert hat?

bearbeiten, danke für den downvote:/
Ich benutze Laravel:

$address = Input::get('address'); 
$location = Input::get('location'); 
$day = Input::get('day'); 
$start = Input::get('start'); 
$end = Input::get('end'); 

foreach($location as $key => $value) { 
    $addr = new Address; 
    $addr->location = $location[$key]; 
    $addr->address = $address[$key]; 
    $addr->save(); 
    foreach($day as $key => $value) { 
     $sched = new Schedule; 
     $sched->day = $day[$key]; 
     $sched->start = $start[$key]; 
     $sched->end = $end[$key]; 
     $sched->address_id = $addr->id; 
     $sched->save(); 
    } 
} 
+0

So, die der PHP MYSQL APIs verwenden Sie? 'mysqli_ *' oder 'PDO'? – RiggsFolly

+0

Es wäre auch nützlich zu sehen, was Sie bisher versucht haben! – RiggsFolly

Antwort

0

Sie müssen von address zum Beispiel Schleife und vor allen Dingen in address Tabelle einfügen. Danach müssen Sie die ID der eingefügten Zeile abrufen und sie verwenden, wenn Sie in schedules Tabelle einfügen.

Da Sie keinen Code probiert habe, erkläre ich hier nur, wie Sie vorgehen sollten und wenn etwas nicht funktioniert, lassen Sie mich wissen, was Sie versucht haben und welchen Fehler Sie haben.

foreach($_POST['address'] as $key => $value){ 
    //insert to address table: $_POST['location'][$key] and $_POST['address'][$key] 
    //$last_inserted_id_from_address = Get the latest inserted id from address table. 
    //insert to schedules tables: $_POST['day'][$key] ,.... and $last_inserted_id_from_address 
} 

UPDATE

Sie brauchen nicht zweimal in einer Schleife, wenn Sie Match 1 bis 1. Ändern Sie Ihre Schleife dazu haben wollen:

foreach($location as $key => $value) { 
    $addr = new Address; 
    $addr->location = $location[$key]; 
    $addr->address = $address[$key]; 
    $addr->save(); 

    //Use the same $key when creating Schedule. For each address will create one schedule. 
    $sched = new Schedule; 
    $sched->day = $day[$key]; 
    $sched->start = $start[$key]; 
    $sched->end = $end[$key]; 
    $sched->address_id = $addr->id; 
    $sched->save(); 

} 
+0

Ich habe versucht, und aus Ihrem Code, die 'Day',' start', 'end' Werte werden am Ende wiederholt 2 mal,' address_id' 1 und 2 haben beide die "Tag a", "Tag b", "Tag c" und "Tag d", während ich den "Tag a" und "Tag b" nur mit "address_id" 1 verbinden möchte; "Tag c" und "Tag d" sind nur mit "address_id" 2 verbunden – Spadaboyz

Verwandte Themen