Frage

Ich kann das nicht zum Laufen bringen, ich muss den Gesamtauftragsbetrag pro Tag auf dem Diagramm anzeigen.

Ich habe das offene Flash -Diagramm mit dem folgenden Code zum Laufen gebracht:


<?php

// Settings for Database Connection
include_once($root_folder_path . "includes/common.php");
include_once("./admin_common.php");
include_once("./ofc_chart_library/open-flash-chart.php");

$sql = "SELECT * from orders ORDER BY 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 a Y Axis object
*/
$y_axis = new y_axis();
$y_axis->set_range(0, 12000, 1000);

// Add the y-axis object to the chart
$chart->add_y_axis($y_axis);

echo $chart->toPrettyString();
?>

Jetzt ist der obige Code gut angezeigt, hier ist der Snapshot:
http://static.zooomr.com/images/7749303_49fd833a44_o.jpg

Ich möchte das Datum der X-Achse anzeigen und die Datumswerte aus meiner MySQL-Datenbank übernehmen.

So werden die Daten in meiner Datenbank gespeichert, was ein DateTime -Typ ist:

2008-12-30 00:06:24
2009-02-03 01:57:17
2009-02-03 01:58:27
2009-05-03 01:58:48
2009-06-03 02:00:31
2009-07-03 02:01:47
2009-07-03 02:02:31
2009-07-04 14:21:18
2009-07-04 14:21:36
2009-07-04 14:22:18
2009-07-04 14:23:29
2009-07-04 14:24:24

Ich habe den folgenden Code ausprobiert, um das Datum in der X-Achse anzuzeigen:


<?php

include_once 'php-ofc-library/open-flash-chart.php';

//Connect to MySQL Database
$con = mysql_connect("localhost", "root", "password");
    if (!$con) die('Could not connect : ' . mysql_error());
$db_selected = mysql_select_db("cart",$con);
    if (!db_selected) die ("Could not find the database: " . mysql_error());

$sql = "SELECT * from orders ORDER BY order_placed_date";
    if (!$sql) die('Invalid query: ' . mysql_error());

$result = mysql_query($sql);

$amountData = array();


while($row = mysql_fetch_array($result))
{
  $amountData[] = intval($row['order_total']); 
}

$chart = new open_flash_chart();
$chart->set_title(new title('Open Flash Chart Downloads'));

//Make Bar Chart
$bar = new bar_filled('#df95c3', '#f34db7');
$bar->set_values($amountData);

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

/*
 *  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;}" );

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


// Add the bar object to the chart
$chart->add_element($bar);


//
// create an X Axis object
//
$x_axis = new x_axis();
// grid line and tick every 10
$x_axis->set_range(
    mktime(0, 0, 0, 1, 1, date('Y')),    // <-- min == 1st Jan, this year
    mktime(0, 0, 0, 1, 31, date('Y'))    // <-- max == 31st Jan, this year
    );
// show ticks and grid lines for every day:
$x_axis->set_steps(86400);

$labels = new x_axis_labels();
// tell the labels to render the number as a date:
$labels->text('#date:d#');
// 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_axis->set_labels($labels);


$y_axis = new y_axis();
$y_axis->set_range(0, 3000, 200);

// Display the Axis on the Chart
$chart->set_x_axis($x_axis);
$chart->add_y_axis($y_axis);

echo $chart->toPrettyString();


?>

Hier ist was ich habe:
http://static.zooomr.com/images/7749325_1c8b37fdf9_o.jpg

Die Menge wird angezeigt, aber alles befindet sich in einer Zeile an der 0 x-Achse.

Wie kann ich dieses Problem lösen? Erhalten Sie also die Bestelldaten aus der Datenbank und zeigen Sie sie dann nach dem Datum an, an dem die Bestellung aufgegeben wurde.

============================================================

Nachfolgend finden Sie die JSON -Daten für beide Bestellsummen und das Datum, an dem sie platziert wurden.


<?php

include_once 'php-ofc-library/open-flash-chart.php';

//Connect to MySQL Database
$con = mysql_connect("localhost", "root", "password");
    if (!$con) die('Could not connect : ' . mysql_error());
$db_selected = mysql_select_db("cart",$con);
    if (!db_selected) die ("Could not find the database: " . mysql_error());

$sql = "SELECT * from orders ORDER BY order_placed_date";
    if (!$sql) die('Invalid query: ' . mysql_error());

$result = mysql_query($sql);

$dateData = array();
$TotalAmountData = array();

while($row = mysql_fetch_array($result))
{
  $TotalAmountData [] = intval($row['order_total']);
  $dateData[] = $row['order_placed_date'];

}

print '<pre>';
print_r( $TotalAmountData );
print_r( $dateData );
print '</pre>';[/code]

?>

Dies zeigt die folgenden JSON -Daten:

Array  // This is the Total Order Amount Per Day
(
    [0] => 2499
    [1] => 199
    [2] => 449
    [3] => 299
    [4] => 359
    [5] => 279
    [6] => 1359
    [7] => 5099
    [8] => 2621
    [9] => 2169
    [10] => 2249
    [11] => 5509
)
Array // This is the DateTime on which the orders where placed
(
    [0] => 2008-12-30 00:06:24
    [1] => 2009-02-03 01:57:17
    [2] => 2009-02-03 01:58:27
    [3] => 2009-05-03 01:58:48
    [4] => 2009-06-03 02:00:31
    [5] => 2009-07-03 02:01:47
    [6] => 2009-07-03 02:02:31
    [7] => 2009-07-04 14:21:18
    [8] => 2009-07-04 14:21:36
    [9] => 2009-07-04 14:22:18
    [10] => 2009-07-04 14:23:29
    [11] => 2009-07-04 14:24:24
)

Ich habe versucht, das Datum auszuwählen, indem ich die Uhrzeit ab dem Datum beseitigte:

SELECT DATE_FORMAT(order_placed_date, '%m-%d-%Y'), order_total FROM orders

Der obige Code zeigte jedoch leere Werte für JSON -Daten

Update: Kann jemand helfen?

War es hilfreich?

Lösung

Sind Ihre Werte wirklich pro Tag Gesamtbetrag? Es sieht so aus, als wäre es die Gesamtzahl pro Bestellung mit dem Datum der Bestellung.

Das Problem mit Ihrem ersten Diagramm ist, dass Sie Ihre Werte nicht bis zu den Summen pro Tag einballen - das Open Flash -Diagramm nicht für Sie. Sie könnten dies als Teil Ihrer SQL -Abfrage tun (z. B. Verwendung DATUM() Um die DateTims in Daten umzuwandeln) oder mit PHP durch Parsen und Umformigen der Daten und die Zusammenfassung der Werte für den selben Tag. Beachten Sie, dass Sie je nachdem, wie Sie mit der X-Achse umgehen, möglicherweise auch tagelang 0 Einträge ohne Bestellungen hinzufügen.

Das Problem mit Ihrem zweiten Diagramm ist, dass Sie ein Element pro Sekunde festlegen, Ihre Daten jedoch pro Tag sein sollten. Das Wichtigste hier ist zu verstehen Der Unterschied zwischen Zeilendiagrammen und Streudiagrammen in offenem Flash -Diagramm. Zeilendiagramme werden unter Verwendung eines eindimensionalen Arrays von Datenpunkten aufgetragen, während Streudiagramme mit Koordinaten aufgetragen werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top