0

我已经为此苦苦挣扎了一段时间,但我根本无法弄清楚。这是我的代码:

<?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 列表的结束值。

4

2 回答 2

2

您已经定义了一个循环中使用的变量,该变量已经在 outside定义了,但是您需要同时访问 external$id和 internal $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:

根据澄清评论,您似乎正在尝试将 index 变量传递给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>
于 2013-06-28T22:04:14.850 回答
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..

 });
于 2013-06-28T22:18:42.070 回答