Mysql,在表单循环中删除行

use*_*027 1 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);

?>
Run Code Online (Sandbox Code Playgroud)

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');
Run Code Online (Sandbox Code Playgroud)

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

Gre*_*ack 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>";
Run Code Online (Sandbox Code Playgroud)

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