2012-07-13 42 views
0

我創建了一個更新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

您可以使用同一表單中的多個提交按鈕。所以,你可以做這樣的事情:

<?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]; 
} 
+0

嘿真棒提示,我在同一個頁面剛剛進入一切:) 但我真的不知道我應該把文本格式,以便值在checkboxed列進入=/ – Dymond 2012-07-13 22:37:59

+1

我更新了我的答案,增加了更多的細節。希望有幫助。 – JoeTomato 2012-07-13 22:58:42

+0

嘿,我剛解決它。 :) 有點不同於你的,但我不能讓你沒有:) – Dymond 2012-07-13 23:02:35