-4

我有这个问题

$total += $rows['price'] * $qty;

注意:未定义变量:第 42 行 D:\xampp\htdocs\WBPL-MusicLightDev\inc\functions.inc.php 中的总计

function wbpl_showCart() {
    global $db;
    $cart = $_SESSION['cart'];
    if ($cart) {
        $items = explode(',', $cart);
        //$contents = array();
        foreach ($items as $item) {
            $contents[$item] = (isset($contents[$item])) ? $contents[$item] + 1 : 1;
        }
        echo '<form action="index.php?page=cart&action=update" method="post" id="cart">';
        echo '<table border=0 align="center" class="table table-bordered">';


        foreach ($contents as $id => $qty) {
            $sql = "SELECT * from wbpl_product WHERE kd_product = '$id'";
            $result = mysql_query($sql) or die(mysql_error());
            $rows=mysql_fetch_array($result);
            //extract($row);

            echo    '<tr>
                        <td>Brand</td>
                        <td colspan="4">'. $rows['kd_product'] .'</td>
                    <tr>
                    <tr>
                        <td>Brand</td>
                        <td colspan="4">'. $rows['nama_brand'] .'</td>
                    <tr>
                    <tr>
                            <td>Instrument Type</td>
                            <td colspan="4">'. $rows['nama_instype'] .'</td>
                    </tr>
                    <tr">
                    <td rowspan="2">Price</td>
                    <td rowspan="2">Rp. ' . $rows['price'] . '</td>
                    <td rowspan="2"><input type="text" name="qty' . $id . '" value="' . $qty . '" size="2" maxlength="3" /></td>

                    <td rowspan="2">Rp. ' . ($rows['price'] * $qty) . '</td>

                    <td><a href="index.php?page=cart&action=delete&id=' . $id . '" class="btn btn-danger">Hapus</a></td>
                    </tr>
                    <tr><td><br></td></tr>';
            $total += $rows['price'] * $qty;
        }
        echo '</table>';
        $qty = getQty();


        echo '<p>Sub Total: <strong> Rp. ' . $total . '</strong></p>';



        //session_register('totalbayar');
        $_SESSION['totalbayar'] = $total;
        echo '<div><button type="submit" class="btn btn-primary">Update cart</button></div>';
        echo '</form>';
    } else {
        echo '<p>Keranjang belanja masih kosong.</p>';
    }
    //return join('', $output);
}
4

5 回答 5

2

你不能在不存在的值上添加一些东西;第一个调用是: null += $rows['price'] * $qty; 这是不可能的,所以添加

$总计 = 0;

在你的 foreach 循环之前!

    function wbpl_showCart() {
    global $db;
    $cart = $_SESSION['cart'];
    if ($cart) {
        $items = explode(',', $cart);
        //$contents = array();
        foreach ($items as $item) {
            $contents[$item] = (isset($contents[$item])) ? $contents[$item] + 1 : 1;
        }
        echo '<form action="index.php?page=cart&action=update" method="post" id="cart">';
        echo '<table border=0 align="center" class="table table-bordered">';

        $total = 0;
        foreach ($contents as $id => $qty) {
            $sql = "SELECT * from wbpl_product WHERE kd_product = '$id'";
            $result = mysql_query($sql) or die(mysql_error());
            $rows=mysql_fetch_array($result);
            //extract($row);

            echo    '<tr>
                        <td>Brand</td>
                        <td colspan="4">'. $rows['kd_product'] .'</td>
                    <tr>
                    <tr>
                        <td>Brand</td>
                        <td colspan="4">'. $rows['nama_brand'] .'</td>
                    <tr>
                    <tr>
                            <td>Instrument Type</td>
                            <td colspan="4">'. $rows['nama_instype'] .'</td>
                    </tr>
                    <tr">
                    <td rowspan="2">Price</td>
                    <td rowspan="2">Rp. ' . $rows['price'] . '</td>
                    <td rowspan="2"><input type="text" name="qty' . $id . '" value="' . $qty . '" size="2" maxlength="3" /></td>

                    <td rowspan="2">Rp. ' . ($rows['price'] * $qty) . '</td>

                    <td><a href="index.php?page=cart&action=delete&id=' . $id . '" class="btn btn-danger">Hapus</a></td>
                    </tr>
                    <tr><td><br></td></tr>';
            $total += $rows['price'] * $qty;
        }
        echo '</table>';
        $qty = getQty();


        echo '<p>Sub Total: <strong> Rp. ' . $total . '</strong></p>';



        //session_register('totalbayar');
        $_SESSION['totalbayar'] = $total;
        echo '<div><button type="submit" class="btn btn-primary">Update cart</button></div>';
        echo '</form>';
    } else {
        echo '<p>Keranjang belanja masih kosong.</p>';
    }
    //return join('', $output);
}
于 2013-04-16T13:50:57.857 回答
1

声明$total变量:

$total = 0;

在进入 foreach 循环之前

问题是:

$total += ...;表示添加...到 的值$total,但$total在第一次迭代时尚未定义导致通知的原因。

于 2013-04-16T13:48:13.067 回答
0
$total = 0;

并在使用 $total 之前设置它可以解决问题

于 2013-04-16T13:48:01.407 回答
0

$x += y意味着首先读取变量值然后添加一些东西然后(重新)分配结果。在 foreach 循环的第一次迭代期间,执行运算符时没有$total要读取的变量+=,因此会发出警告。
在循环之前初始化变量。

$total = 0;
foreach ($contents as $id => $qty) {
  [...]
  $total += something;
于 2013-04-16T13:48:08.330 回答
0

要使用+=运算符,您必须已经定义了左侧变量。$total您可以通过在使用前进行初始化来解决此问题$total += ...

$total = 0;
foreach (...)
    $total += ...

这是因为$total += $x在内部转换为$total = $total + $x,因此第一次使用时,$total 未定义。

于 2013-04-16T13:48:21.643 回答