ugrás a tartalomhoz

Több kép törlése egy kattintásból

Toka · 2011. Okt. 6. (Cs), 18.50
Sziasztok.
Egy hirdetés több képet tartalmaz. Egy profilképet és további 5 képet. A profilkép a profilkepek direktóriumban,a többi max 5kép pedig az albumkepek direktóriumba ill a hozzájuk tartozó thumbsba töltődnek fel.
Törlésnél az adatbázis táblázataiból törlődik az adat. Nincs vele semmi probléma. Továbbá a profilkép is törlődik a profilkepek és a profilkepekthumbs direktóriumokból.
A gond az hogy az albumkepek és albumkepekthumbsben ott maradnak a képek,nem törlődnek ki. Foreach-et hasznalok a képek megjelenítéséhez. Úgy gondoltam majd a törlésnél is ezt teszem...Hibás a foreach vagy teljesen mást kellene használnom?


function delete_hirdetes($hirdetes_id) {
         $hirdetes_id = (INT)$hirdetes_id;

         $profil_image_query = mysql_query("SELECT `ext` FROM `hirdetesek` WHERE `hirdetes_id`='$hirdetes_id' AND `user_id`=".$_SESSION['user_id']);
         $profil_image_result = mysql_fetch_assoc($profil_image_query);
         $profil_image_ext = $profil_image_result['ext'];
         unlink('uploads/profilkepek/'.$hirdetes_id.'.'.$profil_image_ext);
         unlink('uploads/profilkepekthumbs/'.$hirdetes_id.'.'.$profil_image_ext);

         $images_query = mysql_query("SELECT `image_id`,`ext` WHERE `hirdetes_id`='$hirdetes_id' AND `user_id`=".$_SESSION['user_id']);
         $images = array();
         while ($images_row = mysql_fetch_assoc($images_query)) {
               $images[] = array(
                                 'id' => $images_row['image_id'],
                                 'ext' => $images_row['ext']
                                 );
         }
                    foreach ($images as $image) {
                            $image_id = $image['image_id'];
                            $image_ext = $image['ext'];
                            unlink('uploads/albumkepek/'.$image_id.'.'.$image_ext);
                            unlink('uploads/albumkepekthumbs/'.$image_id.'.'.$image_ext);
                    }
         mysql_query("DELETE FROM `images` WHERE `hirdetes_id`='$hirdetes_id' AND `user_id`=".$_SESSION['user_id']);
         mysql_query("DELETE FROM `hirdetesek` WHERE `hirdetes_id`='$hirdetes_id' AND `user_id`=".$_SESSION['user_id']);
}
 
1

while

Poetro · 2011. Okt. 6. (Cs), 19.00
Már eleve a while ciklusban is kitörölheted a képeket, felesleges még egy ciklust bevezetni. Én teszteléshez kiíratnám azokat az elérési utakat, amiket megpróbálsz törölni, és leellenőrizném, hogy azok léteznek-e. Ezen kívül az unlink E_WARNING hibaüzenetet dob, ha nem tudja a fájlt törölni, azaz kellene róla értesítést kapnod, ha nem tudja törölni.
2

Poetronak igaza van,

Pepita · 2011. Okt. 6. (Cs), 22.22
annyit tennék hozzá, hogy unlink(xy)===false, ha sikertelen. Én ezt is kiírnám tesztkor, meg egyébként is célszerű élesben is lekezelni.
3

első hiba

Toka · 2011. Okt. 7. (P), 11.38
Feljöttem megnézni a hozzászólásokat és rögtön megakadt a szemem egy hibán.
'id' => $images_row['image_id'];
A foreachben pedig:
$image_id = $image['image_id'];
De sajnos semmi változás...
Töröltem a foreachet és a whileon belül meg is próbáltam törölni,sikertelenül. Hibaüzenetet sosem kapok. Hát akkor most szórakozok egyet az elérési útvonalakkal. Köszönöm az eddigi segítséget
4

Elolvastad?

Poetro · 2011. Okt. 7. (P), 12.27
El is olvastad a hozzászólásokat? Bármi is történik a while ciklusban? Egyáltalán lefut a while? Mondjuk egy SELECT-nek nem árt megadni egy FROM kitételt is.
5

Köszönöm

Toka · 2011. Okt. 7. (P), 12.48
Értem.Nem futott le a while.
Igazából ez egy sulis projekt. Autóhirdetéses oldalt csinálok. Már csak a keresés a hirdetések között hiányzik. Főiskola,fél éves volt a tantargy,szóval hiányosak az ismereteim. A könyvünkben egy kereséses példa van,ami csak egy szó alapján keres,ki lehet választani hol keressen. Összetett keresést szeretnék. A felhasználó kiválaszthatná a tipust,uzemanyagot,szin,felszereltség...,ahogy ez a hirdetés feladásánál történik. Esetleg tudnátok ajánlani egy linket ahol találnék példát összetett keresésre?
6

Használtál

Poetro · 2011. Okt. 7. (P), 14.29
Épp az imént használtál összetett keresést:
SELECT ext FROM hirdetesek WHERE hirdetes_id = 1 AND user_id = 2
Ez egy keresés, és összetett is, mivel több feltétel van. Egyébként pedig érdemes valami adatbázis könyvet megvenned, vagy benézni a fősuli Adatbázisok óráira.
7

Ott a pont!

Toka · 2011. Okt. 8. (Szo), 01.53
Ott a pont!