2

我是编程的新手。我正在尝试从 MySQL 表创建一个数组,稍后我将使用它在 PHP/Javascript 中创建一个图表。

整个想法是,我想制作一个数组,里面装满代表一年中每周的数据。因此,一个包含 52 个条目的数组(让我们忘记有时会出现的第 53 周)。

我的数据库:

我的数据库中有 1 个用于此目的的表:

+--------------+
我生产我
+--------------+
I Shift I(数字) I <-范围从 1 到 3(人们所做的不同转变)
I 线 I(编号)I <-范围为 1-8(不同的“传送带”)
I Products I (number) I <-范围从 0- 很多!(以表格形式输入)
I 第 I 周(数字) I <-范围从 1 到 52
+--------------+

现在,我的想法是,我想要一个数组,里面装满了所有产品的总和。SUM(Products) 必须存在以下各项:

每个班次 + 生产线所有产品的总和。

Shift 1, Line 1, 生产 10,000 个产品
Shift 1, Line 2, 生产 15,000 个产品
Shift 1, Line 3, 生产 20,000 个产品(等等)

SUM(Products)将是从 1 到 3 班次的所有产品,以及从 1 到 8 班的所有产品。
所以:10,000 + 15,000 + 20,000 等等。

我希望将这个总数放入一个数组中,将“第 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.

我可以通过添加 52 个不同的 MySQL 查询来做到这一点,唯一的区别是 WHERE week='x'?

到目前为止,我只试验了在 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 回答