varias update registro formulario extraer eliminar ejemplo datos con bases php database codeigniter insert multiple-records

update - extraer datos de mysql a formulario php



insertando varias filas en la base de datos en codeigniter (3)

Posible duplicado:
insertar múltiples filas a través de una matriz php en mysql

Estoy tratando de insertar solo datos completos en la base de datos. mi controlador

$code=$_POST[''code'']; $rate=$_POST[''rate'']; $quantity=$_POST[''quantity'']; //$total=$_POST[''rate'']*$_POST[''quantity'']; $count = count($_POST[''code'']); for($i=0; $i<$count; $i++) { $data = array( ''shop''=>$shop->$this->input->post(''shop''), ''code'' => $code[$i], ''rate'' => $rate[$i], ''quantity'' => $quantity[$i], ''total'' =>($rate[$i]*$quantity[$i]) ); $this->load->model(''buy_product_model''); $this->buy_product_model->add_product($data);

tengo una lista desplegable para seleccionar la tienda y para esa tienda he creado 15 campos de entrada. los campos están en la parte superior. El problema es si solo lleno solo uno o dos valores, crea 15 filas en la base de datos y 15 reparan el tiempo el nombre de la tienda. ¿Alguien puede solucionar este problema?


Basado en esta parte de tu pregunta:

tengo una lista desplegable para seleccionar la tienda y para esa tienda he creado 15 campos de entrada. los campos están en la parte superior. El problema es si solo lleno solo uno o dos valores, crea 15 filas en la base de datos y 15 reparan el tiempo el nombre de la tienda. ¿Alguien puede solucionar este problema?

Parece ser un problema de diseño de la base de datos más que un error en su código. Si su tabla tiene una columna llamada Nombre de tienda y está insertando datos en ella, la repetirá quince veces.

Sugeriría dividir la tabla y vincularla a través de una unión entre ellos así:

Table Shops: ID Name Table Products: ID shopID // This links to the first table on shopID=ID ... and so on for your *product* information


en lugar de manipular $ _POST en el controlador, manipúlelo en un modelo como este

Su controlador

$this->load->model(''buy_product_model''); $this->buy_product_model->add_product($this->input->post());

EDITAR

Asegúrese de que los campos de formulario en formato html estén en forma de matriz como esta

<input type="text" name="code[]" />

Tu modelo

public function buy_product_model($postdata){ extract($postdata); $count = count($code); for($i=0; $i<$count; $i++) { $data = array( ''shop''=>$shop, ''code'' => $code[$i], ''rate'' => $rate[$i], ''quantity'' => $quantity[$i], ''total'' =>($rate[$i]*$quantity[$i]) ); $this->db->insert(''[YOUR TABLE]'', $data); } }

ASEGÚRESE DE CAMBIAR [SU TABLA] CON LA SUYA

agregue el resto del código que tiene en el método add_product de su modelo e itere a través de un bucle como lo hizo en su controlador.

Editar:

Compruebe la parte ''shop''=>$shop->$this->input->post(''shop'') en su bucle


finalmente lo arreglo. ahí está mi vista

<?php for($i = 1; $i <=10; $i++):?> <tr> <td> <?php echo $i;?> </td> <td> <input type="text" name="code[]" value="<?php echo '''';?>" id="code" /> </td> <td> <input type="text" name="rate[]" value="<?php echo '''';?>" id="rate" /> </td> <td> <input type="text" name="quantity[]" value="<?php echo '''';?>" id="quantity" /> </td> </tr> <?php endfor;?>

aquí está mi controlador

if (empty($_POST)) { $this->index(); } else { //insert to database $this->load->model(''buy_product_model''); $data= $this->buy_product_model->add_product(); //echo "success"; $this->index(); }

modelo//

$data = array(); $todayDate = date(''Y-m-d''); for($i = 0; $i < count($_POST[''code'']); $i++) { if($_POST[''code''][$i] != '''') { $data[] = array( ''code'' => $_POST[''code''][$i], ''shop'' => $_POST[''shop''], ''rate'' => $_POST[''rate''][$i], ''quantity'' => $_POST[''quantity''][$i], ''total'' =>( $_POST[''rate''][$i]*$_POST[''quantity''][$i]), ''date'' => $todayDate ); } } $dataCount = count($data); if($dataCount) { $this->db->insert_batch(''purchase'', $data); } return $dataCount;