---
title: "Loopa ut hela \"sökvägen\""
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/142679-loopa-ut-hela-sökvägen"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "learn"
published: "2006-02-18T16:05:13.000Z"
updated: "2006-02-23T16:20:48.000Z"
replies: 28
views: 988
page: 1
pages: 2
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/php/142679-loopa-ut-hela-sökvägen"
---

# Loopa ut hela "sökvägen"

_Sida 1 av 2._

## #1 — learn, 2006-02-18T16:05Z

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

```
Test > Test2 > Test3
```

Permalänk: https://www.webforum.nu/p/142679

## #2 — learn, 2006-02-19T10:06Z

Någon som har pejl på detta?

(PHP och MySQL)

Permalänk: https://www.webforum.nu/p/1769582

## #3 — sl0k, 2006-02-19T10:36Z

testa.. 

```php
<?php
$sql = "SELECT Namn FROM tabell WHERE id>='$pageId'";
$res = mysql_query($sql) or die(mysql_error());
$laggTill = "";
while ($svar = mysql_fetch_assoc($res)) {
  echo $laggTill . $svar['Namn'];
  $laggTill = " > ";
}

?>
```

Permalänk: https://www.webforum.nu/p/1769588

## #4 — Matte, 2006-02-19T11:05Z

Annars borde det gå att göra något i stil med:

```php
// $id = aktuell sida

$result = "SELECT ID, Tillhör, Namn FROM tabell";

$list = array();
while ($row = mysql_fetch_assoc($result)) {
   $list[$row['id']] = array('parent'=>$row['Tillhör'], 'text'=>$row['Namn']);
}

$path = array();
$path_id = $id;

if (array_key_exists($path_id, $list)) {

   $path[] = $list[$path_id]['text'];
   
   while ($list[$path_id]['parent'] != 0) {
      $path_id = $list[$path_id]['parent'];
      $path[] = $list[$path_id]['text'];
   }

}

// Och så din utskrift
$path = implode(" > ", array_reverse($path));
```

Permalänk: https://www.webforum.nu/p/1769600

## #5 — learn, 2006-02-19T12:38Z

Matte
Jag får det inte att funka... ska inte:

```php
$result = "SELECT ID, Tillhör, Namn FROM tabell";
```

vara:

```php
$result  = mysql_query("SELECT folderId, inFolderId, name FROM folder");
```

?

Visserligen funkar det ändå inte...

Permalänk: https://www.webforum.nu/p/1769629

## #6 — sl0k, 2006-02-19T12:50Z

Felmeddelanden ? Vad händer ? ingenting ? får du nån utskrift överhuvudtaget ? 

testa att använda 

```php
$result = mysql_query("SELECT folderId, inFolderId, name FROM folder") or die(mysql_error());
```

Permalänk: https://www.webforum.nu/p/1769632

## #7 — Matte, 2006-02-19T12:50Z

Jodå, det ska det vara :)

Ändra till:

```php
$result = mysql_query("SELECT ID, Tillhör, Namn FROM tabell)"; 

$list = array(); 
while ($row = mysql_fetch_assoc($result)) { 
   $list[$row['ID']] = array('parent'=>$row['Tillhör'], 'text'=>$row['Namn']); 
}
```

Index ska ju vara 'ID' istället för 'id'.

Permalänk: https://www.webforum.nu/p/1769633

## #8 — learn, 2006-02-19T12:52Z

Smooooth

Permalänk: https://www.webforum.nu/p/1769634

## #9 — learn, 2006-02-19T12:59Z

Gjorde så här för att kunna "stega" omkring bland sidorna:

```php
   
$list[$dir['ID']] = array('parent'=>$dir['Tillhör'], 'text'=> "<a href='?go=".$dir['ID']."'>".$dir['Namn']."</a>");
```

Kan jag kanske skriva det lite snyggare..? :)

Permalänk: https://www.webforum.nu/p/1769641

## #10 — Matte, 2006-02-19T13:20Z

Om det är så mycket snyggare vet jag inte :)
Men du kan alltid göra så här:

```php
// $id = aktuell sida 

function make_link($id, $text)
{
   return "<a href='?go=$id'>$text</a>";
}

$result = mysql_query("SELECT ID, Tillhör, Namn FROM tabell)"; 

$list = array(); 
while ($row = mysql_fetch_assoc($result)) { 
   $list[$row['ID']] = array('parent'=>$row['Tillhör'], 'text'=>$row['Namn']); 
}

$path = array(); 
$path_id = $id; 

if (array_key_exists($path_id, $list)) { 

   $path[] = make_link($path_id, $list[$path_id]['text']);
    
   while ($list[$path_id]['parent'] != 0) { 
      $path_id = $list[$path_id]['parent']; 
      $path[] = make_link($path_id, $list[$path_id]['text']); 
   } 

} 

// Och så din utskrift 
$path = implode(" > ", array_reverse($path));
```

Permalänk: https://www.webforum.nu/p/1769645

## #11 — learn, 2006-02-19T13:30Z

Jo, lite snyggare var det ju.

Kan passa på att fråga:

Jag vill räkna ut en sidas totala bildstorlek. Bilderna finns sparade i databasen.

Bildtabellen:

```
ID  |  SidID  |  Namn |  Storlek
--------------------------------
1   |   0      |  Bild1  |  100
2   |   1      |  Bild2  |  150
3   |   2      |  Bild3  |  210
```

SidID är den sida bilden tillhör och Storlek är bilden storlek.

Hur gör jag för att räkna ut en given sidas totala storlek gällande bilder. Lite klurigt med tanke på att en sida kan ha fler "tillhörande" sidor osv. Hoppas du/ni förstår vad jag menar...

Tack   :bire

Permalänk: https://www.webforum.nu/p/1769648

## #12 — Matte, 2006-02-19T13:38Z

Testa med 

```php
$sql = "SELECT SUM(Storlek) AS total FROM tabell WHERE SidID = $id";
```

där $id är lika med id för sidan.

Permalänk: https://www.webforum.nu/p/1769654

## #13 — learn, 2006-02-19T13:50Z

Fast bilden behöver ju inte tillhöra sidan $id för att räknas med, utan istället en annan sida som i sin tur tillhör $id...   :l

Den totala storleken skall beräknas på **alla**  bilder som ligger på **alla** sidor som tillhör den givna sidan...

Permalänk: https://www.webforum.nu/p/1769657

## #14 — Matte, 2006-02-19T15:19Z

Testa då:

```php
$result = mysql_query("SELECT ID, Tillhör FROM tabell)"; 

$list = array(); 
while ($row = mysql_fetch_assoc($result)) { 
   $list[$row['ID']] = $row['Tillhör']; 
} 

$path = array(0); 
$path_id = $id; 

if (array_key_exists($path_id, $list)) { 

   $path[] = $path_id;
     
   while ($list[$path_id]['parent'] != 0) { 
      $path_id = $list[$path_id]; 
      $path[] = $path_id; 
   } 

}

$path = implode(", ", $path);

$sql = "SELECT SUM(Storlek) FROM tabell WHERE SidID IN ($path)";
$result = mysql_query($sql);

$summa = mysql_result($result, 0);
```

Om jag förstod dig rätt :)

Permalänk: https://www.webforum.nu/p/1769678

## #15 — learn, 2006-02-20T09:02Z

> **Matte skrev:**
>
> $result = mysql_query("SELECT ID, Tillhör FROM tabell)";

Ska vara:

```
$result = mysql_query("SELECT ID, Tillhör FROM tabell");
```

  :) 

Funkar inte riktigt, vart kommer "\['parent'\]" in i bilden...?

Permalänk: https://www.webforum.nu/p/1769813

## #16 — Matte, 2006-02-20T09:32Z

> **learn skrev:**
>
> Funkar inte riktigt, vart kommer "\['parent'\]" in i bilden...?

Lite klipp/klistra-skräp :)

Ändra till

```php
   while ($list[$path_id] != 0) {
      $path_id = $list[$path_id];
      $path[] = $path_id;
   }
```

Permalänk: https://www.webforum.nu/p/1769825

## #17 — learn, 2006-02-22T16:18Z

Kanon!

Om jag vill ha en funktion som tar borta alla bilder på en viss sida (och dess tillhörande sidor), hur ska jag göra?? Antar att det blir ngt liknande, men jag lyckas inte riktigt... :)

Permalänk: https://www.webforum.nu/p/1770678

## #18 — Matte, 2006-02-22T18:35Z

Inte för att jag förstår varför du skulle plocka bort alla bilder för en hel sökväg, men principen är densamma som för när du räknar ut summan av bildstorleken.

Ändra bara

```php
$sql = "SELECT SUM(Storlek) FROM tabell WHERE SidID IN ($path)";
```

till

```php
$sql = "DELETE FROM tabell WHERE SidID IN ($path)";
```

Permalänk: https://www.webforum.nu/p/1770733

## #19 — learn, 2006-02-23T10:48Z

Detta borde ju isf funka, men det gör det inte. Här hämtas bara första tillhörande sidan... While-loopen körs inte alls.   :q 

```php
// Börjar med att hämta alla sidor
$query = mysql_query("SELECT id, tillhör FROM sidor");
	
$list = array();

// Sparar sidorna i en array
while ($list = mysql_fetch_assoc($query)) {
    $sidor[$list['id']] = $list['tillhör'];
}
	
$path = array();
$path_to_delete_in = $id; // Aktuell sida som skall raderas ifrån

// Kontrollerar om det finns någon tillhörande sida
if (array_key_exists($path_to_delete, $sidor)) {

    $path[] = $path_to_delete;

    // Sålänge sidan inte tillhör sidan 0 
    while ($sidor[$path_to_delete] != 0) {
        $path_to_delete = $sidor[$path_to_delete];
        $path[] = $path_to_delete;
    }
} 
	
// Radera alla bilderna på de sidor som tagits fram
$query = mysql_query("DELETE FROM bilder WHERE sidID IN ($path)");
```

Permalänk: https://www.webforum.nu/p/1770916

## #20 — Matte, 2006-02-23T12:23Z

Till att börja med kan du ändra

```php
$path_to_delete_in = $id; // Aktuell sida som skall raderas ifrån 

// Till
$path_to_delete = $id; // Aktuell sida som skall raderas ifrån
```

Permalänk: https://www.webforum.nu/p/1770932

---

Tråden på webben: https://www.webforum.nu/amne/php/142679-loopa-ut-hela-sökvägen  
Nästa sida: https://www.webforum.nu/amne/php/142679-loopa-ut-hela-sökvägen/page2.md
