0

cart.phpで送信をクリックすると、別のページから新しいページにデータを印刷しようとしています

これは私のコードです

カート.php

function paypal_items(){
    $num = 0;
    foreach ($_SESSION as $name => $value){
        if ($value !=0){
            if (substr($name, 0, 5) == "cart_"){
                $id = substr ($name, 5, strlen($name)-5);
                $get = mysql_query ('SELECT id, name, price FROM menu WHERE id='.mysql_real_escape_string((int)$id));
                while ($get_row = mysql_fetch_assoc($get)) {
                    $num++;
                    echo '<input type="hidden" name="item_number_'.$num.'" value="'.$id.'">';
                    echo '<input type="hidden" name="item_name_'.$num.'" value="'.$get_row['name'].'">';
                    echo '<input type="hidden" name="amount_'.$num.'" value="'.$get_row['price'].'">';
                    echo '<input type="hidden" name="quantity_'.$num.'" value="'.$value.'">';
                }
            }
        }
    }
}

function cart() {
    $total = 0;
    foreach($_SESSION as $name => $value) {
        if ($value>0) {
            if (substr($name, 0, 5) == 'cart_'){
                $id = substr($name, 5, (strlen($name)-5));
                $get = mysql_query('SELECT id, name, price FROM menu WHERE id=' .mysql_real_escape_string((int)$id));
                while ($get_row = mysql_fetch_assoc($get)){
                    $sub = $get_row['price'] * $value;
                    $target_data = $get_row['name'].' x '.$value.' @ $'.number_format($get_row['price'], 2).' = $'.number_format($sub, 2);
                    $_SESSION['target_data'] = $target_data;
                    echo $get_row['name'].' x '.$value.' @ $'.number_format($get_row['price'], 2).' = $'.number_format($sub, 2).' <a href="cart.php?remove='.$id.'">[-]</a> <a href="cart.php?add='.$id.'">[+]</a> <a href="cart.php?delete='.$id.'">[Delete]</a><br />' ;
                }
            }
            $total += $sub;
        }
    }
    if ($total == 0){
        echo "Your Cart Is Empty";
    }
    else {
        echo "<p>Total : $".number_format($total, 2).'</p>';

        <p>
        <form action="bill.php" method="post">
        <?php paypal_items(); ?>
        <input type="submit" value="submit" />
        </form>
        </p>
    }
}

関数 cart() からこのデータを出力しようとしています

 echo $get_row['name'].' x '.$value.' @ $'.number_format($get_row['price'], 2).' = $'.number_format($sub, 2).' <a href="cart.php?remove='.$id.'">[-]</a> <a href="cart.php?add='.$id.'">[+]</a> <a href="cart.php?delete='.$id.'">[Delete]</a><br />' ;

このコードを使用して、すべてのデータ入力を取得しようとします

bill.php

<?php
session_start();
echo $_SESSION['target_data'] .'<br />';
print_r($_POST);
?>

ただし、得られた出力は次のようになります(送信をクリックすると表示されるデータが2つあります)

 Milk Tea x 9 @ $1.99 = $17.91
 Array ( [item_number_1] => 2 [item_name_1] => Ayam Penyet [amount_1] => 6.99 [quantity_1] => 8 [item_number_2] => 1 [item_name_2] => Milk Tea [amount_2] => 1.99 [quantity_2] => 9 )

私が望む期待される出力は次のようなものです

 Milk Tea x 9 @$1.99 = $17.91
 Ayam Penyet x 8 @6.99 = $55.92

誰もこれを解決する方法を知っていますか??

ありがとう :)

4

2 に答える 2

0

foreach()サイクルを使用してみてください:

foreach ($_POST as $key=>$value) {
  $printed .= $value .' ';
} 
echo $printed;

上記のコードは、POSTリクエストのすべての要素を空のスペース '' で連結します。投稿されたデータを必要に応じて抽出して並べ替えるために、追加のフィルタリングを行うことができます。例えば:

foreach ($_POST as $key=>$value) {
  if (in_array($key, array('item_name','amount','quantity')))     
  $printed .= $value .' ';
} 

上記のコードは、投稿された要素の値が'item_name','amount','quantity' に属する場合にのみ連結します。

于 2012-08-31T13:20:13.703 に答える
0

入力の名前を変更します:

while ($get_row = mysql_fetch_assoc($get)) {
    $num++;
    echo '<input type="hidden" name="items['.$num.'][item_number]" value="'.$id.'">';
    echo '<input type="hidden" name="items['.$num.'][item_name]" value="'.$get_row['name'].'">';
    echo '<input type="hidden" name="items['.$num.'][amount]" value="'.$get_row['price'].'">';
    echo '<input type="hidden" name="items['.$num.'][quantity]" value="'.$value.'">';
}

これらの項目名を使用すると、PHP は値を次のような連想配列として受け取ります。

Array (
    [0] => Array (
        [item_number] => 2,
        [item_name] => "Ayam Penyet",
        [amount] => 6.99,
        [quantity] => 8
    ),
    [1] => Array(
        [item_number] => 1,
        [item_name] => "Milk Tea",
        [amount] => 1.99,
        [quantity] => 9
    )
)

そして、次のようにループできます。

foreach ($_POST["items"] as $item)
{
    echo "{$item["item_name"]} x {$item["quantity"]} @\${$item["amount"]} = \$". number_format($item["quantity"] * $item["amount"], 2) ."<br />";
}
于 2012-08-31T15:14:22.670 に答える