早上好,我遇到了一个动态站点,该站点生成 Google Chart 的图形作为发送到服务器的 xls 电子表格。
每月,是 5 个工作表。3张工作表,刻度值在0到50之间,取值为0、12.5、25、37.5和50。其中两张,取值在0到60之间,取值为0、15 , 30, 45 和 60。
两种秤的 PHP 代码相同。但在某些情况下,电子表格是正确的(值为 0、12.5 等,或 0、15、30 等),而在其他情况下,它只是忽略它,只播放 0 的数据, 15、30 等...
我想知道谷歌图表在哪里提取数据以生成刻度,以及如何始终正确显示刻度(表 1、2 和 3,分数在 0 到 50 之间,以及表 4 和 5,范围在 0 到60)。
附上代码。
<?php
function showDate( $current ){
$ano = substr($current, 0, 4);
$mes = substr($current, 5);
switch ($mes){
case 1: $mes = 'Janeiro'; break;
case 2: $mes = 'Fevereiro'; break;
case 3: $mes = 'Março'; break;
case 4: $mes = 'Abril'; break;
case 5: $mes = 'Maio'; break;
case 6: $mes = 'Junho'; break;
case 7: $mes = 'Julho'; break;
case 8: $mes = 'Agosto'; break;
case 9: $mes = 'Setembro'; break;
case 10: $mes = 'Outubro'; break;
case 11: $mes = 'Novembro'; break;
case 12: $mes = 'Dezembro'; break;
}
printf("%s/%s", $mes, $ano);
}
define('WP_USE_THEMES', false);
require('../../../wp-blog-header.php');
status_header('200');
$produto = get_post(esc_html($_GET['pro']));
$produto_sheet = array(
'cp-ii-f-32' => "CP II-F",
'cp-ii-z-32' => "CP II-Z",
'cp-iv-32' => "CP IV",
'cp-v-ari' => "CP V",
'cp-v-ari-rs' => "CP V-RS"
);
require( dirname( __FILE__ ) . '/_theme/PHPExcel.php' );
$meta = get_option('opcoes_relatorio');
$directories = wp_upload_dir();
$current = isset($_GET['chave']) ? $_GET['chave'] : '';
foreach($meta as $key => $value){
if(substr($key, 5) == 13) continue;
$menu[] = array(
'class' => $current == $key ? ('current') : (''),
'label' => substr(getMonthName(substr($key, 5)), 0, 3) . ' ' . substr($key, 0, 4),
'chave' => $key
);
$ano[] = substr($key, 0, 4);
$mes[] = substr($key, 5);
}
array_multisort($ano, $mes, $menu, SORT_NUMERIC);
if($current == ''){
$current = $menu[count($menu)-1]['chave'];
foreach($menu as &$m){
if($m['chave'] == substr($current, 0, 4) . '-' . (int)substr($current, 5)){
$m['class'] = 'current';
}
}
}
$xls['file'] = $directories['basedir'];
$xls['sub'] = preg_replace('~(.*)?([0-9]{4}/[0-9]{2}/.*\.xls)~', '$2', $meta[$current]);
if( (int)substr($current, 5) != 13 ){
$rows = getValuesRelatorio($xls['file'].'/'.$xls['sub'], $produto_sheet[$produto->post_name]);
//$minimo[0] = 0;
//$minimo[1] = 10;
//$minimo[2] = 20;
//$minimo[3] = 32;
$minimo = getMinimoAnualRelatorio($xls['file'].'/'.$xls['sub'], $produto_sheet[$produto->post_name]);
} else {
$rows = getMediaAnualRelatorio($xls['file'].'/'.$xls['sub'], $produto_sheet[$produto->post_name]);
$minimo = getMinimoAnualRelatorio($xls['file'].'/'.$xls['sub'], $produto_sheet[$produto->post_name], 34);
}
$media = array();
foreach($rows['media'] as $row){
if($row[0] == "Média"){
for($i = 1; $i < 5; $i++){
$media[] = $row[count($row)-$i];
}
}
}
foreach ($minimo as $key => $value) {
$minimo[$key] = str_replace(',', '.', $minimo[$key]);
}
foreach ($media as $key => $value) {
$media[$key] = str_replace(',', '.', $media[$key]);
}
?>
<body>
<div id="logo"><img src="_assets/images/master/header-logo.png" alt="" /></div>
<h2><?php echo $produto->post_title; ?> <br /><span><?php showDate($current); ?></span></h2>
<div class="wrap">
<table cellpadding="0" cellspacing="0" border="0" class="green-table">
<thead>
<tr>
<th rowspan="3" class="data">Data</th>
<th colspan="10">QUÍMICOS</th>
<th colspan="11" class="fisicos">FÍSICOS</th>
</tr>
<tr class="gray-01">
<th>Al<sub>2</sub>O<sub>3</sub></th>
<th>SiO<sub>2</sub></th>
<th>Fe<sub>2</sub>O<sub>3</sub></th>
<th>CaO</th>
<th>MgO</th>
<th>SO<sub>3</sub></th>
<th>P. Fogo</th>
<th>CaO L.</th>
<th>R. Ins.</th>
<th>Eq. Alc</th>
<th>Exp.</th>
<th colspan="2">Tempo de<br />Pega (h:min)</th>
<th>Cons.<br />Normal</th>
<th>Blaine</th>
<th>#<br />200</th>
<th>#<br />325</th>
<th colspan="4">Resistência à<br />Compressão (MPa)</th>
</tr>
<tr class="gray-02">
<th>%</th>
<th>%</th>
<th>%</th>
<th>%</th>
<th>%</th>
<th>%</th>
<th>%</th>
<th>%</th>
<th>%</th>
<th>%</th>
<th>mm</th>
<th>Início</th>
<th>Fim</th>
<th>%</th>
<th>cm²/g</th>
<th>%</th>
<th>%</th>
<th>1 dias</th>
<th>3 dias</th>
<th>7 dias</th>
<th>28 dias</th>
</tr>
</thead>
<tbody>
<?php
$duasCasas = array(1,2,3,4,5,6,7,8,9,10,11,16,17);
$umaCasa = array(14,18,19,20,21);
$nenhumaCasa = array(0,15);
$duasCasasSd = array(1,2,3,4,5,6,7,8,9,10,11,16,17);
$umaCasaSd = array(14,18,19,20,21);
$nenhumaCasaSd = array(0);
?>
<?php if(isset($rows['values'])): foreach($rows['values'] as $row): ?>
<tr>
<?php foreach($row as $key=>$cell): ?>
<?php
if(!is_numeric($cell)){
preg_match("~[0-9]~", $cell, $matches);
if(empty($matches)){
$cell = "-";
}
} else if (in_array($key,$nenhumaCasa)) {
$cell = number_format($cell,0,',','.');
} elseif (in_array($key,$umaCasa)) {
$cell = number_format($cell,1,',','');
} elseif (in_array($key,$duasCasas)) {
$cell = number_format($cell,2,',','');
} ?>
<td><?php echo $cell; ?></td>
<?php endforeach; ?>
</tr>
<?php endforeach; endif; ?>
<?php foreach($rows['media'] as $rowKey=>$row): ?>
<tr style="font-weight: bold;">
<?php foreach($row as $key=>$cell): ?>
<?php
if($cell == "Sd"){
$sd = true;
}
if ($sd && $key == 15){
#$cell = number_format($cell,2,',','.');
$cell = explode(".", $cell);
$cell = number_format($cell[0],0,',','.') . "," . substr($cell[1], 0, 2);
$sd = null;
} else if($rowKey == 15 && $key == 15)
{
$cell = number_format($cell,2,',','');
} else if($rowKey == 24 && $key == 15)
{
$cell = number_format($cell,0,',','.');
} else {
if (in_array($key,$nenhumaCasa) && $key != 0) {
$cell = number_format($cell,0,',','.');
} elseif (in_array($key,$umaCasa)) {
$cell = number_format($cell,1,',','');
} elseif (in_array($key,$duasCasas)) {
$cell = number_format($cell,2,',','');
}
}
?>
<td><?php echo $cell; ?></td>
<?php endforeach; ?>
</tr>
<?php endforeach; ?>
</tbody>
</table>
<?php
foreach($minimo as $val){
$nMinimo[] = intval($val);
}
foreach(array_reverse($media) as $val){
$nMedia[] = number_format($val, 1);
}
?>
<img class="chart" src="http://chart.apis.google.com/chart?chxl=0:|1|3|7|28|1:|Dias|2:|12%2C5|25%2C5|37%2C5|50%2C0&chxt=x,x,y&chxp=0,3.5,10.5,17.5,24.5,0|1,1.7|2,12.5,25.5,37.5,50&chxr=0,0,28|1,4,0|2,-5,50&chxs=0,676767,11.5,0,lt,676767&chxtc=0,10&chbh=a,0,11&chs=400x260&cht=bvg&chco=e6a736,60791b&chds=0.1,50,0.1,50&chd=t:<?php echo implode(',', $nMinimo); ?>|<?php echo implode(',', $nMedia); ?>&chdl=Minimos|Médios&chtt=<?php urlencode($produto->post_title); ?>&chm=N,666666,0,-1,11|N,666666,1,-1,11" width="400" height="260" alt="Vertical bar chart" />
<div class="produtos-obs">
<dl class="green-box">
<dt>Obs</dt>
<dd>
<p>
<small>
<?php echo get_post_meta($produto->ID, 'observacoes', true); ?>
</small>
</p>
</dd>
</dl>
</div>
<dl id="legend" class="green-box">
<dt></dt>
<dd>
<p><small>
Valores mínimos - NBR <?php echo get_post_meta($produto->ID, "nbr", true); ?> <br />
Valores médios - <?php echo $produto->post_title; ?>
</small></p>
</dd>
</dl>
</div>
</body>
<script type="text/javascript">
window.print();
</script>
谷歌图表代码
<img class="chart" src="http://chart.apis.google.com/chart?chxl=0:|1|3|7|28|1:|Dias|2:|12%2C5|25%2C5|37%2C5|50%2C0&chxt=x,x,y&chxp=0,3.5,10.5,17.5,24.5,0|1,1.7|2,12.5,25.5,37.5,50&chxr=0,0,28|1,4,0|2,-5,50&chxs=0,676767,11.5,0,lt,676767&chxtc=0,10&chbh=a,0,11&chs=400x260&cht=bvg&chco=e6a736,60791b&chds=0.1,50,0.1,50&chd=t:<?php echo implode(',', $nMinimo); ?>|<?php echo implode(',', $nMedia); ?>&chdl=Minimos|Médios&chtt=<?php urlencode($produto->post_title); ?>&chm=N,666666,0,-1,11|N,666666,1,-1,11" width="400" height="260" alt="Vertical bar chart" />
谢谢