2011-10-04 88 views
2

我似乎有一個非常簡單的問題,但我無法繞過這個問題。預先感謝您提供的任何幫助。PHP中的按鈕列表「For循環」不起作用

首先,這裏是對代碼的描述: 以下代碼片段來自用戶的活動頁面。這種剪裁顯示了放置在用戶的「畫布上」的所有出價。

<table width="400" align=center frame=below> 

    <ul> 
    <?php for ($j = 0 ; $j < $numBids ; ++$j) { $cbid= mysql_fetch_row($bids); ?> 
    <li><strong>$<?php echo "$cbid[2]"; ?>.00 </strong> by <a href="profile.html?view=<?php echo "$cbid[4]"; ?>"><?php $name=getUser($cbid[4]); echo "$name"; ?></a> 
    <br/>"<?php echo "$cbid[3]"; ?>"<br/> 

    <p align=CENTER> 

    <!-- Message Artist--> 
    <form method="post" action="messages.html?msg=<?php echo $cbid[4]; ?>" >  
    <input type="submit" name="message" value="Message Artist" > 
    </form> 

    <!-- Accept Bid--> 
    <form method="post" action="contract.html?bid=<?php echo "$cbid[0]"; ?>" class="login-form">      
    <input type="submit" value="ACCEPT BID!" > 
    </form> 

    </p> 

    </li>         
    <?php } ?>          
    </ul> 

如果$ numBids = 3,這段代碼的HTML輸出是:

<ul> 

    <li><strong>$150.00 </strong> by <a href="profile.html?view=169&sid=d0ba8340cdb156c233baf364960ac3e9">Artist Name</a> 
    <br/>"I would like to paint this in acrylic."<br/> 

    <p align=CENTER> 
    <!-- Message Artist--> 
    <form method="post" action="messages.html?msg=151" ><input type="hidden" name="sid" value="d0ba8340cdb156c233baf364960ac3e9" />  
    <input type="submit" name="message" value="Message Artist" > 
    </form> 
    <!-- Accept Bid--> 
    <form method="post" action="contract.html?bid=76" class="login-form"><input type="hidden" name="sid" value="d0ba8340cdb156c233baf364960ac3e9" />      
    <input type="submit" value="ACCEPT BID!" > 
    </form> 
    </p> 

    </li>         

    <li><strong>$150.00 </strong> by <a href="profile.html?view=169&sid=d0ba8340cdb156c233baf364960ac3e9">Artist Name</a> 
    <br/>"I would like to paint this in acrylic."<br/> 

    <p align=CENTER> 
    <!-- Message Artist--> 
    <form method="post" action="messages.html?msg=151" ><input type="hidden" name="sid" value="d0ba8340cdb156c233baf364960ac3e9" />  
    <input type="submit" name="message" value="Message Artist" > 
    </form> 
    <!-- Accept Bid--> 
    <form method="post" action="contract.html?bid=72" class="login-form"><input type="hidden" name="sid" value="d0ba8340cdb156c233baf364960ac3e9" />      
    <input type="submit" value="ACCEPT BID!" > 
    </form> 
    </p> 

    </li>         

    <li><strong>$150.00 </strong> by <a href="profile.html?view=169&sid=d0ba8340cdb156c233baf364960ac3e9">Artist Name</a> 
    <br/>"I would like to paint this in acrylic."<br/> 

    <p align=CENTER> 
    <!-- Message Artist--> 
    <form method="post" action="messages.html?msg=169" ><input type="hidden" name="sid" value="d0ba8340cdb156c233baf364960ac3e9" />  
    <input type="submit" name="message" value="Message Artist" > 
    </form> 
    <!-- Accept Bid--> 
    <form method="post" action="contract.html?bid=70" class="login-form"><input type="hidden" name="sid" value="d0ba8340cdb156c233baf364960ac3e9" />      
    <input type="submit" value="ACCEPT BID!" > 
    </form> 
    </p> 

    </li>         

    </ul> 

頁的現場測試版本已經成立:http://www.canvasmatch.com/test/activity.html


現在的問題:

如果用戶點擊「信息藝術家」按鈕,用戶跳轉到一個消息頁面裏可以發送消息到藝術家,很明顯。除第一個按鈕外,此按鈕適用於所有出價。如果您要點擊第一個「Message Artist」按鈕,則會錯誤地刷新頁面。但是,如果您點擊第二個「Message Artist」按鈕,它會適當地跳轉到messages.html。如果有6個出價,所有的「消息藝術家」按鈕將工作,除了第一個。

對我來說,奇怪的是所有「Accept Bid」按鈕都可以工作,即使是第一個也是如此。

有沒有人經歷過這樣的事情? 關於我應該尋找什麼的想法? 你是否需要整個html文件才能找到問題?

我很感激您能提供的任何幫助!

感謝,

傑克

+0

這將是巨大看到HTML這輸出,看看是否有任何明顯的錯誤在那裏。 –

+0

感謝Christian,我在上面添加了它。 – Jake

+0

請將您的php腳本發送給[email protected],以便我可以詳細瞭解它。所以我可以測試/編輯,並給你確切的原因。 –

回答

1

基本上,當你用Firebug檢查元素時,你會發現它沒有封裝在表單中。奇怪的事情正在發生,因爲HTML對於特定元素來說看起來很好。儘管文檔的其餘部分仍然存在錯誤,所以雖然我不能直接查明它,但我首先建議至少解決通過執行W3C驗證測試可以發現的大部分錯誤。我幾乎可以保證一旦這些問題得到解決,它就可以工作。

http://validator.w3.org/check?uri=http%3A%2F%2Fwww.canvasmatch.com%2Ftest%2Factivity.html

+0

非常感謝。我之前沒有真正使用過http://validator.w3.org,但這肯定有助於強調一些問題。特別是,我們使用

來定義一個導致嵌套窗體的CSS元素。 – Jake

+0

太棒了!這些年來幫助我很多,很高興它也能幫助你:) –

0

它看起來像你需要引號$cbid[4]

電流:

<form method="post" action="messages.html?msg=<?php echo $cbid[4]; ?>" >

更改爲

<form method="post" action="messages.html?msg=<?php echo "$cbid[4]"; ?>" >

+0

謝謝。我添加了引號,但沒有解決問題。第一個「Message Artist」按鈕仍然是一個死鏈接。 – Jake

0

問題是$ j的增量。 for語句應該是這樣的:

for ($j = 0 ; $j < $numBids ; $j++) 

++附加$ J增量第一,然後不循環的這樣反而在第一時間爲0,它結束了1圍繞在PHP腳本變量的報價是沒有必要的。

我的確有一個問題,你爲什麼使用for循環而不是while循環,在循環之前定義了一個計數器,並在最後增加了一個增量?

編輯

只記得曾與我正在使用的形式,第一個沒有工作畫廊的問題。要解決這個問題,我必須爲每個字符串添加一個隨機字符串名稱。嘗試使用隨機生成的字符串或數字爲每個表單標籤添加一個名稱。

例子:

<form method="post" action="messages.html?msg=151" class="login-form" name="fEd5t89"> 

編輯 - 工作

看,發現這是一個嵌套<形式>後的文件。刪除包裝<表格>後,該頁面開始正常工作。

+0

遞增順序不能解決問題,如果出現3個出價,它仍然會顯示全部3.即使這是問題,我也不會看到它會如何導致第一個按鈕成爲死鏈接。問題是否存在於我沒有使用while循環的事實中? – Jake

+0

這是可能的,但它可能沒有幫助,如果每個數據是相同的。你有一個測試頁面,我可以看看現場的東西。 –

+0

我添加了一個實時測試版本。請參閱上面的鏈接,在html輸出代碼下面 – Jake

0

如果$ numBids = 3,這段代碼的HTML輸出是:

你設置$numBids至3每次迭代?如果它是一個比較,它應該是$numBids == 3,但它有點模糊,因爲該代碼段不在代碼塊中。

+0

不,我沒有設置$ numBids爲3.我只是寫出來供參考。我可以發佈整個php文件,如果這將有幫助(而不是壓倒性的)。 – Jake