'view_act.php' file
<?php
$query = mysql_query('select * from activities');
$check=mysql_num_rows($query);
if($check==0)
{
echo "No enteries found ";
}
else
{
static $counter;
echo '<table border="1" cellpadding="5" cellspacing="5" align="center">
<tr>
<th><font color="#FF9900">ACTIVITY NAME</font></th>
<th><font color="#FF9900">ACTIVITY UPDATE</font></th>
</tr>';
while($row=mysql_fetch_array($query))
{ $counter++;
echo '<tr>';
echo '<td width=231>
<form action="update_act.php" method="POST">';
echo "<center><font color=\"#CC9900\">".$row['act_name']."</center>";
echo "</td>
<td width=231>";
echo "<center>".'<font color="#CCCCCC"><input type="submit" name="edit" value="edit"></center>';
echo '<input type="hidden" name="act_name'.$counter.'" value="'.$row['act_name'].'" />';
echo '<input type="hidden" name="count" value="'.$counter.'" />';
echo "</td>
</tr>";
}
echo "</form>";
echo "</table>";
}
?>
'update_act.php' file
<?php
$count=$_POST['count'];
echo "Old Activity Name : ". $_POST["act_name".$count];
echo '<br/>Enter new activity name :
<form action="update_act.php" method="post">
<input type="text" name="aname">
<input type="submit" name="submit">';
?>
此处从表中获取的数据必须通过不同的编辑按钮名称进行更新,因此对于每个活动名称,计数器会给出不同的名称。但这里的问题是表单提交到页面update_act.php时每次传递最后一个活动名称的值。因此,任何行的旧活动名称的值是表'act_name'的最后一个值。请帮我传递任何活动名称的计数器的相应值。
答案 0 :(得分:1)
这是一团糟。
如果要从表中标识特定行,则应在主键或唯一代理键上执行。永远不要使用计数器/ rownum / offset。
即使您强制使用ORDER BY(某些唯一键)也不行。
即使您有一个跨越选择和更新的交易(如果它们无论如何都出现在单独的页面上,这是不可能的)
下进行。