0

PHPを使用してMySql DBの2つのテーブルからデータを取得する方法を知っている人はいますか? 私の Android アプリでは、ユーザーがアイテムをショッピング カート (MySql のテーブル) に入れることができます。ユーザーがアプリでショッピング カート ボタンをクリックすると、「ショッピング カート アクティビティ」が読み込まれ、ログインしている場合は「セッション ID」または「顧客 ID」に基づいて、カートに追加したすべてのものがリストビューに読み込まれます。私が今行っていることは、商品がカートに追加されたときに、商品 ID、商品名、画像の URL、数量、および価格を取得することです。それは素晴らしいと迅速に動作します。私がやりたいのは、製品名、画像の URL、および価格が既に「製品テーブル」にあるためです。同じことをしたいのですが、ユーザーがカートにアイテムを追加すると、製品 ID とセッション ID のみがキャプチャされます。 .

ここに私のPHPスクリプトがあります:

if($The_Function=="LOAD_CART"){
    $response = array();

    require_once __DIR__ . '/db_connect.php';

    $con = new DB_CONNECT();

    $user_session = $_GET['session'];
    $user_item_status = $_GET['status'];
    $order_total = 0.00;
    $result = mysql_query("SELECT * FROM shopping_cart WHERE SessionID LIKE '$user_session' AND Status LIKE '$user_item_status'");

    if(!empty($result)){
        if (mysql_num_rows($result) > 0) {
            $response["cart_contents"] = array();
            //$result = mysql_fetch_array($result);
            while ($row = mysql_fetch_array($result)) {
                $myItems = array();

                $myItems["product_id"] = $row["PID"];
                $myItems["product_name"] = $row["Item"];
                $myItems["product_price"] = $row["Price"];
                $myItems["product_qty"] = $row["Qty"];
                $myItems["image_url"] = $row["URL"];
                $myItems["line_id"] = $row["ItemCount"];
                $line_total = $row["Price"] * $row["Qty"];
                $order_total = $order_total + $line_total;
                array_push($response["cart_contents"], $myItems);
            }
            // success
            $response["success"] = 1;
            $response["order_total"] = $order_total;
            // user node
            //  $response["products"] = array();
            // echoing JSON response
            echo json_encode($response);
        } else {
            // no product found
            $response["success"] = 0;
            $response["message"] = "No product found";

            // echo no users JSON
            echo json_encode($response);
        }
    } else {
        // no product found
        $response["success"] = 0;
        $response["message"] = "No product found";

        // echo no users JSON
        echo json_encode($response);
    }
}

これが私がやろうとしていることです。このコードは機能しません。

if($The_Function=="LOAD_CART2"){
    $response = array();

    require_once __DIR__ . '/db_connect.php';

    $con = new DB_CONNECT();

    $user_session = $_GET['session'];
    $user_item_status = $_GET['status'];
    $order_total = 0.00;
    $result = mysql_query("SELECT * FROM shopping_cart WHERE SessionID LIKE '$user_session' AND Status LIKE '$user_item_status'");

    if(!empty($result)){
        if (mysql_num_rows($result) > 0) {
            $response["cart_contents"] = array();
            //$result = mysql_fetch_array($result);
            while ($row = mysql_fetch_array($result)) {
                $line_total = $row["Price"] * $row["Qty"];
                $line_ID = $row["ItemCount"];
                $Quantity = $row["Qty"];
                $Prod_ID = $row["PID"];


                $result2 = mysql_query("SELECT * FROM products WHERE pid LIKE '$Prod_ID'");
                $myItems = array();
                $theItem=$row["name"];
                $thePrice=$row["price"];
                $theImage=$row["prod_image"];

                $myItems["line_id"] = $line_ID;
                $myItems["product_qty"] = $Quantity;
                $myItems["product_id"] = $Prod_ID;
                $myItems["product_name"] = $theItem;
                $myItems["product_price"] = $thePrice;
                $myItems["image_url"] = $theImage;

                $order_total = $order_total + $line_total;
                array_push($response["cart_contents"], $myItems);
            }




            }
            // success
            $response["success"] = 1;
            $response["order_total"] = $order_total;
            // user node
            //  $response["products"] = array();
            // echoing JSON response
            echo json_encode($response);
        } else {
            // no product found
            $response["success"] = 0;
            $response["message"] = "No product found";

            // echo no users JSON
            echo json_encode($response);
        }
    } else {
        // no product found
        $response["success"] = 0;
        $response["message"] = "No product found";

        // echo no users JSON
        echo json_encode($response);
    }

これは私が試したものです:

if($The_Function=="LOAD_CART2"){
    $response = array();

    require_once __DIR__ . '/db_connect.php';

    $con = new DB_CONNECT();

    $user_session = $_GET['session'];
    $user_item_status = $_GET['status'];
    $order_total = 0.00;

    $result = mysql_query("SELECT s.*, p.* FROM shopping_cart AS s LEFT JOIN products AS p ON p.pid = s.PID WHERE s.SessionID ='$user_session' AND s.Status = '$user_item_status'");

    if(!empty($result)){
        if (mysql_num_rows($result) > 0) {
            $response["cart_contents"] = array();
            //$result = mysql_fetch_array($result);
            while ($row = mysql_fetch_array($result)) {
                $myItems = array();
                //FROM shopping_cart Table
                $line_total = $row["Price"] * $row["Qty"];
                $myItems["line_id"] = $row["ItemCount"];
                $myItems["product_qty"] = $row["Qty"];
                $myItems["product_id"] = $row["PID"];

                //FROM product TABLE
                $myItems["product_name"]=$row["p.name"];
                $myItems["product_price"]=$row["p.price"];
                $myItems["image_url"]=$row["p.prod_image"];


            }

            $order_total = $order_total + $line_total;
            array_push($response["cart_contents"], $myItems);


            }
            // success
            $response["success"] = 1;
            $response["order_total"] = $order_total;
            // user node
            //  $response["products"] = array();
            // echoing JSON response
            echo json_encode($response);
        } else {
            // no product found
            $response["success"] = 0;
            $response["message"] = "No product found";

            // echo no users JSON
            echo json_encode($response);
        }
    } else {
        // no product found
        $response["success"] = 0;
        $response["message"] = "No product found";

        // echo no users JSON
        echo json_encode($response);
    }

私のスキーム:

products TABLE

pid|name|price|created_at|prod_image|description|catagory



shopping_cart TABLE

FirstName|LastName|OrderNumber|CustomerID|Email|Price|Qty|Status|URL|PID|SessionID|CustomerType|ItemCount
4

1 に答える 1

0

アイテムごとに個別のクエリを実行する代わりに、LEFT JOIN を使用する必要があります。

何かのようなもの: "SELECT s.*, p.* FROM shopping_cart AS s LEFT JOIN products AS p ON p.pid = s.PID WHERE s.SessionID ='$user_session' AND s.Status = '$user_item_status'

小文字の pid が products テーブルにあり、大文字の PID が shopping_card テーブルにあると仮定します。

于 2013-07-06T01:46:08.373 に答える