#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
атрибута.