Mysql,在表单循环中删除行

时间:2012-10-24 18:03:33

标签: php mysql database

我现在不知道我的错误,我的代码如下:

<?php

mysql_set_charset('utf8');
$result = mysql_query("SELECT * FROM obedy ORDER BY datum DESC LIMIT 30");
while ($row = mysql_fetch_array($result, MYSQL_NUM)) 
{
    $time = strtotime( $row[0] );
    $myDate = date( 'd.m.', $time );
    $w_day = date( 'N', $time );
    $ww_day = $w_day-1;
    $the_row= $row[0];

    echo "<p>" . $myDate . "&emsp;";
    echo "<input type='hidden' value='$row[0]' name='tdel'>";
    echo "<input type='text' name='menu1' id='menu1' class='input' value='". $row[1] ."' size='37'/>";
    echo "<input type='text' name='menu2' id='menu2' class='input' value='". $row[2] ."' size='37'/>";
    echo "<input type='text' name='menu3' id='menu3' class='input' value='". $row[3] ."' size='37'/>";
    echo "<input type='submit' formaction='del_menu.php' class='button' value='Smazat' />";
    echo "</p>";                    
}

mysql_free_result($result);

?>

del_menu.php

<?php

$huh = mysql_connect("juxcore.ipagemysql.com", "*", "*") or
die("Could not connect: " . mysql_error());

mysql_select_db("jux_mms");
mysql_set_charset('utf8');

$watta="DELETE FROM obedy WHERE datum = '$_POST[tdel]'";

if (!mysql_query($watta,$huh))
{
    die('Error: ' . mysql_error());
}

header('Location: http://www.juxcore.com/x/vita/menu.php');

问题是,我不知道为什么它会删除最后显示的行,而不是单击的那一行。任何想法如何解决?

1 个答案:

答案 0 :(得分:6)

您应该使用<form>标记:

echo "<form action='del_menu.php' method='post'><p>" . $myDate . "&emsp;";
echo "<input type='hidden' value='".$row[0]."' name='tdel'>";
echo "<input type='text' name='menu1' id='menu1_".$row[0]."' class='input' value='". $row[1] ."' size='37'/>";
echo "<input type='text' name='menu2' id='menu2_".$row[0]."' class='input' value='". $row[2] ."' size='37'/>";
echo "<input type='text' name='menu3' id='menu3_".$row[0]."' class='input' value='". $row[3] ."' size='37'/>";
echo "<input type='submit'  class='button' value='Smazat' />";
echo "</p></form>";

问题是您在一个表单中只能有一个具有相同名称的项目。如果您使用具有相同名称的多个项目,则只会定义最后一个项目。您可以使用多种形式来解决这个问题。