Php 使用多个提交按钮删除和修改

Php 使用多个提交按钮删除和修改,php,Php,我有一个问题,我需要能够使用复选框来删除和修改mysql数据库中的数据 使用多个提交按钮根据用户在文本框中键入的内容插入数据、根据选中的复选框删除数据和根据选中的复选框修改数据的最有效方式是什么 以下是我目前掌握的代码: <?php $host = "localhost"; $user = "root"; $pass = ""; $dbName = "ticket_history"; $table_name = "ticket_history

我有一个问题,我需要能够使用复选框来删除和修改mysql数据库中的数据

使用多个提交按钮根据用户在文本框中键入的内容插入数据、根据选中的复选框删除数据和根据选中的复选框修改数据的最有效方式是什么

以下是我目前掌握的代码:

 <?php 
$host       = "localhost";
$user       = "root";
$pass       = "";
$dbName     = "ticket_history";
$table_name = "ticket_history";

################ Connect to the Database and SELECT DATA ####################################
$conn = mysql_connect($host, $user, $pass) or die ("Unable to connect");
mysql_select_db($dbName);
$query = "SELECT Auto,Date,Ticket_Number,Description,Result FROM $table_name";
$result = mysql_query($query);
$count=mysql_num_rows($result);
#############################################################################################
?>
<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>
<table width=50%>
    <form method="post">
        <table width border='0'>
            <tr><td> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Date:<input type="text" name="date"/></td>
            <td>Ticket #:<input type="text" name="ticket"/></td></tr>
            <table>
                <tr><td>Description:<TEXTAREA COLS=50 name="description"></TEXTAREA></td></tr>
                <tr><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Result     :<TEXTAREA COLS=50 name="result"></TEXTAREA></td></tr>
            </table>
            <tr><td><input type="submit" name="create" value="Add"/></td></tr>
            <tr><td><input type="submit" name="delete" value="Delete"/></td></tr>
            <tr><td><input type="submit" name="modify" value="Modify"/></td></tr>
        </table>    
</table>

<?php
print "<table width=80% border=1>\n"; 
$cols = 0; 
while ($get_info = mysql_fetch_assoc($result)){ 
$id = $get_info['Auto'];
if($cols == 0) 
{ 
  $cols = 1; 
  print "<tr>";
  print "<th>Select</th>";  
  foreach($get_info as $col => $value) 
  { 
    print "<th>$col</th>"; 
  } 
  print "<tr>\n"; 
} 
print "<tr>\n"; 
print "<td><input type='checkbox' name='selected[]' id='checkbox[]' value=$id></td>";
foreach ($get_info as $field) 
print "\t<td align='center'><font face=arial size=1/>$field</font></td>\n"; 
print "</tr>\n"; 
} 
print "</table>\n"; 

if (isset($_POST['create'])) {
    $query_insert = "INSERT INTO ticket_history (Date, Ticket_Number, Description, Result) 
                 VALUES ('$_POST[date]', '$_POST[ticket]', '$_POST[description]', '$_POST[result]')";
$result_insert = mysql_query($query_insert);
if ($result_insert) {
echo "win";
}
else {
echo "fail";
}

}
elseif (isset($_POST['delete'])) {
    $ids = array();
foreach($_POST['selected'] as $selected) {
    if (ctype_digit($selected)) {
        $ids[] = $selected;
    }
    else {
        die('invalid input');
    }
$sql_delete = sprintf('DELETE FROM ticket_history WHERE Auto IN (%s)', 
    implode(',', $ids));

$result_delete = mysql_query($sql_delete);
}
if ($result_delete) {
echo $result_delete;
}
else {
echo "fail";
}
}
elseif (isset($_POST['modify'])) {
    header('Location: modify_ticket.php');
}



mysql_close($conn);
?>
</form>

</BODY>
</HTML>

Insert.php
<?php
$host       = "localhost";
$user       = "root";
$pass       = "";
$dbName     = "ticket_history";
$table_name = "ticket_history";

$conn = mysql_connect($host, $user, $pass) or die ("Unable to connect");
mysql_select_db($dbName);


$query_insert = "INSERT INTO ticket_history (Date, Ticket_Number, Description, Result) 
                 VALUES ('$_POST[date]', '$_POST[ticket]', '$_POST[description]', '$_POST[result]')";
$result_insert = mysql_query($query_insert);
if ($result_insert) {
echo "win";
}
else {
echo "fail";
}
 #header( 'Location: ticket_history.php' ); 
?>



Delete.php

<?php
$host       = "localhost";
$user       = "root";
$pass       = "";
$dbName     = "ticket_history";
$table_name = "ticket_history";

################ Connect to the Database and SELECT DATA ####################################
$conn = mysql_connect($host, $user, $pass) or die ("Unable to connect");
mysql_select_db($dbName);
$query = "SELECT Date,Ticket_Number,Description,Result FROM $table_name";
$result = mysql_query($query);
$count=mysql_num_rows($result);
#####################################

$ids = array();
foreach($_POST['selected'] as $selected) {
    if (ctype_digit($selected)) {
        $ids[] = $selected;
    }
    else {
        die('invalid input');
    }
$sql = sprintf('DELETE FROM ticket_history WHERE Auto IN (%s)', 
    implode(',', $ids));

$result = mysql_query($sql);
}

 header( 'Location: ticket_history.php' ); 

?>

日期:
门票:
说明:
结果:

我会将插入和删除代码放在主文件的顶部,而不是放在文件中。最简单的方法是将表单提交给它自己,并根据单击的submit按钮运行代码块

if($_POST['create']){
  // insert code
}
elseif($_POST['delete']){
  // delete code
}
继续if/else/elseif的逻辑来处理所有情况。我觉得这是完成你想做的事情的最简单的方法

编辑:
不确定,但似乎您正在处理HTML代码之后的$_POST['create']等。在html呈现之前,甚至在查询获取要显示的记录之前,您应该始终进行此类处理,这样get查询将始终显示最新结果。

当您使用多个提交按钮时,您可以使用PHP确定按下了哪个按钮。基于此,您可以让应用程序对数据执行不同的操作

不清楚多个按钮想要实现什么。也许你可以提供更多的细节

[编辑]

仔细查看您的代码,很明显,它正迅速成为维护的噩梦。即使你的应用程序很小,而且你不想使用MVC模式编码,我仍然建议你使用类,并将表示与应用程序逻辑数据访问分开。这样,维护应用程序(修复bug)和进行更改就容易多了

如果您构建的不仅仅是一个简单的脚本,我建议您使用一个优秀的PHP框架:

  • 还有更多:

另一种方法是提交按钮的名称相同

因此:


将删除和插入代码置于选择上方,以便在显示数据之前完成所需的更新删除

<input type="submit" name="submit" value="Delete" />
<input type="submit" name="submit" value="Edit" />
switch(strtolower($_POST['submit'])){
    case "delete":
    // delete logic
    break;

    case "edit":
    // edit logic
    break;
}
<?php 
$host       = "localhost";
$user       = "root";
$pass       = "";
$dbName     = "ticket_history";
$table_name = "ticket_history";


################ Connect to the Database and SELECT DATA ####################################
$conn = mysql_connect($host, $user, $pass) or die ("Unable to connect");
mysql_select_db($dbName);
$query = "SELECT Auto,Date,Ticket_Number,Description,Result FROM $table_name";
$result = mysql_query($query);
$count=mysql_num_rows($result);
#############################################################################################

if (isset($_POST['create'])) {
    $query_insert = "INSERT INTO ticket_history (Date, Ticket_Number, Description, Result) 
                     VALUES ('$_POST[date]', '$_POST[ticket]', '$_POST[description]', '$_POST[result]')";
    $result_insert = mysql_query($query_insert);
    if ($result_insert) {
        echo "win";
    }
    else {
        echo "fail";
    }

}
elseif (isset($_POST['delete'])) {
    $ids = array();
    foreach($_POST['selected'] as $selected) {
        if (ctype_digit($selected)) {
            $ids[] = $selected;
        }
        else {
            die('invalid input');
        }
    $sql_delete = sprintf('DELETE FROM ticket_history WHERE Auto IN (%s)', 
    implode(',', $ids));

    $result_delete = mysql_query($sql_delete);
    }
        if ($result_delete) {
            echo $result_delete;
        }
        else {
            echo "fail";
        }
}
elseif (isset($_POST['modify'])) {
    header('Location: modify_ticket.php');
}


?>
<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>
<table width=50%>
    <form method="post">
        <table width border='0'>
            <tr><td> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Date:<input type="text" name="date"/></td>
            <td>Ticket #:<input type="text" name="ticket"/></td></tr>
            <table>
                <tr><td>Description:<TEXTAREA COLS=50 name="description"></TEXTAREA></td></tr>
                <tr><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Result     :<TEXTAREA COLS=50 name="result"></TEXTAREA></td></tr>
            </table>
            <tr><td><input type="submit" name="create" value="Add"/></td></tr>
            <tr><td><input type="submit" name="delete" value="Delete"/></td></tr>
            <tr><td><input type="submit" name="modify" value="Modify"/></td></tr>
        </table>    
</table>