Cómo insertar datos en la tabla 1 con el campo de verificación de la tabla 2 (Codeigniter) (Actualizado)

Aquí está la estructura de table1 :

  1. id_data_inserted
  2. fecha
  3. id_data
  4. id_room

estructura de table2 :

  1. id_data
  2. data_name
  3. especificación
  4. cantidad
  5. precio

Estoy tratando de insertar datos en la table1 , pero antes de insertar datos en la table1 , necesito verificar los archivos id_data table1 y table2 . Si id_data de la table2 igual a los datos de id_data table1 se insertará en la tabla, y si no, los datos no se insertarán en la tabla.

Por ejemplo:

  • Datos de la tabla2

Datos de la tabla2

  • Captura de pantalla de Simple Form

Captura de pantalla de Simple Form

Ya tengo un formulario simple para ingresar datos a la base de datos. en table2 hay datos que tienen id_data = AA001 , y si insertamos datos en table1 con un valor de id_data del formulario simple (si insertamos AA001 en el formulario), se insertará, pero cuando ingresamos id_data que son no AA001 fallará. (no insertado en la base de datos).

Y ahora, ¿qué debería hacer?

EDITAR

Este es mi modelo:

 db->insert($table,$data); } public function view_data($table) { return $this->db->get($table); } public function checkIdData() { $query = $this->db->query("SELECT id_data FROM table2"); return $query; } } 

Y esta es la función input_data_inserted en mi controlador:

 public function input_data_inserted() { $id_data_inserted = $this->input->post('id_data_inserted'); $date = $this->input->post('date'); $id_data = $this->input->post('id_data'); $id_room = $this->input->post('id_room'); $checkID_Data = $this->my_model->checkIdData()->result_array(); if($id_data == $checkID_Data) { $data = array ( 'id_data_inserted' => $id_data_inserted, 'date' => $date, 'id_data' => $id_data, 'id_room' => $id_room ); $this->my_model->input_data($data, 'table1'); $data['table1'] = $this->my_model->viewl_data('table1')->result(); $this->load->view('admin/data/v_data', $data); } else { echo "Failed to input!"; } } 

Estoy intentando este código, pero si inserto id_data = AA001 en el formulario, la ejecución siempre irá a la instrucción else. Pero si cambio el valor de $ checkID_Data con una cadena (ahora así: $ checkID_Data = “AA001”) la ejecución irá a la instrucción if y los datos se insertarán correctamente.

¿Alguna solución?

Solutions Collecting From Web of "Cómo insertar datos en la tabla 1 con el campo de verificación de la tabla 2 (Codeigniter) (Actualizado)"

Puede escribir una instrucción de selección de inserción.

Esto es solo una visualización aproximada ya que no ha proporcionado su código. Avísame si necesitas una aclaración.

 INSERT INTO table1 (id_data_inserted, date, id_data, id_room) SELECT '$id_data_inserted' as id_data_inserted, '$date' as date, '$id_data' as id_data, '$id_room' as id_room FROM table2 WHERE id_data = $id_data 

Responda su actualización:

Aquí está mi respuesta actualizada para su controlador. Pero aún prefiero mi primera respuesta porque es mucho más rápido.

 $checkID_Data = $this->my_model->checkIdData()->result_array(); $passed = FALSE; foreach ($checkID_Data as $v) { if($id_data == $v['id_data ']) { $data = array ( 'id_data_inserted' => $v['id_data'], 'date' => $date, 'id_data' => $id_data, 'id_room' => $id_room ); $this->my_model->input_data($data, 'table1'); $data['table1'] = $this->my_model->viewl_data('table1')->result(); $this->load->view('admin/data/v_data', $data); $passed = TRUE; break; } } if (!$passed) { echo "Failed to input!"; }