TransWikia.com

Como poderia otimizar este código PHP JS?

Stack Overflow em Português Asked by Wanderson Borges on September 27, 2021

Tenho este código em PHP e JS que busca no BD as visitas que o site X recebeu no mês atual e joga em um gráfico do Google Charts.

Apesar de estar funcional e me servir bem até então, eu fico incomodado com a aparência e o tamanho disto e gostaria muito de saber se teria alguma forma melhor de executar essa mesma tarefa com um código bem mais limpo e inteligente.

Desde já agradeço qualquer contribuição.

Segue abaixo trecho em PHP:

<?php
$meses = array(
    '01'=>'Janeiro',
    '02'=>'Fevereiro',
    '03'=>'Março',
    '04'=>'Abril',
    '05'=>'Maio',
    '06'=>'Junho',
    '07'=>'Julho',
    '08'=>'Agosto',
    '09'=>'Setembro',
    '10'=>'Outubro',
    '11'=>'Novembro',
    '12'=>'Dezembro'
);

$mes_atual_nome = $meses[date('m')];

$mes_atual = date('m');
$ano_atual = date('Y');

$ReadViewsDia_1 = ExeRead("pageviews WHERE pageview_dia = '01' AND pageview_mes = '$mes_atual' AND pageview_ano = '$ano_atual'");
$numViewsDia_1 = mysqli_num_rows($ReadViewsDia_1);
if ($numViewsDia_1 > 0): $TotalViewsdia_1 = $numViewsDia_1; else: $TotalViewsdia_1 = '0'; endif;

$ReadViewsDia_2 = ExeRead("pageviews WHERE pageview_dia = '02' AND pageview_mes = '$mes_atual' AND pageview_ano = '$ano_atual'");
$numViewsDia_2 = mysqli_num_rows($ReadViewsDia_2);
if ($numViewsDia_2 > 0): $TotalViewsdia_2 = $numViewsDia_2; else: $TotalViewsdia_2 = '0'; endif;

$ReadViewsDia_3 = ExeRead("pageviews WHERE pageview_dia = '03' AND pageview_mes = '$mes_atual' AND pageview_ano = '$ano_atual'");
$numViewsDia_3 = mysqli_num_rows($ReadViewsDia_3);
if ($numViewsDia_3 > 0): $TotalViewsdia_3 = $numViewsDia_3; else: $TotalViewsdia_3 = '0'; endif;

$ReadViewsDia_4 = ExeRead("pageviews WHERE pageview_dia = '04' AND pageview_mes = '$mes_atual' AND pageview_ano = '$ano_atual'");
$numViewsDia_4 = mysqli_num_rows($ReadViewsDia_4);
if ($numViewsDia_4 > 0): $TotalViewsdia_4 = $numViewsDia_4; else: $TotalViewsdia_4 = '0'; endif;

$ReadViewsDia_5 = ExeRead("pageviews WHERE pageview_dia = '05' AND pageview_mes = '$mes_atual' AND pageview_ano = '$ano_atual'");
$numViewsDia_5 = mysqli_num_rows($ReadViewsDia_5);
if ($numViewsDia_5 > 0): $TotalViewsdia_5 = $numViewsDia_5; else: $TotalViewsdia_5 = '0'; endif;

$ReadViewsDia_6 = ExeRead("pageviews WHERE pageview_dia = '06' AND pageview_mes = '$mes_atual' AND pageview_ano = '$ano_atual'");
$numViewsDia_6 = mysqli_num_rows($ReadViewsDia_6);
if ($numViewsDia_6 > 0): $TotalViewsdia_6 = $numViewsDia_6; else: $TotalViewsdia_6 = '0'; endif;

$ReadViewsDia_7 = ExeRead("pageviews WHERE pageview_dia = '07' AND pageview_mes = '$mes_atual' AND pageview_ano = '$ano_atual'");
$numViewsDia_7 = mysqli_num_rows($ReadViewsDia_7);
if ($numViewsDia_7 > 0): $TotalViewsdia_7 = $numViewsDia_7; else: $TotalViewsdia_7 = '0'; endif;

$ReadViewsDia_8 = ExeRead("pageviews WHERE pageview_dia = '08' AND pageview_mes = '$mes_atual' AND pageview_ano = '$ano_atual'");
$numViewsDia_8 = mysqli_num_rows($ReadViewsDia_8);
if ($numViewsDia_8 > 0): $TotalViewsdia_8 = $numViewsDia_8; else: $TotalViewsdia_8 = '0'; endif;

$ReadViewsDia_9 = ExeRead("pageviews WHERE pageview_dia = '09' AND pageview_mes = '$mes_atual' AND pageview_ano = '$ano_atual'");
$numViewsDia_9 = mysqli_num_rows($ReadViewsDia_9);
if ($numViewsDia_9 > 0): $TotalViewsdia_9 = $numViewsDia_9; else: $TotalViewsdia_9 = '0'; endif;

$ReadViewsDia_10 = ExeRead("pageviews WHERE pageview_dia = '10' AND pageview_mes = '$mes_atual' AND pageview_ano = '$ano_atual'");
$numViewsDia_10 = mysqli_num_rows($ReadViewsDia_10);
if ($numViewsDia_10 > 0): $TotalViewsdia_10 = $numViewsDia_10; else: $TotalViewsdia_10 = '0'; endif;

$ReadViewsDia_11 = ExeRead("pageviews WHERE pageview_dia = '11' AND pageview_mes = '$mes_atual' AND pageview_ano = '$ano_atual'");
$numViewsDia_11 = mysqli_num_rows($ReadViewsDia_11);
if ($numViewsDia_11 > 0): $TotalViewsdia_11 = $numViewsDia_11; else: $TotalViewsdia_11 = '0'; endif;

$ReadViewsDia_12 = ExeRead("pageviews WHERE pageview_dia = '12' AND pageview_mes = '$mes_atual' AND pageview_ano = '$ano_atual'");
$numViewsDia_12 = mysqli_num_rows($ReadViewsDia_12);
if ($numViewsDia_12 > 0): $TotalViewsdia_12 = $numViewsDia_12; else: $TotalViewsdia_12 = '0'; endif;

$ReadViewsDia_13 = ExeRead("pageviews WHERE pageview_dia = '13' AND pageview_mes = '$mes_atual' AND pageview_ano = '$ano_atual'");
$numViewsDia_13 = mysqli_num_rows($ReadViewsDia_13);
if ($numViewsDia_13 > 0): $TotalViewsdia_13 = $numViewsDia_13; else: $TotalViewsdia_13 = '0'; endif;

$ReadViewsDia_14 = ExeRead("pageviews WHERE pageview_dia = '14' AND pageview_mes = '$mes_atual' AND pageview_ano = '$ano_atual'");
$numViewsDia_14 = mysqli_num_rows($ReadViewsDia_14);
if ($numViewsDia_14 > 0): $TotalViewsdia_14 = $numViewsDia_14; else: $TotalViewsdia_14 = '0'; endif;

$ReadViewsDia_15 = ExeRead("pageviews WHERE pageview_dia = '15' AND pageview_mes = '$mes_atual' AND pageview_ano = '$ano_atual'");
$numViewsDia_15 = mysqli_num_rows($ReadViewsDia_15);
if ($numViewsDia_15 > 0): $TotalViewsdia_15 = $numViewsDia_15; else: $TotalViewsdia_15 = '0'; endif;

$ReadViewsDia_16 = ExeRead("pageviews WHERE pageview_dia = '16' AND pageview_mes = '$mes_atual' AND pageview_ano = '$ano_atual'");
$numViewsDia_16 = mysqli_num_rows($ReadViewsDia_16);
if ($numViewsDia_16 > 0): $TotalViewsdia_16 = $numViewsDia_16; else: $TotalViewsdia_16 = '0'; endif;

$ReadViewsDia_17 = ExeRead("pageviews WHERE pageview_dia = '17' AND pageview_mes = '$mes_atual' AND pageview_ano = '$ano_atual'");
$numViewsDia_17 = mysqli_num_rows($ReadViewsDia_17);
if ($numViewsDia_17 > 0): $TotalViewsdia_17 = $numViewsDia_17; else: $TotalViewsdia_17 = '0'; endif;

$ReadViewsDia_18 = ExeRead("pageviews WHERE pageview_dia = '18' AND pageview_mes = '$mes_atual' AND pageview_ano = '$ano_atual'");
$numViewsDia_18 = mysqli_num_rows($ReadViewsDia_18);
if ($numViewsDia_18 > 0): $TotalViewsdia_18 = $numViewsDia_18; else: $TotalViewsdia_18 = '0'; endif;

$ReadViewsDia_19 = ExeRead("pageviews WHERE pageview_dia = '19' AND pageview_mes = '$mes_atual' AND pageview_ano = '$ano_atual'");
$numViewsDia_19 = mysqli_num_rows($ReadViewsDia_19);
if ($numViewsDia_19 > 0): $TotalViewsdia_19 = $numViewsDia_19; else: $TotalViewsdia_19 = '0'; endif;

$ReadViewsDia_20 = ExeRead("pageviews WHERE pageview_dia = '20' AND pageview_mes = '$mes_atual' AND pageview_ano = '$ano_atual'");
$numViewsDia_20 = mysqli_num_rows($ReadViewsDia_20);
if ($numViewsDia_20 > 0): $TotalViewsdia_20 = $numViewsDia_20; else: $TotalViewsdia_20 = '0'; endif;

$ReadViewsDia_21 = ExeRead("pageviews WHERE pageview_dia = '21' AND pageview_mes = '$mes_atual' AND pageview_ano = '$ano_atual'");
$numViewsDia_21 = mysqli_num_rows($ReadViewsDia_21);
if ($numViewsDia_21 > 0): $TotalViewsdia_21 = $numViewsDia_21; else: $TotalViewsdia_21 = '0'; endif;

$ReadViewsDia_22 = ExeRead("pageviews WHERE pageview_dia = '22' AND pageview_mes = '$mes_atual' AND pageview_ano = '$ano_atual'");
$numViewsDia_22 = mysqli_num_rows($ReadViewsDia_22);
if ($numViewsDia_22 > 0): $TotalViewsdia_22 = $numViewsDia_22; else: $TotalViewsdia_22 = '0'; endif;

$ReadViewsDia_23 = ExeRead("pageviews WHERE pageview_dia = '23' AND pageview_mes = '$mes_atual' AND pageview_ano = '$ano_atual'");
$numViewsDia_23 = mysqli_num_rows($ReadViewsDia_23);
if ($numViewsDia_23 > 0): $TotalViewsdia_23 = $numViewsDia_23; else: $TotalViewsdia_23 = '0'; endif;

$ReadViewsDia_24 = ExeRead("pageviews WHERE pageview_dia = '24' AND pageview_mes = '$mes_atual' AND pageview_ano = '$ano_atual'");
$numViewsDia_24 = mysqli_num_rows($ReadViewsDia_24);
if ($numViewsDia_24 > 0): $TotalViewsdia_24 = $numViewsDia_24; else: $TotalViewsdia_24 = '0'; endif;

$ReadViewsDia_25 = ExeRead("pageviews WHERE pageview_dia = '25' AND pageview_mes = '$mes_atual' AND pageview_ano = '$ano_atual'");
$numViewsDia_25 = mysqli_num_rows($ReadViewsDia_25);
if ($numViewsDia_25 > 0): $TotalViewsdia_25 = $numViewsDia_25; else: $TotalViewsdia_25 = '0'; endif;

$ReadViewsDia_26 = ExeRead("pageviews WHERE pageview_dia = '26' AND pageview_mes = '$mes_atual' AND pageview_ano = '$ano_atual'");
$numViewsDia_26 = mysqli_num_rows($ReadViewsDia_26);
if ($numViewsDia_26 > 0): $TotalViewsdia_26 = $numViewsDia_26; else: $TotalViewsdia_26 = '0'; endif;

$ReadViewsDia_27 = ExeRead("pageviews WHERE pageview_dia = '27' AND pageview_mes = '$mes_atual' AND pageview_ano = '$ano_atual'");
$numViewsDia_27 = mysqli_num_rows($ReadViewsDia_27);
if ($numViewsDia_27 > 0): $TotalViewsdia_27 = $numViewsDia_27; else: $TotalViewsdia_27 = '0'; endif;

$ReadViewsDia_28 = ExeRead("pageviews WHERE pageview_dia = '28' AND pageview_mes = '$mes_atual' AND pageview_ano = '$ano_atual'");
$numViewsDia_28 = mysqli_num_rows($ReadViewsDia_28);
if ($numViewsDia_28 > 0): $TotalViewsdia_28 = $numViewsDia_28; else: $TotalViewsdia_28 = '0'; endif;

$ReadViewsDia_29 = ExeRead("pageviews WHERE pageview_dia = '29' AND pageview_mes = '$mes_atual' AND pageview_ano = '$ano_atual'");
$numViewsDia_29 = mysqli_num_rows($ReadViewsDia_29);
if ($numViewsDia_29 > 0): $TotalViewsdia_29 = $numViewsDia_29; else: $TotalViewsdia_29 = '0'; endif;

$ReadViewsDia_30 = ExeRead("pageviews WHERE pageview_dia = '30' AND pageview_mes = '$mes_atual' AND pageview_ano = '$ano_atual'");
$numViewsDia_30 = mysqli_num_rows($ReadViewsDia_30);
if ($numViewsDia_30 > 0): $TotalViewsdia_30 = $numViewsDia_30; else: $TotalViewsdia_30 = '0'; endif;

$ReadViewsDia_31 = ExeRead("pageviews WHERE pageview_dia = '31' AND pageview_mes = '$mes_atual' AND pageview_ano = '$ano_atual'");
$numViewsDia_31 = mysqli_num_rows($ReadViewsDia_31);
if ($numViewsDia_31 > 0): $TotalViewsdia_31 = $numViewsDia_31; else: $TotalViewsdia_31 = '0'; endif;

Abaixo o trecho em JS:

<script type="text/javascript">
google.charts.load('current', {'packages':['corechart']});
google.charts.setOnLoadCallback(drawChart);

function drawChart() {
    var data = google.visualization.arrayToDataTable([
        ['Dias', {type: 'string', role: 'annotation'}, 'Todas as visitas', 'Visitas únicas ao site'],
        ['Dia 1', '', <?=$TotalViewsdia_1 ?>,      0],
        ['Dia 2', '',  <?=$TotalViewsdia_2 ?>,      0],
        ['Dia 3', '',  <?=$TotalViewsdia_3 ?>,       0],
        ['Dia 4', '',  <?=$TotalViewsdia_4 ?>,      0],
        ['Dia 5', '',  <?=$TotalViewsdia_5 ?>,      0],
        ['Dia 6', '',  <?=$TotalViewsdia_6 ?>,      0],
        ['Dia 7', '',  <?=$TotalViewsdia_7 ?>,      0],
        ['Dia 8', '',  <?=$TotalViewsdia_8 ?>,      0],
        ['Dia 9', '',  <?=$TotalViewsdia_9 ?>,      0],
        ['Dia 10', '',  <?=$TotalViewsdia_10 ?>,      0],
        ['Dia 11', '',  <?=$TotalViewsdia_11 ?>,      0],
        ['Dia 12', '',  <?=$TotalViewsdia_12 ?>,      0],
        ['Dia 13', '',  <?=$TotalViewsdia_13 ?>,      0],
        ['Dia 14', '',  <?=$TotalViewsdia_14 ?>,      0],
        ['Dia 15', '',  <?=$TotalViewsdia_15 ?>,      0],
        ['Dia 16', '',  <?=$TotalViewsdia_16 ?>,      0],
        ['Dia 17', '',  <?=$TotalViewsdia_17 ?>,      0],
        ['Dia 18', '',  <?=$TotalViewsdia_18 ?>,      0],
        ['Dia 19', '',  <?=$TotalViewsdia_19 ?>,      0],
        ['Dia 20', '',  <?=$TotalViewsdia_20 ?>,      0],
        ['Dia 21', '',  <?=$TotalViewsdia_21 ?>,      0],
        ['Dia 22', '',  <?=$TotalViewsdia_22 ?>,      0],
        ['Dia 23', '',  <?=$TotalViewsdia_23 ?>,      0],
        ['Dia 24', '',  <?=$TotalViewsdia_24 ?>,      0],
        ['Dia 25', '',  <?=$TotalViewsdia_25 ?>,      0],
        ['Dia 26', '',  <?=$TotalViewsdia_26 ?>,      0],
        ['Dia 27', '',  <?=$TotalViewsdia_27 ?>,      0],
        ['Dia 28', '',  <?=$TotalViewsdia_28 ?>,      0],
        ['Dia 29', '',  <?=$TotalViewsdia_29 ?>,      0],
        ['Dia 30', '',  <?=$TotalViewsdia_30 ?>,      0],
        ['Dia 31', '',  <?=$TotalViewsdia_31 ?>,      0]
    ]);

    var options = {
        chartArea : { top:20 },
        vAxis: {minValue: 0},
        curveType: 'function',
        backgroundColor: 'none',
        legend: { position: 'bottom' },
        annotations: { style: 'line' },
        colors: ['#15A0C8', '#dc3912'],
        pointSize: 7,
        series: {
            0: { pointShape: 'circle' },
            1: { pointShape: 'triangle' },
            2: { pointShape: 'square' },
            3: { pointShape: 'diamond' },
            4: { pointShape: 'star' },
            5: { pointShape: 'polygon' }
        }
    };

    var chart = new google.visualization.AreaChart(document.getElementById('curve_chart'));
    chart.draw(data, options);
}
</script>

One Answer

você pode fazer um array de $TotalViewsdia:

<?php
$meses = array(
    '01' => 'Janeiro',
    '02' => 'Fevereiro',
    '03' => 'Março',
    '04' => 'Abril',
    '05' => 'Maio',
    '06' => 'Junho',
    '07' => 'Julho',
    '08' => 'Agosto',
    '09' => 'Setembro',
    '10' => 'Outubro',
    '11' => 'Novembro',
    '12' => 'Dezembro'
);

$mes_atual_nome = $meses[date('m')];

$mes_atual = date('m');
$ano_atual = date('Y');

$TotalViewsdia = [];
for ($i=1; $i < 32; $i++) { 
    $ReadViewsDia = ExeRead("pageviews WHERE pageview_dia = '$i' AND pageview_mes = '$mes_atual' AND pageview_ano = '$ano_atual'");
    $numViewsDia = mysqli_num_rows($ReadViewsDia);

    $TotalViewsdia[$i] = ($numViewsDia > 0) ? $numViewsDia : 0;
}

No script você pode rodar o foreach listando os valores do array:

google.charts.load('current', {'packages':['corechart']});
google.charts.setOnLoadCallback(drawChart);

function drawChart() {
var data = google.visualization.arrayToDataTable([
['Dias', {type: 'string', role: 'annotation'}, 'Todas as visitas', 'Visitas únicas ao site'],

<?php
foreach ($TotalViewsdia as $key => $value) {
?>
    ['Dia <?=$key?>', '', <?= $value ?>, 0],
<?php
}
?>
    ]);
var options = {
chartArea : { top:20 },
vAxis: {minValue: 0},
curveType: 'function',
backgroundColor: 'none',
legend: { position: 'bottom' },
annotations: { style: 'line' },
colors: ['#15A0C8', '#dc3912'],
pointSize: 7,
series: {
0: { pointShape: 'circle' },
1: { pointShape: 'triangle' },
2: { pointShape: 'square' },
3: { pointShape: 'diamond' },
4: { pointShape: 'star' },
5: { pointShape: 'polygon' }
}
};

var chart = new google.visualization.AreaChart(document.getElementById('curve_chart'));
chart.draw(data, options);
}

Correct answer by Samuel Marques on September 27, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP