Avatar billede ossian Nybegynder
22. november 2003 - 21:39 Der er 12 kommentarer og
1 løsning

Vise parent side til en underside

Hej,


Jeg har en tabel der ser sådan her ud:

id    parent    navn    indhold
1    0    side1    <p>indholdstekst for side 1</p>
2    0    side2    <p>indholdstekst for side 2</p>
3    0    side3    <p>indholdstekst for side 3</p>
4    0    side4    <p>indholdstekst for side 4</p>
5    0    side5    <p>indholdstekst for side 5</p>
16    3    underside 1    <p>indholdstekst for underside 1</p>

Som det kan ses er det 5 "hovedsider" og en enkelt underside som er "barn" til "hovedside" 3.

Jeg vil gerne lave et udtræk der viser alle sider med på følgende måde:

Sidenavn      Type     
Side 1        Hovedside
Side 2        Hovedside
Side 3        Hovedside
Underside 1    Underside til Side 3
Side 4        Hovedside
Side 5        Hovedside


Håber idéen er forståelig.. Hvordan skal det gøres??
Avatar billede tipsen Nybegynder
22. november 2003 - 22:12 #1
Cirka sådan her:

$contentarray = array();
$res = mysql_query(SELECT id, parent, navn, indhold);
while($row = mysql_fetch_row($res)) {
  $contentarray[$row[0]] = array('parent' => $row[1], 'name' => '$row[2], 'content' => $row[3]);
}
mysql_free_result($res);
foreach($contentarray as $item) {
  if(array_key_exists($item['parent'], $contentarray)) {
      echo $item['name'] . ' - ' . 'Underside til ' . $contentarray[$item['parent']]['name'] . '<br>';
  } else {
      echo $item['name'] . ' - ' . 'Hovedside<br>';
  }
}
unset($contentarray);
Avatar billede tipsen Nybegynder
22. november 2003 - 22:14 #2
ups... - troede jeg var i MySQL kategorien... - det kan være du kan forstå det alligevel og hvis ikke er det bare ærgeligt :-) (Teknikken vil nok være det samme langt hen af vejen)
Avatar billede ossian Nybegynder
22. november 2003 - 22:17 #3
damn..forstår mig ikke på mysql..endnu.. det så ellers godt ud..
Avatar billede dk_akj Nybegynder
22. november 2003 - 22:18 #4
Her er et eksempel i access2000

http://www.eybye-kjaer.dk/uploads/files/db4.mdb

q1 og q2 er hlælpeviews

det ønskede resultat er i q3

//Akj
Avatar billede ossian Nybegynder
22. november 2003 - 22:20 #5
Akj> Jeg kan se hvad du mener.. dog er min løsning lavet så både hoved- og undersider ligger i samme tabel.. og jeg savner asp koden til udtrækket..
Avatar billede dk_akj Nybegynder
22. november 2003 - 22:22 #6
Det er mit også :-)

q1 og q2 tager data fra table1 som er opbygget som du viser herover.
q3 kombinerer q1 og q2

udtrækket er så conn.execute("select * from q3")


//akj
Avatar billede ossian Nybegynder
22. november 2003 - 22:26 #7
ok...sorry..det er mig der er blank.. det ser rigtig godt ud!!!! :-) ..dog er der lidt ting jeg er i tvivl om:

Skal jeg lave de samme Queries som dig i min db? Og hvad betyder det felt der hedder "r"?


:)
Avatar billede dk_akj Nybegynder
22. november 2003 - 22:26 #8
du kan også lave det sådan:

set rs_parent = conn.execute("Select * from tabelnavn where parent = 0 order by navn")

do while not rs_parent.eof
  response.write rs_parent("navn")

  set rs_sub = conn.execute("select * from tabelnavn where parent = " & rs_parent("id"))
  if not rs_sub.eof then
    do while not rs_sub.eof
      response.write " - " & rs_sub("navn")
      rs_sub.movenext
    loop

  end if


  rs_parent.movenext
loop

//akj
Avatar billede dk_akj Nybegynder
22. november 2003 - 22:29 #9
ja, du skal lave 2 queries
r er et computed felt som bruges til at sortere efter
i q1 og q2 ganger jeg hhv parent og id med 10 det tal skal du nok ændre til 100 eller 1000 da det er antallet af sider det kan håndtere, ellers skal du lave det som jeg skrev herover med loops.

//Akj
Avatar billede ossian Nybegynder
22. november 2003 - 22:31 #10
det sidste du foreslog virker!! Fuck det er fedt!! tak for hjælpen..tror jeg er blevet lidt klogere her til aften..

:-)
Avatar billede dk_akj Nybegynder
22. november 2003 - 22:33 #11
Det lyder da godt.

Tak for pts.

//Akj
Avatar billede tipsen Nybegynder
22. november 2003 - 22:44 #12
Vil det ikke være hurtigere at lave ét udtræk og derefter arbejde med dataene i et array - det kan da ikke være hurtigere at lave 1+n (n=antal poster med parent!=0) udtræk fra db'en!?
Avatar billede dk_akj Nybegynder
22. november 2003 - 22:47 #13
tipsen >> Jeg tror ikke forskellen er målbar.
Det hurtigste er nok at lave det med views som i mit uploadede eks.

Om man laver selects af undersider i loopet eller lopper og søger i et array tror jeg giver samme speed.

//akj
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
Kurser inden for grundlæggende programmering

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