Avatar billede sesam Nybegynder
29. december 2004 - 16:13 Der er 9 kommentarer og
1 løsning

SOL problemer

Hej exp'rter
Jeg har har bygget en tabel op i MySQL der ser således ud
...............................................................
page_id  parent_id  page_name
  1        0          side 1
  2        1          side 2
  3        0          side 3
  4        3          side 4
  5        2          side 5
  6        5          side 6

Hvor dan "læser" jeg den med SQL så mit resultat bliver:
side 1      side 3
  side2      side 4
    side 5
      side 6

OSV....
Avatar billede sesam Nybegynder
29. december 2004 - 17:08 #1
Ingen ide'er???
Avatar billede coderdk Praktikant
29. december 2004 - 18:03 #2
Jeg er ikke helt sikker på hvordan du vil præsentere data...
Avatar billede coderdk Praktikant
29. december 2004 - 18:04 #3
For det ligner jo en alm rekursiv funktion, men så plejer man at præsentere dem sådan:

side 1
..side 2
....side 5
......side 6
side 3
..side 4
Avatar billede sesam Nybegynder
29. december 2004 - 18:05 #4
Ja, det er det jeg mener, så du har svaret???
Avatar billede coderdk Praktikant
29. december 2004 - 18:09 #5
hehe faktisk fandt jeg lige en måde at vise det som du skrev:

<?php

    $con = mysql_connect( "localhost", "brugernavn", "password" );
    mysql_select_db( "database", $con );
   
    $results = array();

    function getStruct( $parent, $indent = 0 )
    {
        global $results;
        $sql = "
            SELECT
                page_id
                ,page_name
            FROM
                page
            WHERE
                parent_id = $parent
            ";
        $res = mysql_query( $sql );
        if ( mysql_num_rows( $res ) > 0 )
        {
            while ( $row = mysql_fetch_assoc( $res ) )
            {
                $results[] = array(
                        "page_name" => $row['page_name']
                        ,"page_id" => $row['page_id']
                        ,"parent_id" => $parent
                        ,"indent" => $indent
                    );
                getStruct( $row['page_id'], $indent + 1 );
            }
            mysql_free_result( $res );
        }
    }

    getStruct( 0 );

    $n = count( $results );

    echo "<table><tr>";
    for ( $i = 0; $i < $n; $i++ )
    {
        $row = $results[ $i ];
        if ( $row['parent_id'] == 0 )
        {
            if ( $i != 0 )
            {
                echo "</td>";
            }
            echo "<td valign='top'>";
        }
        echo str_repeat( "&nbsp;&nbsp;", $row['indent'] );
        echo "$row[page_name]<br>";
    }
    echo "</tr></table>";

?>

Hvis du vil have det som jeg skrev, så udskift den nederste del af koden med:

foreach ( $results as $row )
{
  echo str_repeat( "&nbsp;&nbsp;", $row['indent'] );
  echo "$row[page_name]<br>";
}
Avatar billede sesam Nybegynder
29. december 2004 - 18:20 #6
Merci my friend, det er perfekt...
Avatar billede sesam Nybegynder
29. december 2004 - 18:23 #7
Et sidste spørgsmål?

Er det muligt at få tegnet - , ind så det ser sådan her ud
side 1
-side 2
--side 5
---side 6
side 3
-side 4
Avatar billede coderdk Praktikant
29. december 2004 - 23:57 #8
Ja, erstat "&nbsp;&nbsp;" med "-" :)
Avatar billede sesam Nybegynder
30. december 2004 - 12:39 #9
Hej coderdk
Jeg har et problem håber du vil hjælpe...

Jeg har tre tabeller en der hedder

tbl_language
l_id  l_name 
1      Dansk
2      English

tbl_menu

m_id    m_name    l_id
1      Forside      1
2      produkter    1
3      Home        2
...    ...

Og til  sidst

tbl_pages
page_id  parent_id  page_name  menu_id
  1        0          side 1      2
  2        1          side 2      2
  3        0          side 3      3
  4        3          side 4      3
  5        2          side 5      2
  6        5          side 6      2

Er det helt umuligt at inkorporere din kode så det vil virke med de tre tabeller her...
Avatar billede coderdk Praktikant
30. december 2004 - 16:24 #10
Det skulle jeg mene, men præcist hvordan skal det fungere?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester