2017-12-29 21 views
0

Ich habe zwei Tabellen in der DB. One ist Lead und andere Lead Note .. Lead und Lead Note haben Fremdschlüssel Beziehung .. Ich möchte eine CSV generieren, so dass es eine Lead-Spalte haben dann alle Hinweise zu diesem Lead ..Generiere CSV mit 2 Tabellen mit Codigniter

Here is what I need Mein aktueller Code ist

$all_leads = ''; 
    $name = 'leads-'.date('d-m-Y').'.csv'; 
    $this->load->dbutil(); 
    $this->db->select("lead_id as Lead ID,business_name as Business,contact_name as First Name,contact_name_last as Last Name,work_email as Email,contact_email as Personal Email,work_number as Work Number,cell_no as Cell No,city as City,state as State,zip as Zip,date_added as Date Added,IF(label_type <> 0,'Important',' ') as Label, companies.company_name as company name"); 
    $this->db->from('leads'); 
    $this->db->join('companies', 'companies.id = leads.company'); 
    $leads = $this->db->get(); 
    $num_rows = $leads->num_rows(); 

    $all_leads= $this->dbutil->csv_from_result($leads); 
    write_file($this->file_path . '/'.$name,$all_leads); 
    $data = file_get_contents($this->file_path . '/'.$name); 

    force_download($name, $data); 
    delete_files($this->file_path . '/'.$name);` 

Antwort

0

Ich werde ein Stück Code teilen, der Ihnen helfen kann. Al müssen Sie tun, um die Daten gemäß Ihrer Anforderung anzupassen. Bitte überprüfen Sie den Code unter

<?php 
    $this->db->select("a.lead_id,a.business_name,a.a.contact_name_first,a.contact_name_last,a.work_email,a.contact_email,a.work_number,a.cell_no,a.city,a.state,a.zip,a.date_added,IF(a.label_type <> 0,'Important',' ') as label, b.company_name"); 
    $this->db->from('leads a'); 
    $this->db->join('companies b', 'b.id = a.company'); 
    $this->db->join('lead_note c', 'c.lead_id = a.id'); 

    $query = $this->db->get(); 
    $result = $query->result_array(); 

    if($query->num_rows() > 0){ 
     $delimiter = ","; 
     $filename = "members_" . date('Y-m-d') . ".csv"; 

     //create a file pointer 
     $f = fopen('php://memory', 'w'); 

     //set column headers 
     $fields = array('Lead ID','Business','First Name','Last Name','Email','Personal Email','Work Number','Cell No','City','State','Zip','Date Added'); 

     //output each row of the data, format line as csv and write to file pointer 
     foreach($result as $row){ 

      $lineData = array($row['lead_id'], $row['contact_name_first'], $row['contact_name_last'], $row['work_email'], $row['contact_email'], $row['work_number'], $row['cell_no'], $row['city'], $row['state'], $row['zip'], $row['date_added'], $row['label'], $row['company_name']); 
      fputcsv($f, $lineData, $delimiter); 
     } 

     //move back to beginning of file 
     fseek($f, 0); 

     //set headers to download file rather than displayed 
     header('Content-Type: text/csv'); 
     header('Content-Disposition: attachment; filename="' . $filename . '";'); 

     //output all remaining data on a file pointer 
     fpassthru($f); 
    } 
    exit; 

    ?> 

Hoffen, dass dies hilft. Verwenden Sie keine Leerzeichen für Alias- und Tabellennamen. Wenn Sie Leerzeichen verwenden, müssen Sie die Häkchen korrekt verwenden. Ich empfehle Camelcase oder undersoce convension für Tabellen Benennung und Aliase

+0

Dies ist nur ein Tabellendaten einsehen. Wie hole ich beide Tabellendaten für diesen Code? –

+0

siehe die bearbeitete Antwort –

+0

war es hilfreich? –

0

Vielen Dank für alle .. zu helfen, wie ich auf diese Weise tat ..

check_admin(); 
    header('Content-Type: text/csv; charset=utf-8'); 
    $name = 'leads-'.date('d-m-Y').'.csv'; 
    header('Content-Disposition: attachment; filename='.$name.''); 
    $output = fopen("php://output", "w"); 
    fputcsv($output, array('Lead ID', 'Business', 'First Name' ,'Last Name', 'Email','Work Number','Cell No','City','State','Zip','Date Added', 'Label','company name','Business', 'First Name' ,'Last Name', 'Email','Work Number','Cell No')); 
    $query = "SELECT leads.`lead_id`, leads.`business_name` as `Business`, leads.`contact_name` as `First Name`, leads.`contact_name_last` as `Last Name`, leads.`work_email` as `Email`, leads.`work_number` as `Work Number`, leads.`cell_no` as `Cell No`, `city` as `City`, `state` as `State`, `zip` as `Zip`, `date_added` as `Date Added`, IF(label_type <> 0, 'Important', ' ') as Label, `companies`.`company_name` as `company name`,lead_contact.`company_name` as `Business1`, lead_contact.`contact_name` as `First Name1`, lead_contact.`contact_name_last` as `Last Name1`, lead_contact.`work_email` as `Email1`, lead_contact.`work_number` as `Work Number1`, lead_contact.`cell_no` as `Cell No1` FROM `leads` Left JOIN `companies` ON `companies`.`id` = `leads`.`company` Left JOIN `lead_contact` ON `lead_contact`.`lead_id` = `leads`.`lead_id`"; 
    $all_leads = $this->db->query($query); 
    foreach ($all_leads->result_array() as $lead){ 
     $lead_id = $lead['lead_id']; 
     $query = "SELECT `note_date`,`notes` from lead_notes where lead_id='$lead_id'"; 
     $leads_notes = $this->db->query($query); 
     fputcsv($output, $lead); 
     //fputcsv($output, array('','Lead ID', 'Added', 'Notes')); 
    foreach ($leads_notes->result_array() as $leads_note){ 

     fputcsv($output, $leads_note); 

    } 

}