meine CSV-Datei wie folgt aussieht: Wie aktualisiert man die Datenbanktabelle jedes Mal, wenn die CSV-Datei in den Code-Signierer hochgeladen wird?
meine Datenbank-Tabelle wie folgt aussieht:
mein Bedürfnis ist, dass jedes Mal, wenn ich die CSV-Datei bin Hochladen i die Datenbanktabelle zu aktualisieren, Ich meine, wenn die Mitte in CSV-Datei in der Datenbank Mitte ist, muss ich diese Zeile aktualisieren. Und wenn Mitte in CSV-Datei ist nicht in der Datenbank Mitte Ich muss diese neue Zeile in die Datenbanktabelle einfügen.
Derzeit lade ich die CSV-Datei und Daten in der Datenbanktabelle erfolgreich hochgeladen.
mein Controller wie folgt aussieht:
public function importcsv()
{
$data['menu'] = $this->AdminModel->get_menu();
$data['error'] = ''; //initialize image upload error array to empty
$config['upload_path'] = './assets/uploads/';
$config['allowed_types'] = 'csv';
$config['max_size'] = '1000';
$this->load->library('upload', $config);
// If upload failed, display error
if (!$this->upload->do_upload())
{
$data['error'] = $this->upload->display_errors();
$this->load->view('csvindex', $data);
}
else
{
$file_data = $this->upload->data();
$file_path = './assets/uploads/'.$file_data['file_name'];
if ($this->csvimport->get_array($file_path))
{
$csv_array = $this->csvimport->get_array($file_path);
foreach ($csv_array as $row)
{
$mid=$row['mid'];
$insert_data = array(
'mid'=>$mid,
'category'=>$row['category'],
'name'=>$row['name'],
'price'=>$row['price'],
'description'=>$row['description'],
);
$this->AdminModel->insert_csv($insert_data);
}
$this->session->set_flashdata('success', 'Csv Data Imported Succesfully');
redirect(base_url().'Admin/menu');
}
else
$data['error'] = "Error occured";
$this->load->view('csvindex', $data);
}
}
Ich denke, nach den csv Dateidaten in das Array holt $ insert_data Ich glaube, ich brauche es zum Vergleich mit der Mitte in der Datenbank Tabelle. Wie ist es möglich? Ich bin neu in diesem Bereich. Danke im voraus.
Ich habe Änderungen in meinem Controller, sein Aussehen:
public function importcsv()
{
$data['menu'] = $this->AdminModel->get_menu();
$data['error'] = ''; //initialize image upload error array to empty
$config['upload_path'] = './assets/uploads/';
$config['allowed_types'] = 'csv';
$config['max_size'] = '1000';
$this->load->library('upload', $config);
// If upload failed, display error
if (!$this->upload->do_upload())
{
$data['error'] = $this->upload->display_errors();
$this->load->view('csvindex', $data);
}
else
{
$file_data = $this->upload->data();
$file_path = './assets/uploads/'.$file_data['file_name'];
if ($this->csvimport->get_array($file_path))
{
$csv_array = $this->csvimport->get_array($file_path);
foreach ($csv_array as $row)
{
$data1['mid']=$row['mid'];
$data1['category']=$row['category'];
$data1['name']=$row['name'];
$data1['price']=$row['price'];
$data1['description']=$row['description'];
if($this->db->where('mid', $data1['mid']))
{
$this->db->update('menu', $data1);
}
if($this->db->where("mid !=",$data1['mid']))
{
$this->db->insert('menu', $data1);
}
}
$this->session->set_flashdata('success', 'Csv Data Imported Succesfully');
redirect(base_url().'Admin/menu');
}
else
{
$data['error'] = "Error occured";
$this->load->view('csvindex', $data);
}
}
}
Jetzt kann ich Daten aktualisieren Von
if($this->db->where('mid', $data1['mid']))
{
$this->db->update('menu', $data1);
}
seine Werke in Ordnung, aber mit Bedingung:
if($this->db->where("mid !=",$data1['mid']))
{
$this->db->insert('menu', $data1);
}
Die gesamten CSV-Dateidaten werden erneut in das Tabellenmenü eingegeben. Ich brauche Mitte im Menü Tisch und Mitte in der CSV-Datei zu vergleichen, wenn Mitte in der CSV-Datei nicht in Menü Tabelle I einfügen müssen, dass entsprechende Datensatz in die Menü Tabelle.
für das, was alle Änderungen sollte ich in den Code getan haben?
ist 'Mitte' einzigartig dann? – ArtisticPhoenix
ja Mitte ist einzigartig –
vor dem Einfügen eines Datensatzes können Sie überprüfen, ob die gleiche Mitte existiert oder nicht. Wenn existiere Update sonst einfügen. Sie können dies mit einer einzigen SQL-Abfrage – Anish