我创建了一个表格,试图用从AdWords导出的CSV文件中的数据填充表格。以下是我的表格-
仅当ajax调用成功时才显示该表,因为我向其发出ajax请求的页面返回了表HTML。如您所见,我正在获取表的列,并且表已正确填充,但是由于某种原因我没有获取值。
通过功能生成表格
$campaigns_data = getcampaignsCSVData($account_name);
$campaigns_columns = $campaigns_data['columns'];
$campaigns_values = $campaigns_data['values'];
if(!empty($campaigns_columns) && !empty($campaigns_values)){
echo '<h4>Campaign Totals</h4>'.PHP_EOL;
getcampaignsTable($campaigns_columns,$campaigns_values,$campaigns_included_cols,'Clicks','DESC');
}
生成活动表的功能
function getcampaignsTable($columns,$values,$included_cols,$sort_by='',$sort_dir='ASC'){
$values_by_column_key = array();
foreach($values as $key=>$row){
$processed_cols = array();
foreach($row as $key=>$col){
if(is_numeric(str_replace(',','',$col))){
$col = str_replace(',$col);
}
if($col[0] == '$'){
$processed_cols[$columns[$key]] = str_replace('$',$col);
}else{
$processed_cols[$columns[$key]] = $col;
}
}
$values_by_column_key[] = $processed_cols;
}
if(!empty($sort_by)){
usort($values_by_column_key,function($a,$b)use($sort_by,$sort_dir){
if($sort_dir == 'ASC'){
return $a[$sort_by] > $b[$sort_by];
}elseif($sort_dir == 'DESC'){
return $a[$sort_by] < $b[$sort_by];
}
});
}
echo '<table class="data-table">'.PHP_EOL;
echo '<thead>'.PHP_EOL;
echo '<tr>'.PHP_EOL;
if(!empty($included_cols)){
foreach($included_cols as $col){
echo '<th>'.$col['label'].'</th>'.PHP_EOL;
}
}
echo '</tr>'.PHP_EOL;
echo '</thead>'.PHP_EOL;
echo '<tbody>'.PHP_EOL;
$row_count = 0;
foreach($values_by_column_key as $key1=>$row){
$row_count++;
if($row_count <= RESULT_LIMIT){
echo '<tr>'.PHP_EOL;
foreach($included_cols as $key2=>$inc_cols){
if($inc_cols['format'] == 'currency'){
echo '<td>'.$inc_cols['currency_symbol'].$row[$key2].'</td>'.PHP_EOL;
}else{
echo '<td>'.$row[$key2].'</td>'.PHP_EOL;
}
}
echo '</tr>'.PHP_EOL;
}
}
echo '</tbody>'.PHP_EOL;
echo '</table>'.PHP_EOL;
}
读取和解析CSV文件的功能
function getcampaignsCSVData($account){
$data = array();
$dir = ADWORDS_REPORTS_DIR.$account.'/';
$filename = ADWORDS_CAMPAIGN_FILE;
$filepath = $dir.$filename;
$row_count = 0;
if(file_exists($filepath)){
$csvfile = @fopen($filepath,'r');
if($csvfile){
while(!feof($csvfile)){
$row = fgets($csvfile);
$row = preg_replace("/[^a-zA-Z ]/","",$row);
$row_count++;
$row_data = '';
if(stristr($row,CAMPAIGNS_REPORT_IN_COLUMNS_WORD)){
$row_data = str_replace('Impr.','Impressions',$row);
$row_data = str_replace('Interactions',$row_data);
$data['columns'] = str_getcsv($row_data);
$columns_row_index = $row_count;
} elseif($row_count > $columns_row_index && !empty($columns_row_index)){
$row_data = $row;
if(!stristr($row,'Total') && !empty($row)){
$data['values'][] = str_getcsv($row_data);
}
}
}
}
fclose($csvfile);
}else{
$data = false;
}
return $data;
}
此代码已经使用了很长时间,但是最近突然停止了工作,没有进行任何更改。我似乎无法解决这个问题,因为我找不到任何错误。请帮忙。谢谢!