我已经挣扎了一段时间,我根本无法解决这个问题。这是我的代码:
<?php
$list = array(
"60002" => array("name" => "Cyan Bubble Color", "info" => array("cost" => "200", "code" => "0x50ebec")),
"65002" => array("name" => "Cyan Name Color", "info" => array("cost" => "150", "code" => "0x00cccc")),
);
foreach($list as $id =>$name) {
echo("<td style=\"vertical-align:middle;\">
<a href=\"item=$id#confirm\" role=\"button\" data-toggle=\"modal\">
Buy</a></td></tr>");
}?>
<html>
<div class="modal small hide fade" id="confirm" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h3 id="myModalLabel">Log off before purchase</h3>
</div>
<div class="modal-body">
<p class="error-text"><i class="icon-warning-sign modal-icon"></i>Log off all instances</p>
</div>
<div class="modal-footer">
<a href="redeem.php?item=<?php echo $id; ?>"><button class="btn btn-danger">Buy</button></a>
</div>
这里的主要问题是foreeach中的$ id与div类链接中的$ id不同。相反,链接是foreach列表的结束值。
答案 0 :(得分:2)
您已在循环中定义了一个已在外部定义的中使用的变量,但您需要同时访问外部$id
和内部$id
,对吗?
为了在循环中使用外部$id
变量,您应该将循环中跟踪索引的变量重命名为$id
以外的其他变量:
foreach($list as $nid =>$name) {
echo("<td style=\"vertical-align:middle;\"><a href=\"item=".$nid."#confirm\" role=\"button\" data-toggle=\"modal\">Buy</a></td></tr>");
<div class="modal small hide fade" id="confirm" tabindex="-1" role="dialog" aria- labelledby="myModalLabel" aria-hidden="true">
<a href="redeem.php?item=<?php echo $id; ?>"><button class="btn btn-danger">Buy</button></a></div>
<强>更新强>:
根据问题中更新的代码,很明显发生了什么。最初分配给$id
的值被foreach
循环中的索引赋值覆盖。您仍然可以通过将索引变量重命名为$id
:
<?php
$id = 'item_id';
foreach($list as $nid =>$name) {
echo("<td style=\"vertical-align:middle;\"><a href=\"item=$nid#confirm\" role=\"button\" data-toggle=\"modal\">Buy</a></td></tr>");
}
?>
<div class="modal small hide fade" id="confirm" tabindex="-1" role="dialog" aria- labelledby="myModalLabel" aria-hidden="true">
<a href="redeem.php?item=<?php echo $id; ?>">
<button class="btn btn-danger">
Buy
</button>
</a>
</div>
更新2:
根据澄清评论,您似乎正在尝试将索引变量传递给href="redeem.php?item=?id"
。为此,您需要在循环中移动标记的特定部分:
<div class="modal small hide fade" id="confirm" tabindex="-1" role="dialog" aria- labelledby="myModalLabel" aria-hidden="true">
<?php
foreach($list as $nid =>$name) {
echo("<td style=\"vertical-align:middle;\">
<a href=\"item=".$nid."#confirm\" role=\"button\" data-toggle=\"modal\">
Buy</a></td></tr>");
echo("<a href=\"redeem.php?item=$id\"><button class=\"btn btn-danger\">Buy</button></a>");
} ?>
</div>
答案 1 :(得分:0)
这是你应该怎么做的......你将所有这些链接都带有id,将id传递给data
,
然后当你点击它时,触发一些Jquery来检索id
,并附加到模态的href
....然后打开模态。
像这样......不完全,但它是一个开始。
<?php
foreach($list as $id =>$name) {
echo("<td style=\"vertical-align:middle;\">
<a href=\"item=$id#confirm\" class='buy' data-id=".$id." role=\"button\" data-toggle=\"modal\">
Buy</a></td></tr>");
}?>
然后是一些Jquery
$('buy').click(function(){
var id = $(this).data('id');
// open your modal here, and pass this id, to the href
$('#confirmlink').attr('href', 'redeem.php?item='+id);
//then open/trigger the modal here..
});