-2

ユーザーがリンクをクリックしたときに、DB から配列にデータを追加したい。

echo '<a href="cart-page.php?action=add&cartid='.$row[0].'">ADD</a>'.

要素のIDを取得し、データベースにクエリを実行してクリックされたアイテムの詳細を取得し、次のようなforループを使用して表示します(cart-page.phpで):

$cart = $_GET['cartid'];
$cartData = array();
$SQL = "SELECT * FROM tbl_product where id ='$cart'";
$result = mysql_query($SQL);
while($row = mysql_fetch_assoc($result)){
          array_push($cartData, $row);
      }

     $length = count($cartData);
     for($i = 0; $i < $length; $i++) {
       echo '</tr>';
       echo ' <td class="product">'.$cartData[$i]['name'].'</td>';
      echo'<td class="quantity"><input type="text" value='.$cartData[$i]['quantity'].'   class="inputform"/></td>';

    echo '</tr>';

     }

私の問題は、 array_push() がデータを追加していないことです。cart-page.php から移動してリンクをクリックするたびに、cartData[] の前のコンテンツが上書きされ、cartData[] に一度に 1 行だけが残ります。上記のようなリンクをクリックするたびに、cartData[] に追加されたデータを取得するにはどうすればよいですか? ありがとう

4

2 に答える 2

1

追加する必要がありますか?それを配列に追加して、後で配列を注文しないのはなぜですか?

PHP 配列のソート

while($row = mysql_fetch_assoc($result)){
    $cartData[] = $row;
}

さらに、常にデータをエスケープする必要があります。

$cart = $_GET['cartid'];

上記のコードは、SQL インジェクションに対して脆弱です。せめて逃げろ!

$cart = mysql_real_escape_string($_GET['cartid']);

編集

以前のカートへの追加をすべて記憶するには、セッションを作成し、各クリックをセッションに追加する必要があります。

session_start();

$cartid = mysql_real_escape_string($_GET['cartid']);

function addToCart($cartid)
{
    $SQL = "SELECT * FROM tbl_product where id ='{$cartid}'";

    $result = mysql_query($SQL);
    while($row = mysql_fetch_assoc($result)){
        $_SESSION['cartItems'][] = $row;
    }
}


function getCartItems()
{
    print_r($_SESSION['cartItems']);
}

これは、期待どおりに機能することを願っています。セッションは、ブラウザーの更新後も状態を保持します。このコードを使用するには、元の $cartData にアイテムを追加するときに、関数を呼び出す必要がありますaddToCart($cartid)cartItemsこれにより、項目データがセッション配列に追加されます

カートに入っているものを配列として表示するには、次を使用しますprint_r($_SESSION['cartItems']);

于 2013-05-24T09:16:54.743 に答える