0

私のPHPアプリケーションには、大きいサムネイルと小さいサムネイルの3つのサイズの画像がある製品があります。各画像は個別のフォルダに保存されます。

画像-/galleryサムネイル-/gallery/bigthumbs小さなサムネイル-/gallery/ thumbs

各製品には固有のIDがあります。特定の製品のすべての画像のファイル名は同じです。製品の画像へのパスは、関連付けられた製品IDと同じIDでデータベースに保存されています。

各商品には複数の画像を含めることができますが、各商品のパスと画像の名前を保存するデータベースでは、すべての画像が同じID、つまり商品IDで保存されます。

したがって、ID 56の製品のデータベースに2つの画像がある場合、それらの画像は次のように保存されます。

ID-> 56、image1name、bigthumb1name、thumb1name ID-> 56、image2name、bigthumb2name、thumb2name

私がやろうとしているのは、削除される製品に関連するすべての画像を削除することです。私が書いたコードは次のとおりです。

$imagename_query = mysql_query("SELECT image FROM gallery WHERE id='$productid'", $connect);

$imagename_result = mysql_fetch_array($imagename_query);


    foreach($imagename_result as $imagename) {

    $bigimage = "../gallery/$imagename";
    unlink($bigimage);

    $picture = "../gallery/bigthumbs/$imagename";
    unlink($picture);

    $thumb = "../gallery/thumbs/$imagename";
    unlink($thumb);

 }

$gallery_query = mysql_query("DELETE FROM gallery WHERE id='$productid'", $connect); 


$query = mysql_query("DELETE FROM products WHERE ID='$productid'", $connect);

問題は、上記のコードが削除する画像が1つだけであるということです。同じIDを持つ画像の数に違いはありません。

誰かが私がこれを理解するのを手伝ってもらえますか?

前もって感謝します。

4

3 に答える 3

3

この行が問題です

$imagename_result = mysql_fetch_array($imagename_query);

する必要があります

while ($row = mysql_fetch_array($imagename_query))
{
  $bigimage = "../gallery/{$row['image']}";
  unlink($bigimage);
  // etc
}

あなたの場合、それが真実かどうかはわかりません。同じ名前の製品が複数ありますか?

あなたのアプローチは少し危険かもしれません...
あなたは製品IDを埋め込むことによってフォルダパスをユニークにすることができます

そのような

/gallery/{$product_id}/{$product_name}.*
于 2011-09-02T12:45:18.357 に答える
0

より多くの画像を使用する必要があるため、次のようにします。

while ($current_imagename_result = mysql_fetch_array($imagename_query))

それ以外の

$imagename_result = mysql_fetch_array($imagename_query);

$current_imagename_resulその後、yorvarableの代わりにtを使用する必要があります

于 2011-09-02T12:47:34.737 に答える
0

みんな助けてくれてありがとう。私はこれを次の方法で解決することができました:

$imagename_query = mysql_query("SELECT image FROM gallery WHERE id='$productid'", $connect);

    $rows_count = mysql_num_rows($imagename_query);

for($i=0; $i<$rows_count; $i++){

    $id = mysql_result($imagename_query, $i, 'image');

    $bigimage = "../gallery/$id";
    unlink($bigimage);

    $picture = "../gallery/bigthumbs/$id";
    unlink($picture);

    $thumb = "../gallery/thumbs/$id";
    unlink($thumb);
}

これが他の誰かに役立つことを願っています。

于 2011-09-03T14:15:54.960 に答える