2015-05-01 42 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"> 

... 

这样的线条浏览器可以找出哪些下拉对应于哪个按钮,因为每个按钮有只有一个下拉在相应的表格中。

相关问题