Создание начальной загрузки Accordionin в цикле while

#php #bootstrap-4

#php #bootstrap-4

Вопрос:

Я пытаюсь создать поле динамического содержимого, где все данные находятся в отдельном аккордеоне, и у меня возникают небольшие проблемы.

Результат — первый аккордеон работает только тогда, когда у меня разные идентификаторы для каждого аккордеона.

Кто-нибудь может мне помочь в этом

                             while ($row = mysqli_fetch_assoc($sql_result))
                            { 
                                $i=1;
                        ?>
                        

<div class="container-fluid border">
                            <table width=100%>
                                <tr>
                                    <td><img src="/images/vehicles/<?php echo strtolower($row['vtype']); ?>.jpg" width="75" heigth="75" alt=""></td>
                                    <td align="center"><b><?php echo $row['vtype']; ?> A/C </b> - <?php echo $row['nos']; ?> Seater<br>
                                    <b>amp;#8377; <?php if($duration=='8hrs') { $basefare=$row['8hrs']; } elseif($duration=='10hrs') { $basefare=$row['10hrs']; } else { $basefare=$row['12hrs']; } $base=$basefare ($basefare*5/100); echo number_format($base,2,".",","); ?> </b></td>
                                    <td align="right"><a href="#" class="btn btn-primary">Book</a></td>
                                </tr>
                            </table>
                        </div>
                        <div id="accordionfare<?php echo $i; ?>">
                            <div class="card">
                                <div class="card-header" align="right">
                                    <a class="card-link" data-toggle="collapse" href="#collapsefare<?php echo $i; ?>">Fare Details</a>
                                </div>
                                <div id="collapsefare<?php echo $i; ?>" class="collapse" data-parent="#accordionfare<?php echo $i; ?>">
                                    <div class="card-body">
                                        <p align="center"><b>Fare Details: </b>Base Fare: amp;#8377; <?php echo number_format($basefare,2,".",","); ?> | GST @ 5%: amp;#8377; <?php echo number_format(round($base*5/100),2,".",","); ?> | Extra Hr Fare: amp;#8377; <?php echo number_format($row['extrahr'],2,".",","); ?>/Hr | Extra Km Fare: amp;#8377; <?php echo number_format($row['extrakm'],2,".",","); ?>/Km</p>
                                        <?php $i  ; ?>
                                    </div>
                                </div>
                            </div>
                        </div><br>
                        <?php
                            }
                        ?>
  

Комментарии:

1. Я не вижу цикла в вашем коде. Пожалуйста, покажите нам весь соответствующий код.

2. что означает «работает только первый аккордеон»? Первый аккордеон открывается и закрывается? Создается только один элемент accordion? Есть ли у вас какие-либо ошибки в журнале консоли?

Ответ №1:

Я протестировал ваш код, заменив ваши данные, и он работает так, как ожидалось. Проверьте журнал ошибок PHP на случай, если есть ошибки, которые могут каким-либо образом затормозить цикл. Вот изолированная среда, где вы можете выполнить мой тестовый код и проверить результат HTML

PS У вас должны быть аккордеоны с разными идентификаторами, чтобы открывать каждый из них отдельно.

Комментарии:

1. Я не нашел никакой ошибки в цикле while, но я сделал это, добавив foreach вместо while . Теперь он работает. Спасибо за предложение.