2013-06-28 61 views
0

我一直在努力這一段時間,我根本無法弄清楚這一點。這裏是我的代碼:PHP變量在同一頁上傳入Foreach

<?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列表的最終值。

+3

你的代碼甚至無法有效。沒有匹配的'}',並且你有包含HTML的行而沒有'echo'語句。嘗試粘貼我們的實際代碼。 – Barmar

+0

對不起,我修好了。 – tooly228

+0

您是否試圖創建多個與您的foreach相關的多個ID的模式框???因爲這不會工作....你應該只是做一個JQuery鏈接,當他們點擊TR時,它將信息傳遞給模態,無需填充百萬模態 – KyleK

回答

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循環中的索引分配覆蓋。 2

<?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> 

更新:

基於澄清意見,似乎你試圖通過索引變量您仍然可以通過索引變量重命名爲其它的東西,$id解決此到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> 
+0

第二行中的「_' $ id」正在以字符串_「打印出來:」您正在談論哪一行/'$ id'? – Tadeck

+0

由於字符串被雙引號括起,所以變量被內插,而不是作爲標記打印。 – Barmar

+0

如果您刪除了有關可變插值的錯誤信息,我會贊成此答案。你可能會喜歡連接,但他在原始代碼中插入的方式沒有任何問題。他唯一的問題是變量名稱重複。 – Barmar

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.. 

}); 
+0

對不起,我從來沒有用過jquery。我將如何使用您提供的代碼? – tooly228

+0

如果這個答案沒有回答我回家的時間,我會用更完整的信息修改我的答案:)現在就離開工作..........大概2個小時左右。 – KyleK

+0

謝謝你KyleK – tooly228