Php在while中分配会话数组

时间:2017-09-23 16:00:59

标签: php arrays database session while-loop

我会在数据库中提供数据并在PHP中将会话分配为数组。我在while循环中分配值会话。我认为会话是一个数组,但我看,我查看不是一个数组。我想在创建会话的同时提供数据库的数据,并在此会话中将数据库的数据作为数组提供。在另一页中使用此会话与foreach之后。

代码:

<?php

$vericek15 = $baglanti10 -> prepare("select * from sepet where kulad = :kulad");
$vericek15 -> bindParam(':kulad', $kulad8);
$vericek15 -> execute();
$vericek16 = $baglanti10 -> prepare("select * from sepet where kulad = ?");
$vericek16 -> bindParam(1, $kulad8);
$vericek16 -> execute();
$vericek16say = $vericek16 -> rowCount();

if ($vericek16say == 0) {
?>
    <div id="surunyokl">
        <label>Your cart is empty</label>
    </div>

    <style type="text/css">
    #surunyokl{
        position: absolute;
        top: 325px;
        left: 625px;
    }
    </style>

<?php
} else {
?>
<div id="sepettablo">
    <table>
        <tr>
            <th style="text-align: center;">Image of product</th>
            <th style="text-align: center;">Product</th>
            <th style="text-align: center;">Piece</th>
            <th style="text-align: center;">Price</th>
            <th style="text-align: center;">Delete</th>
        </tr>

<?php
while($bilgiler15 = $vericek15 -> fetch(PDO::FETCH_ASSOC)){

    $vericek17 = $baglanti10 -> prepare("select * from urunlist where urunad = :urunad");
    $vericek17 -> bindParam(':urunad', $bilgiler15['urunad']);
    $vericek17 -> execute();

    $vericek18 = $baglanti10 -> prepare("select * from urunlistresim where urunad = :urunad2");
    $vericek18 -> bindParam(':urunad2', $bilgiler15['urunad']);
    $vericek18 -> execute();

    $bilgi18 = $vericek18 -> fetch();

    while($bilgiler17 = $vericek17 -> fetch(PDO::FETCH_ASSOC)){

        $_SESSION['b'] = $bilgiler15['urunad'];
        $_SESSION['urunadi'] = $bilgiler15['urunad'];
        $_SESSION['urunadet'] = $bilgiler15['urunadet'];
        $_SESSION['urunfiyat'] = $bilgiler17['urunfiyat'];

        if ($bilgiler17['urunadet'] == 0) {

        }

        echo '<tr>';
        echo '<td><img src="'.$bilgi18['resimyol'].'" height="100" width="100"></td>';
        echo '<td style="width:500px;text-align:center;">'.$bilgiler15['urunad'].'</td>';

        if ($bilgiler17['urunadet'] == 0) {

          echo '<td style="width:125px;text-align:center;"><input type="button" value="-" onclick="azalt('.$bilgiler15['no'].');">'.$bilgiler15['urunadet'].'</td>';

        }else {

          echo '<td style="width:125px;text-align:center;"><input type="button" value="-" onclick="azalt('.$bilgiler15['no'].');">'.$bilgiler15['urunadet'].'<input type="button" value="+" onclick="artir('.$bilgiler15['no'].');"></td>';

        }
        echo '<td style="width:75px;text-align:center;">'.$bilgiler17['urunfiyat'].'<label><b> € </b></label></td>';
        echo '<td><input type="button" value="Delete" onclick="sil('.$bilgiler15['no'].')"></td>';

        echo '</tr>';

        @$fiyat += $bilgiler17['urunfiyat'] * $bilgiler15['urunadet'];
        @$toplamadet += $bilgiler15['urunadet'];
        if ($toplamadet == 1) {
            $kargo = 5;
        }elseif ($toplamadet > 1) {
            $kargo = 5 + ($toplamadet - 1);
        }else{
        }
        $toplam = $fiyat + $kargo;
    }

}

我试过但我不能。

我该怎么做?

请分享代码模型。

我需要你的帮助。

注意:我的代码很复杂。对不起。我锄你理解。

1 个答案:

答案 0 :(得分:1)

很抱歉我不知道代码在做什么,但你基本上没有将数组设置到SESSIOn中,你每次循环时都会覆盖数据

    $_SESSION['b'] = $bilgiler15['urunad'];
    $_SESSION['urunadi'] = $bilgiler15['urunad'];
    $_SESSION['urunadet'] = $bilgiler15['urunadet'];
    $_SESSION['urunfiyat'] = $bilgiler17['urunfiyat'];

修改它,以便每次围绕while循环向会话添加新项目

    $_SESSION['b'][] = $bilgiler15['urunad'];
    $_SESSION['urunadi'][] = $bilgiler15['urunad'];
    $_SESSION['urunadet'][] = $bilgiler15['urunadet'];
    $_SESSION['urunfiyat'][] = $bilgiler17['urunfiyat'];

现在你将有很多$_SESSION['b']出现等

它可能更容易做到这一点所以每一行都被添加为数组中的新出现

$_SESSION['bilgiler15'][] = array(
                                'b'         => $bilgiler15['urunad'],
                                'urunadi'   => $bilgiler15['urunad'],
                                'urunadet'  => $bilgiler15['urunadet'],
                                'urunfiyat' => $bilgiler17['urunfiyat'],
                                );

或者

$_SESSION['bilgiler15'][$bilgiler15['urunad']] = 
                        array(
                                'urunadi'   => $bilgiler15['urunad'],
                                'urunadet'  => $bilgiler15['urunadet'],
                                'urunfiyat' => $bilgiler17['urunfiyat'],
                            );