从表单和复选框更新sql数据

时间:2012-07-13 22:03:49

标签: php html sql

我创建了一个更新sql列中数据的表单,到目前为止一切都很好。 我遇到的问题是我想选择要更新的列,带复选框。 所以我想将两个文件归类为电影,我只需勾选复选框并在表格中写下电影。

但不仅如此。每列都已连接到一个复选框,但我使用此复选框和删除查询,因此我可以删除多行。

所以我的问题更像是,如何将这两个功能与“一个”复选框结合起来。

这是我的一些代码。

这是我的表,带有sql输出,并带有删除按钮

<?php  
$files = mysql_query("SELECT * FROM files WHERE `user_name` = '{$_SESSION['username']}' ORDER BY `file_time` DESC LIMIT $start, $per_page")
    or die(mysql_error()); 
    ?>
<table id="table-3">
 <thead>
        <tr>
            <th scope="col">Upload User</th>
            <th scope="col">Filename</th>
            <th scope="col">Upload date</th>
             <th scope="col">IP adress</th>
             <th scope="col">Category</th>
            <th scope="col">Delete</th>
        </tr>
    </thead>
<?php
while (($row = mysql_fetch_assoc( $files )) !==false)
{ 
echo "<tr>"; 
echo "<td>".$row['user_name'] . "</td> ";
?>
<td class="download"> <a href="download.php?file_id=<?php echo $row ['file_id']; ?>"> <?php echo $row['file_name']; ?></a></td>
<?php echo "<td>".$row['file_time'] . "</td> "; ?>
<?php echo "<td>".$row['file_ip'] . "</td> "; ?>
<?php echo "<td>".$row['category'] . "</td> "; ?>
<td>

<form action="delete.php" method="post">
<input type="checkbox" name="done[]" id="<?php echo $row['file_id'] ?>" value="<?php echo $row['file_id'] ?>">

</td>

<?php 
}
    echo "</tr>";
    echo "</table>"; 
 ?>
<input type ="submit" value ="Delete">
</form> 

此表单是具有更新功能的表单

 <form action="function.php" method="post">
category: <input type="text" name="category" />
<input type="submit" />
</form>

和 function.php

include('core/inc/init.inc.php');

    if(isset($_POST['category'])){
    $category = $_POST['category'];
    mysql_query("UPDATE files SET category='$category'
    /*WHERE category='genom' */ ");

    header("Location: profile.php?uid=" . $_SESSION['uid']);
    }else{
    header("Location: profile.php?uid=" . $_SESSION['uid']);
    };

如何组合这两个功能?

1 个答案:

答案 0 :(得分:1)

您可以在同一表单中使用多个提交按钮。所以你可以这样做:

<?php  
    $files = mysql_query("SELECT * FROM files WHERE `user_name` = '{$_SESSION['username']}' ORDER BY `file_time` DESC LIMIT $start, $per_page")
    or die(mysql_error()); 
?>
<form action="updateordelete.php" method="post">
    <table id="table-3">
        <thead>
            <tr>
                <th scope="col">Upload User</th>
                <th scope="col">Filename</th>
                <th scope="col">Upload date</th>
                <th scope="col">IP adress</th>
                <th scope="col">Category</th>
                <th scope="col">Delete</th>
            </tr>
        </thead>
        <?php
        while (($row = mysql_fetch_assoc( $files )) !==false)
        {
        ?>
        <tr>
            <td> <?php echo $row['user_name']; ?></td>
            <td class="download"> <a href="download.php?file_id=<?php echo $row ['file_id']; ?>"> <?php echo $row['file_name']; ?></a></td>
            <td><input type="text" name="file_time[<?php echo $row ['file_id']; ?>]" value="<?php echo $row['file_time']; ?>" /></td>
            <td><input type="text" name="file_ip[<?php echo $row ['file_id']; ?>]" value="<?php echo $row['file_ip']; ?>" /></td>
            <td><input type="text" name="file_category[<?php echo $row ['file_id']; ?>]" value="<?php echo $row['category']; ?>" /></td>
            <td><input type="checkbox" name="done[]" id="<?php echo $row['file_id'] ?>" value="<?php echo $row['file_id'] ?>"></td>
        </tr>
        <?php } ?>
    </table>
    <input type ="submit" name="submittype" value = "Update">
    <input type ="submit" name="submittype" value = "Delete">
</form> 

然后,在updateordelete.php中:

if($_POST['submittype']=="Delete"){
   (do delete code...)
}elseif($_POST['submittype']=="Update"){
   (do update code...)
}

对于每个值,您可以使用$ _POST ['file_category']访问它们。例如:

$file_categories=$_POST['file_category'];
foreach($_POST['done'] as $file_id){
    echo $file_categories[$file_id];
}