Question

Je ne peux pas sembler obtenir ce travail, je dois afficher le total de la commande Montant par jour sur le graphique.

Je suis le Open Flash Chart de travailler par le code suivant:


<?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();
?>

Maintenant, le code ci-dessus apparaît bien, voici l'instantané:
http://static.zooomr.com/images/7749303_49fd833a44_o.jpg

Ce que je veux est d'afficher la date sur l'axe X, en prenant les valeurs de date de ma base de données MySQL.

Voici comment les dates sont stockées dans ma base de données, qui est un type DateTime:

  

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

J'ai essayé le code suivant pour afficher la date dans l'axe X:


<?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();


?>

Voici ce que je suis:
http://static.zooomr.com/images/7749325_1c8b37fdf9_o.jpg

le montant est montré, mais il y en une seule ligne à l'axe 0 x.

Comment puis-je résoudre ce problème, afin d'obtenir les dates de commande de la base de données puis de les afficher sur le graphique suivant la date de la commande.

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

est Ci-dessous les données JSON pour les totaux de commande et la date où ils ont été placés.


<?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]

?>

Cela montre les données JSON suivantes:

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
)

J'ai essayé de sélectionner la date en supprimant le temps de la date:

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

Mais le code ci-dessus a montré des valeurs vides pour les données JSON

Mise à jour: Quelqu'un peut-il aider?

Était-ce utile?

La solution

Vos valeurs vraiment par jour total par? Il semble que ce soit le total par commande, la date de l'ordre.

Le problème avec votre premier graphique est que vous n'êtes pas bucketing vos valeurs aux totaux par jour - Open Flash Chart ne le fera pas pour vous. Vous pouvez le faire dans le cadre de votre requête SQL (par exemple, utiliser DATE () pour convertir les datetimes aux dates), ou avec PHP par analyse syntaxique et reformater les dates et l'addition des valeurs pour le même jour. Notez que selon la façon dont vous gérez l'axe des x, vous pourriez aussi avoir besoin d'ajouter 0 entrées pour les jours sans ordre.

Le problème avec votre deuxième graphique est que vous configurez un élément par seconde, mais vos données doivent être par jour. L'important ici est de comprendre la différence entre les cartes de ligne et la diffusion graphiques Ouvrir graphique flash. Les graphiques en courbes sont tracées à l'aide d'un tableau à une dimension de points de données, alors que les cartes de dispersion sont tracées avec les coordonnées.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top