2016-09-20 5 views
0

Ich bin auf diesem fest und ich bin nicht wirklich sehen, wo genau das Problem ist.PHP-Array mit dem gleichen Wert

ich eine Reihe von Eingangs-Tags haben, die so angeordnet sind:

<div class="col-md-3"> 
    <label>Material 1</label> 
    <input hidden="hidden" name="idMaterial[]" value="13" type="text" /> 
    <input class="form-control" name="total[]" type="text" /> 
</div> 

<div class="col-md-3"> 
    <label>Material 2</label> 
    <input hidden="hidden" name="idMaterial[]" value="8" type="text" /> 
    <input class="form-control" name="total[]" type="text" /> 
</div> 

Ich habe 20 Eingang so, hier ist die Idee, dass, wenn ich 10 in das Eingabefeld Material 1 ist zu schreiben, meine DB würde receice so etwas wie:

id   => A.I 
idMaterial => 13 
total  => 10 

Aber sobald ich den Code ausführen, kommt es so, dass (die idMaterial wiederholen, auch wenn ich in mehr als 1 Eingang schreiben sie immer wiederholen die erste.):

idMaterial: 13 
total: 10 

idMaterial: 13 
total: 20 

Das ist der Code, den ich diese Form erhalten bin mit:

$idMaterial = array(); 
$total = array(); 

if($this->input->post('total')){ 
    foreach($this->input->post('idMaterial') as $row){ 
     $idMaterial = $row; 

     foreach($this->input->post('total') as $row2){ 
      $total = $row2; 

      echo 'Material: '. $idMaterial .'<br> Total: '. $total. '<br><br>'; // TESTING THE OUTPUT 
      $query = $this->pedido->salvaLabMaterial($total, $idMaterial); // I'M SENDING THE DATA TO MODEL HERE 
     } 
    } 
} 

Irgendwelche Tipps ist sehr willkommen.

+0

Ihre Schleifen verschachtelt sind Sie werden also nicht die gewünschten Ergebnisse erzielen. Um dies richtig zu machen, müssen Sie den Schlüsselwert in Ihren Eingabe-Namen setzen, dh 'idMaterial [1]' und 'total [1]' so können Sie die zugehörige Summe nach Schlüsselnamen referenzieren. Dann tust du anstatt für jeden eine passende Summe zu bekommen, sagst du '$ _POST ['total'] [$ matching_key]' – cmorrissey

+0

In Anbetracht dessen, dass ich nicht alle Eingaben, z. in einigen Jobs würde ich nur 2 aus den 20 füllen. Sagen, dass ich möchte nur diese 2 erhalten, anstatt die anderen 18 Eingabefelder als null zu erhalten. Würde ich das nur dadurch erreichen können? – VerdenKaf

Antwort

0

@RiggsFolly

Das ist, wo ich die Beiträge die Art und Weise, die er von der HTML-Form kommt, wie Sie gesagt haben:

$query = $this->pedido->salvaLabMaterial($this->input->post('total'), 
             $this->input->post('idMaterial'), 
             ); 

Das Modell:

public function salvaLabMaterial($this->input->post('idMaterial'), $this->input->post('total')){ 

    $query = $this->db->query(" insert into labpedidomaterial (idMaterial, total) values ('".$this->input->post('idMaterial')."', '".$this->input->post('total')."') "); 

} 
+0

Hier sind zu viele Dinge mit Ihrer Logik falsch. Eine richtige Antwort würde so ziemlich einen vollständigen Trainingskurs in Programmierung beinhalten, also habe ich meine Antwort gelöscht. – RiggsFolly

Verwandte Themen