PHP While While循环 - 变量仅在最后一个条目上传递

时间:2015-05-01 18:12:23

标签: php mysql while-loop

当我按下提交按钮时,变量“评级”将仅从最后一行传递。其他人都是空的。

<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') { ?>
	<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>'; }
		
		elseif ($rolle == 9) {
			
			echo '<button type="freigeben" value="' . $show['id']. '" name="freigeben">Freigeben?</button>';
			
		}?></td>
  </tr>
   </tbody>
  <? } 
  
  }?>
</table>

只有最后一行的“评级”才会传递给

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


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

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

}

将显示所有行,但是当我按下“提交”按钮时,只有在按下最后一行的按钮时,才会传递评级下拉列表中的变量。

感谢您的帮助!

亲切的问候,

的Stefan

1 个答案:

答案 0 :(得分:0)

如果我理解您尝试实现的目标,您希望rating变量包含与按下的按钮对应的评级。但是如果你考虑一下,浏览器就无法确定按钮对应的下拉菜单。它对你来说是有意义的(因为它们看起来彼此相邻),但是HTML没有&#34;彼此相邻的概念&#34;,从HTML的角度来看,你有多个下拉,出于某种原因所有具有相同的名称和多个按钮。当您按下其中一个按钮时,需要确定要将哪个值作为rating发送。它选择使用最后一个,因为它无法更好地猜测。

对您来说最简单的解决方案是实际制作每个下拉按钮并将按钮设置为自己的形式。目前您有一个巨大的表单(请参阅脚本开头的<form>标记)。相反,在while循环体的开头打开表单,然后沿着

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

...

通过这种方式,浏览器可以确定哪个下拉菜单对应哪个按钮,因为对于每个按钮,只有一个按下相应的表单。