2

私はプログラミングの初心者のようなものです。後で PHP/Javascript でグラフを作成するために使用する MySQL テーブルから配列を作成しようとしています。

全体的なアイデアは、1 年のすべての週を表すデータで満たされた配列を作成したいということです。つまり、52 エントリの配列です (時々発生する 53 番目の週は忘れてください)。

私のデータベース:

データベースには、これに使用するテーブルが 1 つあります。

+------------------------+
私は生産私
+------------------------+
I Shift I (数値) I <-1 から 3 の範囲 (人によって異なるシフト)
I Line I (number) I <-1 ~ 8 の範囲 (さまざまな「コンベア ベルト」)
I 製品 I (番号) I <-0 からの範囲がたくさんあります! (フォームに入力します)
I 週 I (数値) I <-1 から 52 の範囲
+------------------------+

ここでのアイデアは、すべての製品の SUM で満たされた配列が必要だということです。SUM(Products) は、次のものが存在する必要があります。

シフト + ラインごとの全製品の合計。

シフト 1、ライン 1、10,000 製品を製造
シフト 1、ライン 2、15,000 製品を製造
シフト 1、ライン 3、20,000 製品を製造 (など)

SUM(Products)シフト 1 から 3 までのすべての製品、および 1 から 8 までのすべてのラインになります。
つまり、10,000 + 15,000 + 20,000 などです。

この合計を配列に入れ、「週 1」を配列キーとして使用したいと考えています。

したがって、最初の 1 週間は次のようになります。

$array (
    "1" => // SUM(products) of week 1 (which was the 10,000 + 15,000 + 20,000 etc)
    "2" => // SUM(products) of week 2
    "3" => // SUM(products) of week 3
// etc.

WHERE week='x' のみの違いで、52 の異なる MySQL クエリを追加することでこれを行うことができますか?

これまでのところ、interwebz で見つかったコードのみを試してきました。

どんな助けでも大歓迎です!:D

オランダからのご挨拶

4

2 に答える 2

1

WHERE句を削除するだけで、毎週の結果が得られます。

$result = mysql_query("SELECT week, SUM(products) AS total 
  FROM production GROUP BY week");

結果は結果セットから連続する行として返され、配列に入れることができます。

$sum_by_week = array();
while ($row = mysql_fetch_assoc($result)) {
  $sum_by_week[$row["week"]] = $row["total"];
}

PS:あなたはこれを求めていませんでしたが、mysql_*関数は非推奨になっていることに注意する必要があります。新しいPHPアプリケーションにはmysqli関数またはPDOの使用を開始する必要があります。既存のアプリケーションを維持しているだけの場合にのみ、古いmysql_*関数を使い続ける価値があります。

于 2012-12-29T18:54:17.413 に答える
1

別の拡張機能の代わりにmySQLを使用してしまったことを事前に謝罪します。;-)

<?php // RAY_temp_rowan.php
error_reporting(E_ALL);
echo "<pre>";


// CONNECTION AND SELECTION VARIABLES FOR THE DATABASE
$db_host = "localhost"; // PROBABLY THIS IS OK
$db_name = "??";        // GET THESE FROM YOUR HOSTING COMPANY
$db_user = "??";
$db_word = "??";

// OPEN A CONNECTION TO THE DATA BASE SERVER
// MAN PAGE: http://php.net/manual/en/function.mysql-connect.php
if (!$db_connection = mysql_connect("$db_host", "$db_user", "$db_word"))
{
    $errmsg = mysql_errno() . ' ' . mysql_error();
    echo "<br/>NO DB CONNECTION: ";
    echo "<br/> $errmsg <br/>";
}

// SELECT THE MYSQL DATA BASE
// MAN PAGE: http://php.net/manual/en/function.mysql-select-db.php
if (!$db_sel = mysql_select_db($db_name, $db_connection))
{
    $errmsg = mysql_errno() . ' ' . mysql_error();
    echo "<br/>NO DB SELECTION: ";
    echo "<br/> $errmsg <br/>";
    die('NO DATA BASE');
}
// IF WE GOT THIS FAR WE CAN DO QUERIES


// CREATING A TABLE
$sql = "CREATE TEMPORARY TABLE my_table (
        _key INT         NOT NULL AUTO_INCREMENT,
        shift    INT NOT NULL DEFAULT 0,
        line     INT NOT NULL DEFAULT 0,
        products INT NOT NULL DEFAULT 0,
        week     INT NOT NULL DEFAULT 0,
        PRIMARY KEY(_key)  )";
$res = mysql_query($sql);

// IF mysql_query() RETURNS FALSE, GET THE ERROR REASONS
if (!$res)
{
    $errmsg = mysql_errno() . ' ' . mysql_error();
    echo "<br/>QUERY FAIL: ";
    echo "<br/>$sql <br/>";
    die($errmsg);
}



// LOAD UP THE TABLE
mysql_query('INSERT INTO my_table (shift, line, products, week) VALUES (1,2,4000, 1)') or die(mysql_error());
mysql_query('INSERT INTO my_table (shift, line, products, week) VALUES (1,4,4000, 1)') or die(mysql_error());

mysql_query('INSERT INTO my_table (shift, line, products, week) VALUES (1,2,4000, 2)') or die(mysql_error());
mysql_query('INSERT INTO my_table (shift, line, products, week) VALUES (1,4,5000, 2)') or die(mysql_error());

mysql_query('INSERT INTO my_table (shift, line, products, week) VALUES (1,2,4000, 3)') or die(mysql_error());
mysql_query('INSERT INTO my_table (shift, line, products, week) VALUES (1,4,6000, 3)') or die(mysql_error());


// MAKING A SELECT QUERY AND TESTING THE RESULTS
$sql = "SELECT week, SUM(products) as sump FROM my_table GROUP BY week ORDER BY week ASC";
$res = mysql_query($sql);

// IF mysql_query() RETURNS FALSE, GET THE ERROR REASONS
if (!$res)
{
    $errmsg = mysql_errno() . ' ' . mysql_error();
    echo "<br/>QUERY FAIL: ";
    echo "<br/>$sql <br/>";
    die($errmsg);
} // IF WE GET THIS FAR, THE QUERY SUCCEEDED AND WE HAVE A RESOURCE-ID IN $res SO WE CAN NOW USE $res IN OTHER MYSQL FUNCTIONS



// ITERATE OVER THE RESULTS SET TO SHOW WHAT WE SELECTED
while ($row = mysql_fetch_assoc($res))
{
    $out[$row["week"]] = $row["sump"];
}

var_dump($out);
于 2012-12-29T18:54:32.567 に答える