Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Codeigniter中的vcard导出下载只工作一次_Php_Codeigniter_Vcf Vcard - Fatal编程技术网

Php Codeigniter中的vcard导出下载只工作一次

Php Codeigniter中的vcard导出下载只工作一次,php,codeigniter,vcf-vcard,Php,Codeigniter,Vcf Vcard,我希望我的用户选择多个联系人并以vcard格式导出其详细信息。这是我的控制器: function get_contacts_email_vcard() { $this->load->library('vcard'); $datavcard = $this->getvcard($this->user_model->get_email_contacts

我希望我的用户选择多个联系人并以vcard格式导出其详细信息。这是我的控制器:

function get_contacts_email_vcard()
            {
                $this->load->library('vcard');                
                $datavcard = $this->getvcard($this->user_model->get_email_contacts());
            } 

            function getvcard($dat)
            {
                $datavcarddata = array();
                foreach($dat as $data){
                $datavcarddata['display_name'] = $data->name;                                                 
                $datavcarddata['cell_tel'] = $data->mobile_no;                
                $datavcarddata['email1'] = $data->email;   
                if (is_array($datavcarddata))
                {    
                    $this->vcard->vcard($datavcarddata);
                }
                else
                {
                    $this->vcard->vcard();
                }
                $this->vcard->zipdownload();
                }
                return $datavcarddata;
            } 
我的看法是:

<li><a href="<?php echo base_url(); ?>auth/get_contacts_email_vcard">vCard(Address Book)</a></li>

我面临的问题是,这种方法只适用一次。只有我数据库中最后一个联系人的数据才能下载到zip文件中。我想为不同的联系人创建不同的zip文件或vcf文件。我还想创建一个包含所有vcf文件的zip文件。

好的,经过大量研究,我发现一次单击事件(或任何其他事件)只能向浏览器发送一个下载请求。因此不可能下载多个vCard

$this->db->select('*');
$this->db->select('*');
$this->db->from('tblname');
$info = $this->db->get()->result();
$userContacts = new stdClass();
$userContacts->data = $info;

$dataArray = '';

foreach($userContacts as $contact)
{

      for($i=0; $i<sizeof($contact);$i++)
      {


        $first_name = $contact[$i]->name;

        $last_name = '';

        $mobile_number = $contact[$i]->mobile;

        $email_address= '';

        $dataArray .="BEGIN:VCARD\nN:$first_name;$last_name\nFN:$first_name\nTEL;TYPE=WORK,MSG:$mobile_number\nEMAIL;TYPE=INTERNET:$email_address\nEND:VCARD\n";

      }

    }


   $data = $dataArray;

   $size = strlen($data);

   $filename = "Restaurants.vcf";

   header("Content-Type: application/octet-stream");

   header("Content-Length: $size");

   header("Content-Disposition: attachment; filename=\"$filename\"");

   header("Content-Transfer-Encoding: binary");
$this->db->from('tblname'); $info=$this->db->get()->result(); $userContacts=new stdClass(); $userContacts->data=$info; $dataArray=''; foreach($userContacts作为$contact) { 对于($i=0;$iname; $last_name=''; $mobile_number=$contact[$i]->mobile; $email_address=''; $dataArray.=“开始:VCARD\nN:$first\u name;$last\u name\nFN:$first\u name\nTEL;TYPE=WORK,MSG:$mobile\u number\nEMAIL;TYPE=INTERNET:$email\u address\nEND:VCARD\n”; } } $data=$dataArray; $size=strlen($data); $filename=“Restaurants.vcf”; 标题(“内容类型:应用程序/八位字节流”); 标题(“内容长度:$size”); 标题(“内容处置:附件;文件名=\”$filename\”); 标题(“内容传输编码:二进制”);
我不知道vcard库是如何工作的,但if看起来似乎是罪魁祸首。它是否有任何方法可以返回vcard数据,以便您可以将其放入一个数组并将所有卡片压缩在一起?感谢您的回答。我不确定。我尝试创建一个数组并压缩它,但它不起作用。我使用过这个库:任何可以n解决我的问题:-(
$this->db->select('*');
$this->db->from('tblname');
$info = $this->db->get()->result();
$userContacts = new stdClass();
$userContacts->data = $info;

$dataArray = '';

foreach($userContacts as $contact)
{

      for($i=0; $i<sizeof($contact);$i++)
      {


        $first_name = $contact[$i]->name;

        $last_name = '';

        $mobile_number = $contact[$i]->mobile;

        $email_address= '';

        $dataArray .="BEGIN:VCARD\nN:$first_name;$last_name\nFN:$first_name\nTEL;TYPE=WORK,MSG:$mobile_number\nEMAIL;TYPE=INTERNET:$email_address\nEND:VCARD\n";

      }

    }


   $data = $dataArray;

   $size = strlen($data);

   $filename = "Restaurants.vcf";

   header("Content-Type: application/octet-stream");

   header("Content-Length: $size");

   header("Content-Disposition: attachment; filename=\"$filename\"");

   header("Content-Transfer-Encoding: binary");