Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php mysql数组排序_Php_Sorting_Arraylist - Fatal编程技术网

php mysql数组排序

php mysql数组排序,php,sorting,arraylist,Php,Sorting,Arraylist,我有一个数组,其中包含库存的名称和价格。 我想对照价目表检查客户订单,并给出此订单的总价 这是主要价格表: $sql = "SELECT * FROM price_list WHERE id='1'"; $query = mysql_query($sql) or die ('Error: ' . mysql_error()); $num_rows = mysql_num_rows($query); $data = array(); while( $row = mysql_fetch_array(

我有一个数组,其中包含库存的名称和价格。 我想对照价目表检查客户订单,并给出此订单的总价

这是主要价格表:

$sql = "SELECT * FROM price_list WHERE id='1'";
$query = mysql_query($sql) or die ('Error: ' . mysql_error());
$num_rows = mysql_num_rows($query);
$data = array();
while( $row = mysql_fetch_array( $query ) )
{
    $t_name = $row['name'];
    $t_price = $row['price'];

    $t_array[] = array( "name" => $t_name, "price" => $t_price );
}
这是mysql中的客户订单:

$sql = "SELECT * FROM order WHERE id='1'";
$query = mysql_query($sql) or die ('Error: ' . mysql_error());
$num_rows = mysql_num_rows($query);
while( $row = mysql_fetch_array( $query ) )
{
    $pants = $row['pants'];
    $shirt = $row['shirt'];
    $hat = $row['hat'];
}
如果我重复上面的话,它会是这样的: 蓝色牛仔裤,黑色裤子, 白衬衫(X2),红衬衫, 黑帽子,灰帽子

(X2)在价目表中不存在,我必须匹配价目表中的白衬衫,然后乘以2。 此(X2)可以动态更改为任何其他项目,具体取决于订单。 同样在结果上,我想将裤子和帽子(而不是衬衫)的价格乘以一个变量,比如
$discount
,这可能是一个折扣率


我必须提到,这个订单是通过jquery完成的,这就是php不知道总价的原因。

您可以使用JOIN语句通过单个查询获得该信息。
但要完全涵盖你的问题(即使是稍微完整的问题)将涵盖相当广泛的话题(太大太广,这里无法回答)。所以我给你们留下一个完整的例子,鼓励你们深入研究一些话题。。。。(例如,表格/索引结构远未接近“准备生产”)

:


在ajax中,只有总价会通过……add
$total=0在while循环之前,以及
$total+=$row['price']在循环中。我想这太复杂了,没人想碰它!耐心点。你会得到帮助的。很遗憾,你是新来的,不能提供赏金。试着回答几个问题,找出一些要点。我不会用它们来衡量我“有多聪明”,只是为了在我没有得到一个好答案时支付奖金;-)顺便说一句,mysql_u函数已被弃用。您应该使用VolkerK,感谢您的指导和示例代码!我一直在尝试用很多不同的方法来做这件事,不用说,这些方法都不起作用。。。我会试试这个,希望它能起作用。
<?php
$pdo = new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'localonly', 'localonly');  
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
setup($pdo);

$stmt = $pdo->query('
    SELECT
        p.name, p.price, o.qty
    FROM
        soFooOrderItems as o
    JOIN
        soFooPriceList as p
    ON
        o.itemid = p.itemid
    WHERE
        o.orderid = 1
');

$total = 0;
foreach( $stmt as $row ) {
    $subtotal = bcmul($row['qty'], $row['price'], 2);
    printf("%s (%d pcs) | %s per pc. | %s\r\n",
        $row['name'],
        $row['qty'],
        $row['price'],
        $subtotal
    );
    $total = bcadd($total, $subtotal, 2);
}
echo 'total: ', $total;


function setup($pdo) {
    $queries = array(
        '
            CREATE TEMPORARY TABLE soFooPriceList (
                itemid INT,
                name varchar(32),
                price Decimal(6,2)
            )
        ',
        '
            CREATE TEMPORARY TABLE soFooOrderItems (
                orderid int,
                itemid  int,
                qty int
            )
        ',
        "INSERT INTO soFooPriceList (itemid, name, price) VALUES (1, 'blue jeans', 2.0), (2, 'Disruptor MkIII', 870.5), (3, 'black pants', 1.4), (4, 'Emergency Transport Beacon', 600.75), (5, 'white shirt', 1.0)",
        "INSERT INTO soFooOrderItems (orderid,itemid, qty) VALUES
            (1,1,1), (1,3,2), (1,5,1),
            (2,2,1), (2,4,1), (2,1,1)
        ",
    );
    foreach( $queries as $q ) {
        $pdo->exec($q);
    }
}
blue jeans (1 pcs) | 2.00 per pc. | 2.00
black pants (2 pcs) | 1.40 per pc. | 2.80
white shirt (1 pcs) | 1.00 per pc. | 1.00
total: 5.80