2015-05-01 36 views
1

當我按下Submit按鈕時,變量「rating」只會從最後一行傳遞。其他人只是空的。PHP While循環 - 變量將僅傳遞到最後一個條目

<form method="POST" action="<?php echo $_SERVER["PHP_SELF"]; ?>" enctype="multipart/form-data"> 
 
<table width="800" border="0" align="center" class="zui-table"> 
 
<thead> 
 
    <tr> 
 
    <td colspan="4">  
 
    </td> 
 
    </tr> 
 
    <tr> 
 
    <th width="96">Kategorie</th> 
 
    <th width="177">Unterkategorie</th> 
 
    <th width="299">Beitrag</th> 
 
    <th width="210"><? if ($rolle == '1') { echo 'Bewertung'; } elseif ($rolle== '9') { echo 'Freischalten';} else { echo 'Status';} ?></th> 
 
    <? while ($show = mysql_fetch_array($abfrage)) { ?> 
 
    </tr> 
 
    </thead> 
 
    <tbody> 
 
    <tr> 
 
    <td><? echo $show['category']; ?></td> 
 
    <td><? echo $show['subcategory']; ?></td> 
 
    <td><a href="<? echo $show[url] ?>" data-lightbox="<? echo $show['file_name'] ?>" data-title="<? echo $show['file_name'] ?>"><img src="timthumb.php?src=<?php echo $show['url'] ?>&w=300&h=150" alt="resized image" BORDER="2"/></a> </td> 
 
    <td><? if ($rolle == '1') { ?> 
 
\t <select name="rating" class="style28" style="width: 120px" id="rating"> 
 
     <option value="0">0</option> 
 
     <option value="5">5</option> 
 
     <option value="15">15</option> 
 
     <option value="20">20</option> 
 
     <option value="25">25</option> 
 
     <option value="30">30</option> 
 
     <option value="35">35</option> 
 
     <option value="40">40</option> 
 
     <option value="45">45</option> 
 
     <option value="50">50</option> 
 
     <option value="55">55</option> 
 
     <option value="60">60</option> 
 
     <option value="65">65</option> 
 
     <option value="70">70</option> 
 
     <option value="75">75</option> 
 
     <option value="80">80</option> 
 
     <option value="85">85</option> 
 
     <option value="90">90</option> 
 
     <option value="95">95</option> 
 
     <option value="100">100</option> 
 
     </select> <? echo '<button type="submit" value="' . $show['id']. '" name="submit">Bewerten?</button>'; } 
 
\t \t 
 
\t \t elseif ($rolle == 9) { 
 
\t \t \t 
 
\t \t \t echo '<button type="freigeben" value="' . $show['id']. '" name="freigeben">Freigeben?</button>'; 
 
\t \t \t 
 
\t \t }?></td> 
 
    </tr> 
 
    </tbody> 
 
    <? } 
 
    
 
    }?> 
 
</table>

只有 「等級」 中的最後一行將被傳遞到

if (isset($_POST['submit'])) { 
 

 

 
\t echo $_POST['rating']; 
 
\t echo $_POST['submit']; 
 

 
\t //mysql_query("SET CHARACTER SET 'utf8'"); 
 
\t 
 
\t $db = mysql_connect("localhost", "xx", "xx"); 
 
\t mysql_select_db("cx",$db); 
 
\t 
 
\t //Rating eingeben 
 
\t $sql = "UPDATE wp_awa_upload SET count = count + '$_POST[rating]' WHERE id = '$_POST[submit]'"; 
 
\t $result = mysql_query($sql,$db); 
 
\t 
 
\t //Session eintragen 
 
\t 
 
\t $sql_insert = "INSERT into wp_awa_session (upload_id, user_id) VALUES('$_POST[submit]', '$_SESSION[id]')"; 
 
\t $result = mysql_query($sql_insert,$db); 
 
\t 
 
\t echo $sql_insert; 
 
\t echo $sql; 
 

 
}

所有行會被顯示出來,但是當我按在提交按鈕上,那麼評級下拉菜單中的變量只會被傳遞最後一行的按鈕已被按下。

感謝您的幫助!

親切的問候,

斯特凡

+0

在打開PHP標記 (例如'<?php error_reporting(E_ALL);)後立即將錯誤報告添加到文件頂部。 ini_set('display_errors',1);'然後你的代碼的其餘部分,看看它是否產生任何東西。 還要將'或者死(mysql_error())'添加到'mysql_query()'並確保你已經開始了會話。 –

+0

親愛的弗雷德,error_reporting已打開,並沒有顯示任何東西。我假設錯誤在按鈕 - 因爲只有最後一個按鈕獲得正確的「評級」數字... – Bosstone

回答

0

如果我明白你想達到什麼樣的,你想要的rating變量包含對應於被按下的按鈕評級。但是如果你仔細想一想,瀏覽器就無法確定按鈕對應哪個下拉菜單。這對你來說很有意義(因爲它們看起來是彼此相鄰的),但是HTML沒有「彼此相鄰」的概念,從HTML的角度來看,你有多個下拉菜單,出於某種原因,所有菜單都有相同的名稱,和多個按鈕。當您按下其中一個按鈕時,它需要決定將哪個值作爲rating發送。它選擇使用最後一個,因爲它無法更好地猜測。

最簡單的解決方案是讓每個下拉按鈕和一個按鈕成爲自己的形式。目前您有一個巨大的表單(請參閱腳本開頭的<form>標籤)。相反,在你while循環體的開始和接近結束時打開的形式,沿

<? while ($show = mysql_fetch_array($abfrage)) { ?> 
</tr> <form method="POST" action="<?php echo $_SERVER["PHP_SELF"]; ?>" enctype="multipart/form-data"> 

... 

這樣的線條瀏覽器可以找出哪些下拉對應於哪個按鈕,因爲每個按鈕有隻有一個下拉在相應的表格中。

相關問題