문제

나는 현재 달에 하루에 총 주문 금액을 표시하려고합니다.

$sql = "SELECT date(order_placed_date), 
               COUNT(order_id), 
               SUM(order_total) AS order_total 
        FROM orders 
        WHERE order_placed_date>=date_sub(current_date, INTERVAL 31 DAY) 
        GROUP BY date(order_placed_date)";

if (!$sql) die('Invalid query: ' . mysql_error());

$result = mysql_query($sql);
$data = array();
while($row = mysql_fetch_array($result))
{
  $data[] = intval($row['order_total']);
}

/*
 *  Create a title object and set the text to present month.
 */
$title = new title('Monthly Sales Statistics for '.date("F Y").' (US Dollar)');
$title->set_style( "{font-size: 18px; 
                     font-family: Calibri; 
                     color: #808000; 
                     text-align: center;}" );

//Make our Bar Chart
$bar = new bar_filled('#f99bd6', '#ee0099');
$bar->set_values($data);

//Create a new Chart object
$chart = new open_flash_chart();

// add the title to the chart:
$chart->set_title( $title );
$chart->set_bg_colour("#FFFFFF");

// Display the bar object on the chart
$chart->add_element($bar);

// create an X Axis object
$x = new x_axis();

// grid line and tick every 10
$x->set_range(
    mktime(0, 0, 0, 7, 1, date('Y')),    // <-- min == 1st Jan, this year
    mktime(0, 0, 0, 7, 31, date('Y'))    // <-- max == 31st Jan, this year
    );

// show ticks and grid lines for every day:
$x->set_steps(86400);

$labels = new x_axis_labels();

// tell the labels to render the number as a date:
$labels->text('#date:j #');

// generate labels for every day
$labels->set_steps(86400);

// only display every other label (every other day)
$labels->visible_steps(1);

// finally attach the label definition to the x axis
$x->set_labels($labels);


//Create a Y Axis object
$y_axis = new y_axis();
$y_axis->set_range(1, 15000, 1000);

//Add the y-axis object to the chart
$chart->add_y_axis($y_axis);
$chart->set_x_axis( $x );
echo $chart->toPrettyString();
?>

이것이 내가 얻는 것입니다.

누구든지 문제가 어디에 있고 어떻게 수정 해야하는지 알려줄 수 있습니까?

여기에 있습니다 print_r($data) 산출:

다음은 출력입니다 print_r($data)

Array
(
    [0] => 7721
    [1] => 2169
    [2] => 2249
    [3] => 5509
    [4] => 8729
    [5] => 5899
    [6] => 1793
    [7] => 11307
    [8] => 0
    [9] => 0
    [10] => 0
    [11] => 0
    [12] => 0
    [13] => 0
    [14] => 0
    [15] => 0
    [16] => 0
    [17] => 0
    [18] => 0
    [19] => 0
    [20] => 0
    [21] => 0
    [22] => 0
    [23] => 0
    [24] => 0
    [25] => 0
    [26] => 0
    [27] => 0
    [28] => 0
    [29] => 0
    [30] => 0
)

나는 while 루프를 바꿨다 :

for( $i=1; $i<32; $i++ )
{
    $row = mysql_fetch_array($result);    
    $data[] = intval($row['order_total']);
}

다음은 루프에 위의 위의 차트를 사용할 때 업데이트 된 차트입니다.Alt Text http://static.zooomr.com/images/7807811_1B3C7274_O.png

도움이 되었습니까?

해결책

문제는 내가 말했듯이 다른 스레드에서, 당신은 31 개의 데이터 요소 (하루에 1 개)를 가지고 있지만,이 코드는 31 일의 2,678,400 초마다 하나의 x 축 요소를 생성합니다.

// grid line and tick every 10
$x->set_range(
    mktime(0, 0, 0, 7, 1, date('Y')),    // <-- min == 1st
Jan, this year
    mktime(0, 0, 0, 7, 31, date('Y'))    // <-- max == 31st
Jan, this year
    );

// show ticks and grid lines for every day: 
$x->set_steps(86400);

당신이 그 라인을 제거하면 훨씬 더 잘 작동 할 것입니다.

그런 다음 x 축 요소에 대한 레이블 배열을 제공하고 사용하여 설정해야합니다. $x->set_labels_from_array($array_of_labels);

있습니다 여기서 수행하는 방법의 예.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top