在监听mysqli_fetch_array时,它会显示同一行的不同结果

时间:2018-03-23 12:51:52

标签: php html

我试图通过显示价格,名称等来从我的酒店网站列出房间。 虽然上市有两个区域,我使用房间的价格,第一个正确显示房间的价格,但第二个价格显示在仪表板显示基本价格*夜晚显示(在每一行)第一排的价格。

这是选择代码(没什么特别的):

$sqlx=sprintf("Select * from quartos");
$resx=mysqli_query($ligacao,$sqlx);

这是上市代码:

    <?php
    while($regx=mysqli_fetch_array($resx)){
    ?>
    <div class="room-box">
        <form method="post">
        <div class="col-md-5 room-img" data-bg-img="<?php echo $regx['nome_doc'];?>">
            <div class="select-room-box">
                <a href="booking-2.php?id=<?php echo $regx['id'];?>">Selecione Este Quarto</a>
            </div>
        </div>
        <div class="r-sec col-md-7">
            <div class="title-box">
                <div class="title"><?php echo $regx['nome'];?></div>
                    <div class="price">
                        <div class="title">Preço :</div>
                        <div class="value"><?php echo $regx['preco'];?>€</div>
                    </div>
                    <a href="#price-break-down-1" class="price-breakdown"><i class="fa fa-caret-right"></i>Lista de Preços</a>
                    <div id="price-break-down-1" class="price-breakdown-popup mfp-hide">
                        <table>
                            <tr>
                                <td>
                                    <div class="title">Preço Base</div>
                                    <div class="duration">x 
                                    <?php
                                    $diff= date_diff($entrada,$saida);        
                                    echo $diff->format("%a noites");
                                    ?>
                                    </div>
                                </td>
                                <td class="price"><?php echo $regx['preco'];?>€</td>
                            </tr>
                            <tr>
                                <td>
                                    <div class="title">Total</div>
                                    <div class="duration"><?php echo $diff->format("%a noites")?></div>
                                </td>
                                <td class="price"><?php echo $regx['preco']*$diff->format("%a noites") ;?>€</td>
                            </tr>
                        </table>
                    </div>
                </div>
            </div>
       </form>
    </div>
<?php
}
?>

我知道这有点令人困惑,但我很匆忙而且只是粘贴了代码(我第一次在这里发帖),我所说的是{16}行echo $regx['preco']从标签php开始计算。< / p>

从标签php计算的第31个中的第一个echo $regx['preco']显示正确的价格,但第二个始终显示第一个结果的价格。

我的问题是为什么$regx['preco']在同一行显示不同的结果

这是我的房间列表,它们都有不同的价格编号一个90€和一个100€但是当我打开仪表板时它只显示所有行的90€

This is my list of rooms, they both have different price numbers one 90€ and one 100€ but when I open dashboard it only shows 90€ in all rows

dashboard Quarto 1

dasboard Quarto 2

1 个答案:

答案 0 :(得分:0)

由@CBroe在评论中发布,您的问题是由您为详细的prives生成的链接引起的:

while($regx=mysqli_fetch_array($resx)) { 
    ?>
    ...
    <a href="#price-break-down-1" class="price-breakdown">
        <i class="fa fa-caret-right"></i>Lista de Preços
    </a>
    <div id="price-break-down-1" class="price-breakdown-popup mfp-hide">
        ...
    </div>
    ...
    <?php 
}

链接的href属性和id的{​​{1}}属性对于所有列表条目都是静态的。因为ID应该是唯一的,它们不是您的情况,链接会搜索给定ID的第一次出现,因此始终打开第一个条目的价格详细信息。

要解决此问题,您需要为每个条目指定唯一ID。这可以通过在每个<div>id附加一个数字来实现。

href

如果您的表格为每一行提供唯一 ID,则应使用该ID代替额外的计数器:

$counter = 1;
while($regx=mysqli_fetch_array($resx)) {
    ?>
    ...
    <a href="#price-break-down-<?= $counter ?>" class="price-breakdown">
        <i class="fa fa-caret-right"></i>Lista de Preços
    </a>
    <div id="price-break-down-<?= $counter ?>" class="price-breakdown-popup mfp-hide">
        ...
    </div>
    ...
    <?php 
    $counter++;
}