Så sant, men det funkar ändå inte...
Loopa ut hela "sökvägen"
28 svar · 979 visningar · startad av learn · sida 2 av 2
Frågan, av learn
Kommer inte på hur jag ska göra för att få sökvägen utskriven enligt nedan. Tabell: ID | Tillhör | Namn ------------------------ 1 | 0 | Test 2 | 1 | Test2 3 | 2 | Test3 Är aktuell sidas id = 1 ska följande skrivas ut: Test Är aktuell sidas id = 2 ska följande skrivas ut: Test > Test2 Är aktuell sidas id = 3 ska följande skrivas
Läs frågan i sin helhet →1. Tidigare hette kolumnen `ID`, nu använder du `id`. Vilket är rätt ?
2. Du hämtar dina id från tabellen `sidor`. Väljer ut de som ska tas bort, och försöker sedan radera från tabellen `bilder`.
1. Spelar ingen roll, egentligen heter de ngt helt annat. Har valt att skriva exemplet så simpelt som möjligt. Jag håller koll på detta så det blir rätt :)
2. Hmm, ja jag vill ju radera alla bilder som ligger på den aktuella sidan eller på någon av de sidor som tillhör den aktuella sidan....
Fungerar koden för att räkna ut summan av storleken på bilderna på dessa sidor, bör den med ändrad SQL-fråga även fungera för att ta bort bilderna.
Nej den fungerar inte heller, har inte brytt mig om den då det inte längre är aktuellt...
Problemet ligger väl i att "$path_to_delete" blir 0 i while-loopen, eftersom den första sidan tillhör 0... Här ska ju egentligen "nästa" sidas id hämtas...
Du går inifrån och ut.
Har du en $path_to_delete vars "tillhör" har värdet 0 (noll) så är det bara en att hämta, om du ska gå efter samma princip.
Sedan är det en annan sak om det är samma princip du ska använda.
Ska du ta bort alla bilder som ligger under så blir det en annan kod.
Ja det är ju på undersidorna bilderna skall tas bort... Kanske va lite otydlig, sorry.
Testa då med:
function get_idlist (&$sidor, $id)
{
$id_list = array();
foreach ($sidor as $key => $val) {
if ($val == $id) {
$id_list[] = $key;
$id_list = array_merge($id_list, get_idlist($sidor, $key));
}
}
return $id_list;
}
// Börjar med att hämta alla sidor
$query = mysql_query("SELECT id, tillhör FROM sidor");
$sidor = array();
// Sparar sidorna i en array
while ($list = mysql_fetch_assoc($query)) {
$sidor[$list['id']] = $list['tillhör'];
}
$path_to_delete = $id;
$path = get_idlist($sidor, $path_to_delete);
// Och om du ska ha med det ursprungliga id
array_unshift($path, $path_to_delete);
Perfekt, har nu fått det att funka! Tack så mkt :birp (y)
En sak bara, för att få detta att funka:
// Radera alla bilderna på de sidor som tagits fram
$query = mysql_query("DELETE FROM bilder WHERE sidID IN ($path)");
Krävdes det att jag först körde följande på arrayen:
$path = implode(",", $path);
För dem som inte visste det :)
