0

私はこのようなテーブルアイテムを持っています:

id_item       color           stock
1         red,green,yellow   10,20,30

ここにテーブルカート:

id id_trans     id_item    color    qty
1     123          1           red      5   
2     123          1           green    2  

私が達成したいのは、テーブルアイテムを次のように更新することです:

id_item       color           stock
1         red,green,yellow   5,18,30

私がしていることは:

$query = mysql_query("select a.color as color, a.stock as stock, b.id_item as id_item,b.color as colors,b.qty as qty from item as a, cart as b where a.id_item = b.id_item and b.id_trans = '123' ");
while($result = mysql_fetch_array($query)){

$colors = $result['colors'];
$color = explode(",",$result['color']);
$stock = explode(",",$result['stock']);
$flag = array_search($colors,$color);
$stock[$flag] = $stock[$flag] - $result['qty'];
$stock = implode(',',$stock);

mysql_query("update item set stock = '$stock' where id_item = '$result[id_item]'");

}

私が上で書いたコードから、私はいくつかの問題を抱えています。私の問題は、結果が次のようになることです:5,20,30&10,18,30。したがって、テーブルアイテムを更新すると、次のように変更されます。

id_item       color           stock
1         red,green,yellow   10,18,30

私が達成したいのは、在庫が5、18、30になることを内破することです。誰かがそれを達成する方法を教えてもらえますか、または誰かが私のコードに間違っていると教えてもらえますか?どうも

4

1 に答える 1

1

これで、以前の試みよりも明確になりました;)これを試して、機能するかどうかを確認してください。

unset($color);unset($stock);
$query = mysql_query("select a.color as color, a.stock as stock, b.id_item as id_item,b.color as colors,b.qty as qty from item as a, cart as b where a.id_item = b.id_item and b.id_trans = '123' ");
while($result = mysql_fetch_array($query)){

    $colors = $result['colors'];
    $id = $result[id_item];
    if(!isset($color))
    {
        $color = explode(",",$result['color']);
    }
    if(!isset($stock))
    {
    $stock = explode(",",$result['stock']);
    }

    $flag = array_search($colors,$color);
    $stock[$flag] = $stock[$flag] - $result['qty'];
}

$stock = implode(',',$stock);
mysql_query("update item set stock = '".$stock."' where id_item = ".$id);

正直なところ、データベースの使い方はひどいです。それはデータベースの使用方法ではありません。

于 2013-03-21T20:22:18.880 に答える