webForumDet fria alternativet

Loopa ut hela "sökvägen"

PHP

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 →
Medlem sedan jan. 20051 130 inlägg
#21

Så sant, men det funkar ändå inte...

Medlem sedan aug. 20002 975 inlägg
#22

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`.

Medlem sedan jan. 20051 130 inlägg
#23

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....

Medlem sedan aug. 20002 975 inlägg
#24

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.

Medlem sedan jan. 20051 130 inlägg
#25

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...

Medlem sedan aug. 20002 975 inlägg
#26

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.

Medlem sedan jan. 20051 130 inlägg
#27

Ja det är ju på undersidorna bilderna skall tas bort... Kanske va lite otydlig, sorry.

Medlem sedan aug. 20002 975 inlägg
#28

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);
Medlem sedan jan. 20051 130 inlägg
#29

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 :)

265 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
137 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)