2017-04-10 11 views
1

私のデータベースから生徒データを削除するのではなく、リストから削除したいのですが、データベースから永久に削除するようにコーディングしました。私は残したいデータベース内の削除されたデータ

これは私のリストコード

<?php 

    $query="SELECT id,name,fname,phone FROM student"; 
$resultset=$connection->query($query); 

$count=0; 
while($r=$resultset->fetch_assoc()){ 
    $count++; 
echo "<tr><td>".$count."</td><td><a href='#'>".$r["name"]."</a></td><td>".$r["fname"]."</td><td></td><td><td>".$r["phone"]."</td><td><input type='checkbox' name='chb".$count."' value='".$r["id"]."'></td></tr> 
"; 

} 
?> 

を取得し、これはソフト削除と呼ばれる

function std_delete($id){ 
    $connection=new mysqli("localhost","root","","sms"); 

$connection->query("delete from student where id=".$id); 


for ($i=1; $i < 100; $i++) { 
    //echo "chb".$i."<br>"; 
    if(isset($_POST["chb".$i])){ 
    std_delete($_POST["chb".$i]); } 
}} 
+2

の代わりに、それを削除、非アクティブまたは非表示に行を設定し、フラグを付けてcolunnを更新:

あなたのサンプルでは、​​クエリは次のようになり、削除します。 – Qirel

+1

ユーザが何かを削除したいときにカラムを削除しようとしてみてくださいdelete = 1 other wise delete = 0、他のすべてのクエリpassについては削除されました== 0 –

答えて

2

その私の削除機能コードです。 deleteを使用する代わりに、boolean型のactive_ind(アクティブなインジケータ)のような新しい列を追加し、値を削除するためにfalseにします。この方法では、行は永久に削除されません。

レコードを表示すると、active_indがtrueに設定されているレコードが表示されます。新しいレコードを挿入している間は、active_indの値をtrueに設定してください。

$connection->query("update student set active_ind = false where id=".$id); 
+1

なぜこのような隠れた名前を使用しますか? 'deleted'は地獄のように簡単です – user2659982

+0

はカラム名の選択に依存しています:)アクティブなインジケータは一般的なのでより適切で、あなたのレコードがアクティブであるかどうかを示します。それを削除するだけではありません:) –

関連する問題