PHP:第二个函数未被调用

时间:2012-07-19 10:42:49

标签: php function sequence

我正在使用PHP并希望一个接一个地运行2个函数。

这些函数是getallmydata()和createCSV()

下面的代码运行第一个函数,但第二个函数createCSV()不起作用。好像它没有被正确调用。

我的代码结构有什么问题,因为这两个函数都可以独立工作吗?我无法解决这个问题!

<?php

//run this function//
getallmydata();
//then run this function//
createCSV();


function getallmydata(){ 

require_once dirname(__FILE__).'/cm/csrest_general.php';
require_once dirname(__FILE__).'/cm/csrest_clients.php';
require_once dirname(__FILE__).'/cm/csrest_campaigns.php';

$api_key = 'MY API KEY';
$wrap = new CS_REST_General($api_key);
$result = $wrap->get_clients();
$Content = "";

if ($result->was_successful()) {



foreach ($result->response as $client) {

    $client_wrapper = new CS_REST_Clients($client->ClientID, $api_key);
    $client_details_result = $client_wrapper->get();
    $campaigns_result = $client_wrapper->get_campaigns();

    if ($client_details_result->was_successful()) {
        /* This is where the client details will be */
        $client_details = $client_details_result->response;

        echo ('<pre>');
        /*print out the company name*/
        echo "Company Name = " . $client_details->BasicDetails->CompanyName . "<br/>";
        /*print out the company markup*/
        echo "Markup On Delivery = " . $client_details->BillingDetails->MarkupOnDelivery . "<br/>";

        $count = 0;

            if ($campaigns_result->was_successful()) {

                /*print out the latest campaign name of the current campaign*/
                foreach ($campaigns_result->response as $campaign_ob) {

                    echo 'Latest Campaign Name = ' . $campaign_ob->Name . '<br/>';
                    //echo 'Latest Subject = ' . $campaign_ob->Subject . '<br/>';
                    //echo 'Total Recipients = ' . $campaign_ob->TotalRecipients . '<br/>';
                    //echo 'Sent Date = ' . $campaign_ob->SentDate . '<br/>';

                    /*Set content for CSV File*/

                    //$Content .= "This is within the loop \n";



                    $count++;

                    if($count > 0) break;

                }/*end loop*/

            }/*end campaigns if statement*/

        echo ('</pre>');




    } else {
        echo 'Failed with code '.$client_details_result->http_status_code."\n<br /><pre>";
        var_dump($client_details_result->response);
    }

}

} else {
echo 'Failed with code '.$result->http_status_code."\n<br /><pre>";
var_dump($result->response);
echo ('</pre>');
} 


} //end main function




/*create the downloadable csv file*/

function createCSV(){


$FileName = date("d-m-y") . '.csv';


# Titlte of the CSV
//$Content = "Company_Name Markup Campaign_Name Subject Recipients Date \n";

# fill data in the CSV
//$Content .= "\"John Doe\",\"New York, USA\",15,65465464 \n";
$Content .= "Testing The Function Works OK \n";
//$Content .= "This should be another line";
header('Content-Type: application/csv'); 
header("Content-length: " . filesize($NewFile)); 
header('Content-Disposition: attachment; filename="' . $FileName . '"'); 
echo $Content;
exit();  

}//end csv download function







/*end create downloadable .csv file */





?>

2 个答案:

答案 0 :(得分:0)

我认为你应该收到错误:headers already sent。 (你检查过第二个函数被调用了吗?你可以通过在函数的第一行放置一个echo来找到它。)

您正在尝试创建CSV页面,但是您正在解析第一个函数中的HTML,因此标题已经发送到客户端,说它是一个普通的HTML页面。在第一个函数中删除这些echo,它应该可以工作。

PHP手册的引用:

  

请记住,在发送任何实际输出之前,必须通过普通HTML标记,文件中的空行或PHP来调用header()。使用include或require,函数或其他文件访问函数读取代码是一个非常常见的错误,并且在调用header()之前输出空格或空行。使用单个PHP / HTML文件时存在同样的问题。

有关标题的更多信息:PHP header

答案 1 :(得分:-1)

首先想我会告诉你的是 1你应该首先编写函数定义然后你应该调用一个函数 即

function getallmydata(){
 // function code
}

function createCSV(){
   // function code
}

getallmydata();
createCSV();

2。第二件事就是检查代码外面是否有任何空白区域的PHP代码或任何发送为共鸣的o / p,因为当你使用header()时,如果有任何其他类型的内容header()作为响应发送,然后header()函数失败。试试这个并再次检查。