2016-11-08 2 views
0

Ich versuche, Daten in eine Tabelle in einer for Schleife einzufügen:Einfügen Anzahl der Zeilen und Eingangspost Verwendung

public function insertprolist() 
{  
    for ($i = 1; $i < $this->input->post('numrows'); $i = $i + 1) 
    { 
     $data = array(
      'productname' => $this->input->post('proname'+$i), 
      'quantity' => $this->input->post('quantity'+$i), 
      'price' => $this->input->post('price'+$i), 
      'amount' => $this->input->post('amount'+$i) 
     ); 
     return $this->db->insert('purchaseprolist', $data); 
    } 
} 

ich eine Störung erhalte.

Es wird nicht in die Datenbanktabelle eingefügt.

Ich habe neue Zeilen mit Eingabefeldern angehängt mit Namen wie proname1, quantity1 und für die zweite Zeile des Eingabenamen Attribut erzeugt werden als proname2, quantity2 und es geht weiter.

Ich erhalte die Anzahl der Zeilen in einer anderen Eingabe mit dem Namen numrows.

Jetzt möchte ich auf diese Eingänge in Modal-Datei zugreifen.

+0

bitte helfen Sie mir damit :) – Ramya

+2

Was ist das Problem? Error? – Blinkydamo

+0

es wird nicht eingefügt in der Datenbanktabelle – Ramya

Antwort

2
for ($i = 1; $i < $this->input->post('numrows'); $i++) 
{ 
    $data = array(
       'productname' => $this->input->post('proname' . $i), 
       'quantity' => $this->input->post('quantity' . $i), 
       'price'  => $this->input->post('price' . $i), 
       'amount'  => $this->input->post('amount' . $i) 
       ); 

    $this->db->insert('purchaseprolist', $data); 
} 

Dies wird höchstwahrscheinlich Arbeit jedoch ist es, einen Einsatz für jede Zeile zu tun, würden Sie besser auf den Aufbau einer Reihe von Werten, einen Blick und mit insert_batch() auf einmal, dass die ganze Sache zu tun.


Bessere Option:

for ($i = 1; $i < $this->input->post('numrows'); $i++) 
{ 
    $data[] = array(
       'productname' => $this->input->post('proname' . $i), 
       'quantity' => $this->input->post('quantity' . $i), 
       'price'  => $this->input->post('price' . $i), 
       'amount'  => $this->input->post('amount' . $i) 
       ); 
} 
$this->db->insert_batch('purchaseprolist', $data); 

Dies wird eine einzelne Datenbank INSERT-Abfrage durchführen, anstatt die Anzahl der Zeilen von Looping und einen Einsatz pro Zeile durchführt. Dieselben Daten werden der Datenbank nur effizienter übermittelt.

+0

danke, es hat funktioniert :) Ich habe nie Einsatz Stapel jetzt verwendet dies war ein Lernen für mich :) – Ramya

+1

Froh, dass Sie sortiert. – Blinkydamo

+0

yah, das ist das komplette Beispiel ... :) meine Stimme für dich. – devpro

0

Vielleicht sollten Sie verwenden Legen Sie Ihre "+" = "." PHP wird verstehen, dass eine Übereinstimmung vorhanden ist.

for ($i = 1; $i < $this->input->post('numrows'); $i = $i + 1) 
{ 
    $data = array(
    'productname' => $this->input->post('proname'.$i), 
    'quantity' => $this->input->post('quantity'.$i), 
    'price' => $this->input->post('price'.$i), 
    'amount' => $this->input->post('amount'.$i) 
); 
    return $this->db->insert('purchaseprolist', $data); 
} 

Da Ihre Frage nicht klar ist, so kann ich es Ihnen nur so erklären.

+0

es ist nicht passiert :( – Ramya

+0

ya meine Verbindung ist falsch:) danke ich habe es geändert, aber ich musste auch meine Anfrage ändern, um Batch :) Danke :) – Ramya

-1

In PHP, Sie nicht Zeichen + für Verkettung verwenden können, müssen Sie verwenden Punkt hier (.):

$data = array(
     'productname' => $this->input->post('proname'.$i), 
     'quantity' => $this->input->post('quantity'.$i), 
     'price' => $this->input->post('price'.$i), 
     'amount' => $this->input->post('amount'.$i) 
     ); 

Zweite, verwenden Sie Rückkehr, wird dies Ihre Funktion nach ist zu stoppen Iteration, können Sie es nicht innerhalb der for Schleife verwenden.

Dritte, vor dem Einsetzen, versuchen Sie Ihren Beitrag Wert zu überprüfen, was werden Sie diese immer helfen Ihnen zu verstehen, was sind Sie versuchen.

print_r($_POST); // before for loop start. 

Vierte, statt mehrere Abfragen Ausführung, ich schlage vor, Sie batch_insert() zu verwenden, dies wird Ihnen helfen: http://www.codeigniter.com/userguide3/database/query_builder.html

+0

danke ich werde versuchen und überprüfen :) – Ramya

+0

@Ramya: Der dritte Teil ist sehr wichtig für Debugging, atleast zu überprüfen, was sind u aus Ihrem Formular bekommen – devpro

+0

meine Verketten falsch war :) und auch wenn ich Insert Charge verwendet es funktionierte es Ihnen danken :) – Ramya

0

Vielleicht ist das Problem Sie return im forloop versuchen.So versuchen Sie, es wie unten zu entfernen

public function insertprolist() 
{  
    for ($i = 1; $i < $this->input->post('numrows'); $i = $i + 1) 
    { 
     $data = array(
      'productname' => $this->input->post('proname'+$i), 
      'quantity' => $this->input->post('quantity'+$i), 
      'price' => $this->input->post('price'+$i), 
      'amount' => $this->input->post('amount'+$i) 
     ); 
     $this->db->insert('purchaseprolist', $data); 
    } 
} 
+0

Fehlernummer: 1048 Spalte 'Produktname' darf nicht null sein INSERT INTO 'purchaseprolist' (' Produktname', 'Menge',' Preis', 'Menge') WERTE (NULL, NULL, NULL, NULL) Dateiname: E:/wamp/www/CodeIgniter/system/datenbank/DB_driver.php Zeilennummer: 691 – Ramya

+0

dies ist der Fehler, den ich – Ramya

+0

dann bin immer versuchen, diese ' 'Produktnamen' => $ this-> Input-> post ('proname'. $ i), 'das Problem ist, dass Sie die Postdaten nicht bekommen – mapmalith

Verwandte Themen