【问题标题】:PHP - Foreach via Certain active SessionsPHP - 通过某些活动会话进行 Foreach
【发布时间】:2015-07-24 14:57:24
【问题描述】:

我目前正在研究一个带有购物车的超级简单的在线商店创意。最后,我想打印一张包含您订购的产品的表格。目前使用 foreach 但我不知道如何解决这个问题。我尝试使用会话来让循环了解订购了多少不同的产品。但似乎 $_SESSION 方式将占用所有当前活动的会话。并使用一个简单的变量 f.e. $piano 将使它打印 2 行(在我的商店中使用 2 个钢琴,尝试使用 if (session active) $piano1 = active 来解决它。但似乎 foreach 语句并没有对此表示不满,而是会打印 2无论如何都是行。

很抱歉,文本太长了。这是我的页面。再次道歉。我刚开始php。

变量名称是荷兰语,但我认为这对你们来说并不重要。 从第 103 行开始。 提前致谢!

<div class="logincontainer"><!-- Php Session Script Actief? -->
    <?php
    session_start();
    if(isset($_SESSION['naam'])) :
        echo "<div class='content_login'>";
        echo "Hallo " . $_SESSION['naam'] . ". Welkom bij de Pianoshop.</br></br>";?>
        <form method='post' action='uitlog.php'>
            <input type='submit' name='loguit' Value='Loguit!'></form><br />
            <form action='winkelmand.php' class="left">
                <input type='image' src='images/winkelwagen-knop.png'/>
            </form><br />
            <form method='post' name='emptycart' action='emptycart.php' class="right">
                <input type="submit" id="submitpic" name="leegwinkelmand" value="">
                <?php
                if(isset($_SESSION['winkelmand'])) {
                    echo $_SESSION['aantalproducten'] . " Item(s) - &euro;" . $_SESSION['totaalprijs'] . ",-";
                } else {
                    echo "Jouw winkelwagen is leeg.";
                }?>
            </form>
        </div>
    <?php else :?>
        <div class='content_login'>
            <form method='post' action='checklogin.php'>
                <p><input type='text' name='gebruikersnaam' required='required' value='' placeholder='Gebruikersnaam'></p>
                <p><input type='password' name='password' required='required' value='' placeholder='Wachtwoord'></p>
                <font color="red"><p class='submit'>
                    <input type='submit' name='login' value='Login'>
                    <?php if(isset($_SESSION['logged_in'])) :?>
                        Verkeerd wachtwoord.
                        <?php session_destroy();
                    endif; ?>
                </p></font>
                <p>Nog niet geregistreerd? Doe dat <a href="account.php">hier!</a>.</p>
            </form>
        </div>
    <?php endif; ?></div>
    <div id="site">
        <div id="menubar">
            <div id="logo">
                <img src="images/pianotoetsen.png" >
            </div>
            <div id="menu_items">
                <ul id="menu">
                    <li><a href="index.php">Home</a></li>
                    <li><a href="toetsinstrumenten.php">Toetsinstrumenten</a></li>
                    <li><a href="account.php">Jouw account</a></li>
                    <li class="current"><a href="winkelmand.php">Winkelmand</a></li>
                    <li><a href="contact.php">Contact</a></li>
                </ul>
            </div></div>

            <div id="site_content">
                <div class="sidebar_container">
                    <div class="sidebar">
                        <h2>Sale!</h2>
                        <div id="thumbnail"><img src="images/piano1.jpg"></div>
                        <p>Yamaha CLP-575 voor maar &euro;2599,- !</p>
                        <div id="thumbnail"><img src="images/piano2.jpg"></div>
                        <p>Ritmuller 120SL &euro;4999,- !</p>
                    </div>
                    <div class="sidebar">
                        <h2>Laatste Updates</h2>
                        <h3>Juni 2015</h3>
                        <p>Site in constructie.</p>
                    </div>
                    <div class="sidebar">
                        <h3>Wij zijn op Facebook</h3>
                        <p>Klik <a href="#">hier.</p></a>
                    </div>
                </div>

        <div id="content">
            <div id="wallpaperbanner">
                <img src="images/banner.jpg">
            </div>
            <div class="content_item">
                <h1>Winkelmand</h1>
                <?php
                $user = 'root';
                $pass = '';
                $db = 'online shop';
                $conn = mysql_connect('localhost', $user, $pass);
                if(! $conn )
                {
                    die('Could not connect: ' . mysql_error());
                }



                if(isset($_SESSION['winkelmand'])) {
                    echo "Deze producten staan in je winkelwagen</br></br>";
                    if(isset($_SESSION['totaalprijs2']) == 0) {
                        // Do nothing?
                    } else {
                        mysql_select_db($db);
                        $query = mysql_query("SELECT * FROM product WHERE productnummer='2'");
                        $productgegevens = mysql_fetch_row($query);
                        $piano["piano2"] = "ritmuller";
                        $pianoarray[1] = $productgegevens['1'];
                        $pianoarray[2] = $productgegevens['2'];
                        $pianoarray[3] = $productgegevens['4'];
                        $pianoarray[5] = $productgegevens['3'];
                        $pianoarray[4] = $_SESSION['aantal_prod2'];

                    }

                    if(isset($_SESSION['totaalprijs1']))
                    {
                        mysql_select_db($db);
                        $query = mysql_query("SELECT * FROM product WHERE productnummer='1'");
                        $productgegevens = mysql_fetch_row($query);
                        $piano["piano1"] = "yamaha";
                        $pianoarray[4] = $_SESSION['aantal_prod1'];
                        $pianoarray[1] = $productgegevens['1'];
                        $pianoarray[2] = $productgegevens['2'];
                        $pianoarray[3] = $productgegevens['4'];
                        $pianoarray[5] = $productgegevens['3'];
                        $pianoarray[4] = $_SESSION['aantal_prod2'];
                    }
                    echo "<br />
                    <table width='80%' >
                    <thead>
                    <tr><th>Productnaam</th><th>Merk</th>
                    <th>Voorraad</th><th>Aantal</th><th>Prijs</th>
                    </tr>
                    </thead>
                    <tbody>";

                    foreach($piano as $key => $value) {
                        echo $key . "</br>" . $value . "<br />";
                        $row = "<tr>";
                        for ($x=1; $x<=sizeof($pianoarray); $x++){
                            $row = $row . "<td>" . $pianoarray[$x] . "</td>";

                        }
                        $row = $row . "</tr>";
                        echo $row;
                    }
                    echo "<tr><td></td><td></td><td></td><td></td><td>" . '&euro;' . $_SESSION['totaalprijs'] . ',-' . "</td></tr></tbody></table>";

                }


                else {
                    echo "Jouw winkelwagen is leeg. <br />" . "Klik <a href='toetsinstrumenten.php'>Hier</a> om wat items toe te voegen.";
                }?>
            </div>
        </div>
    </div>

</div>

【问题讨论】:

  • 能否请您添加您的代码而不是指向您网站的链接?
  • 在帖子中添加代码而不是链接

标签: php session foreach


【解决方案1】:

在 $_SESSION 数组中创建一个数组变量并对其执行 foreach 循环

$_SESSION['cart']['piano1'] = 'piano1';
$_SESSION['cart']['piano2'] = 'piano2';
$cart = $_SESSION['cart'];

foreach ($cart as $key => $item) {
    //do something with $item or $key
}

【讨论】:

  • 好吧,至少更近了一步。仍然存在无论哪些会话处于活动状态,它总是打印 2 行的问题。它也总是打印相同的产品(最后一个 SQL 查询),所以我得到了 2 行具有相同信息的行。
猜你喜欢
  • 2010-12-24
  • 1970-01-01
  • 2023-03-14
  • 1970-01-01
  • 1970-01-01
  • 2019-02-07
  • 1970-01-01
  • 2013-10-13
  • 1970-01-01
相关资源
最近更新 更多