2011-06-23 4 views
1

テーブル内のすべてのイメージをそれぞれのタイトルと説明と共に返すシンプルなwhileループをセットアップして、ユーザーがそれぞれのイメージに従って詳細を更新できるようにしました。unlink()でsqlを削除する

画像は、ユーザーがPHPコードごとに画像を削除することを可能にするチェックボックスで返されるファイルには、サーバーから削除されるように、私はページにunlink()機能を組み込むにはどうすればよい

if($_POST['doDelete'] == 'Delete') { 

if(!empty($_POST['u'])) { 
    foreach ($_POST['u'] as $uid) { 
     $id = filter($uid); 
     mysql_query("delete from landscape where id='$id'"); 
    } 
} 
$ret = $_SERVER['PHP_SELF'] . '?'.$_POST['query_str'];; 

header("Location: $ret"); 
exit(); 
} 

+0

mysql_queryの後に 'unlink(foo)'を追加するだけですか? – Dogbert

+0

あなたは本当にあなたのクエリでその変数をエスケープする必要があります... –

+0

@Michael: '$ id = filter($ uid)'はトリックをやっているようですか? – Cyclone

答えて

0

画像はIDに基づいて命名されている場合:

foreach ($_POST['u'] as $uid) { 
    $id = filter($uid); 
    mysql_query("delete from landscape where id='$id'"); 
    unlink('/path/to/images/' . $id); 
} 

は正しくクエリ内またはリンク解除文でそれを使用する前に、$ IDをエスケープするようにしてください。

+0

'unlink'ステートメントの後に'; 'を忘れました – Cyclone

+0

@Cyclone:修正されました。ありがとう。 –

+0

上記のコードで、画像が/ images/landscape /に保存されている場合、リンクを解除する正しいファイル名を認識する方法 - これは指定する必要があります( 'images/landscape/<?php echo $ rrows [ 'imagesrc'];?> '....? ラジオボックスがチェックされている場合は、以下のようになります。 foreach($ _POST ['u']を$ uid){ $ id = filter($ uid); mysql_query( "場所からの削除場所id = '$ id'"); unlink( '/ images/landscape /'。$ id); } 物事を簡単にするならば、上記のようなスニペットとは対照的に私のコード全体を投稿していただければ幸いです ありがとう! – JD2011

-1

サーバーに保存されているファイルはどこですか?それらはどのように保存されますか? unlinkに画像の保存先となるファイルパスを指定してください。

+0

それらはserver/images/landscape/のフォルダに格納されています 私はmysqlにimages/landscape/1.jpgを指すimagesrcフィールドも持っていますので、このフィールドを単にリンク解除するだけでいいです。 ..? 私のばかげて申し訳ありません - データベースにBLOBとして以前に保存されたイメージとして、今日までリンク解除されていないと間違ってすべてを削除したくない!! – JD2011

+0

ええ、そのときはリンクを解除してください。それが動作します。 – Cyclone

+0

この回答はそれほど役に立ちません。それはコメントのようなものです。 – Martin

1

同じようにループにしてUnlink()を使用:ファイルがデータベースから正常に削除された場合にのみ、それがサーバーから削除されますので、私はIfを使用している

foreach ($_POST['u'] as $uid) { 
    $id = filter($uid); 
    if(mysql_query("delete from landscape where id='$id'")){ 
    unlink('/path/to/images/' . $id); 
    } 
} 

。 はまた、あなたが

その後、まず$idにより、データベースからファイルに関する情報を取得し、代わりに

unlink('/path/to/images/' . $file_name); 

を使用したファイルの名前でフォルダに

unlink('/path/to/images/' . $id); 
を、ファイルを移動した場合、それはあなたを助けることを願っています。

+0

IMOこれは受け入れられた答えより良い答えです。 – Martin

+0

'else'節を追加してmysql_error()文を出力することもできます – Martin

関連する問題