while() — не зацикливание — PHP

#php #loops #while-loop

#php #циклы #цикл while

Вопрос:

У меня небольшая проблема с моим циклом PHP while. Я зацикливаю все доступные пакеты членства (и их детали) из своей базы данных.

Мой код выглядит так:

        <?php
                    while($mp = mysql_fetch_assoc($s)):
                    ?>
                    <tr class="hover">
                        <td class="name" width="30%"><?php echo $mp['membershipname']; ?></td>
                        <td class="price" width="30%">$<span><?php echo $mp['ap_price']; ?></span>/<span><?php echo $mp['duration']; ?></span> days.</td>

                      <?php if($userdata['membership']>$mp['membershipid']): ?>
                          <td width="40%" class="purchase"></td>
                      <?php else: ?>
                            <td width="40%" class="purchase" >
                            <a href="#" id="upg<?php echo $mp['id']; ?>" class="click cgreen inline">Pricing</a>
                          </tr>
                      <?php endif; ?>

            <div style='display:none'>
                <div id='inline_content' style='padding:10px; background:#fff;'>

                   <div style="text-align:center;font-weight:bold">Please select your payment method:</div>

                   <div style="text-align:center">
                   <br />
                    <?php
                    if($sdata['allow_paypal'] == 1 amp;amp; $mp['pp_price']>0 amp;amp; $userdata['paypal']!=""): ?> 

                    <form action="https://www.paypal.com/cgi-bin/webscr" method="post" style="float:left;" >

                    <input type="submit" name="submit" class="click cblue" value="PayPal - $<?php echo $mp['pp_price']; ?>">
                    </form>

                    <?php endif; 
                    if($sdata['allow_alertpay'] == 1 amp;amp; $mp['ap_price']>0 amp;amp; $userdata['alertpay']!=""):
                    //Do not change any input fields, OTHER than return URL (if needed)
                    ?>

                    <form method="post" name="ap" action="https://www.alertpay.com/PayProcess.aspx" style="float:right;" >    

                    <input type="submit" name="submit" class="click cgreen" value="AlertPay - $<?php echo $mp['ap_price']; ?>" />

                    </form>

                    <?php    
                    endif; ?>
                                            </div>
            </div>                         


           </div>
                     <script>
                        $(document).ready(function(){
                            $("#upg<?php echo $mp['id']; ?>").colorbox({inline:true, width:"30%",href:"#inline_content"});
                        });
                    </script>               
                    <?php endwhile; ?>
  

Как вы можете видеть в приведенном выше коде, я выполняю цикл while.

Моя проблема в том, что $mp['pp/ap_price'] внутри #inline_content не выполняется цикл. Он берет только цену из первой строки. Хотя, это цикл в таблице.

В чем здесь проблема? Я попытался выполнить еще один цикл внутри #inline_content, но это не сработало.

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

1. Пожалуйста, удалите все ненужные детали. Здесь должно быть легко создать тестовый пример длиной всего в несколько строк. например, нам, конечно, не нужно просматривать весь этот HTML…

Ответ №1:

Идентификаторы HTML должны быть уникальными для одного элемента DOM.

У вас есть элемент DOM #inline_content для каждой записи в результате запроса к базе данных. Затем, когда вы пытаетесь использовать Javascript для их отображения, отображается только один, потому что все они имеют одинаковый идентификатор.

HTML и Javascript не знают о вашем цикле PHP.

Рассмотрите возможность использования class атрибута вместо id атрибута.