/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Hjælp til SSI-menu
Fra : Ib K. Jensen


Dato : 05-05-03 23:56


Som subject siger, ønsker jeg hjælp til at lave en "stor" menu-fil,
til at inkludere på min hp.

Jeg kan sagtens få hovedmenuen frem i filen, index.php, men jeg
mangler at få undermenuerne med.

Løst skitseret:

Hovedpunkt
   undermenu
      indhold

Hovedpunkt

osv.


Spørgsmålet er:
Hvordan får jeg dette kombineret, således at jeg kan gå både forlæns
og baglæns, og tildels sidelæns.

Grundstrukturen findes på www.ikjensen.dk
Denne menu er dog lavet i html.

--
Med venlig hilsen / Kind regards / Mit freundlichen Grüßen
Ib K. Jensen
www.ikjensen.dk

 
 
Sune Fibaek (06-05-2003)
Kommentar
Fra : Sune Fibaek


Dato : 06-05-03 14:01

On Tue, 06 May 2003 00:55:47 +0200, Ib K. Jensen wrote:


> Spørgsmålet er:
> Hvordan får jeg dette kombineret, således at jeg kan gå både forlæns og
> baglæns, og tildels sidelæns.

Hvor ligger dit indhold? I en database?

Med en database struktur som følgende:

MENU
--------------------------------
| id | foreregående_id | titel |
--------------------------------

Vil du kunne lave en mneu ved at sige noget i retning af:

function vis_indhold($id) {
$indehold=mysql_query("select titel from menu where id=$id");
$indehold=mysql_fetch_array($indhold);
print $indhold;
}

$menu_array=mysql_query("select id,titel from menu where
forregående_id=''"); // henter de menupunkter som ikke har et overliggende
niveau
while($menu_punkt=mysql_fetch_array($menu_array)) {
if(empty($menu_punkt[forregående_id])) {
print 'øverste niveau i menuen'; // kunne jo passende være et link
til at folde menuen mere ud ved at sende en værdi i variablen
$parent=forregående _id
}
if(isset($parent)) {
$under_menu=mysql_query("select id,forregående_id,titel from menu
where forregående_id=$menu[id]"); // henter de mneupunkter som har en
'parent' med det aktuelle id
while($under_menu_punkt=mysql_fetch_array($under_punkt)) {
vis_indhold($under_menu[id]); // henter indholdet af et givet
mneupunkt
}
}
}

Ovenstående er løst skitseret og sikkert fyldt med fejl. Ideen burde dog
være til at forstå: for hvert menupunkt er der et højere niveau (ellers
er det det højeste niveau) og dermed ved vi hvor i hierarkiet
underpunktet er placeret.

Det er en lidt tung måde at gøre tingene på, men det virker nogenlunde
for mindre menuer. Hvis du ikke har mysql (eller en anden database) til
rådighed kan du hente aktuelle arrays fra filnavne som f.eks.:
id_forregåendeid_titel.php - det bliver tungt men kan virke.

>
> Grundstrukturen findes på www.ikjensen.dk Denne menu er dog lavet i
> html.
>

Burde kunne lade sig gøre ved at tilpasse ovenstående.

/Sune


--
Kind regards

Sune Fibaek
[ contact --> http://cv.fibaek.dk | mailto:sune@fibaek.dk ]

Ib K. Jensen (06-05-2003)
Kommentar
Fra : Ib K. Jensen


Dato : 06-05-03 21:02

In article <pan.2003.05.06.15.01.28.420584.2512@fibaek.dk>, Sune
Fibaek says...
> On Tue, 06 May 2003 00:55:47 +0200, Ib K. Jensen wrote:
>
>
> > Spørgsmålet er:
> > Hvordan får jeg dette kombineret, således at jeg kan gå både forlæns og
> > baglæns, og tildels sidelæns.
>
> Hvor ligger dit indhold? I en database?

Ikke endnu, men jeg regner med at det bliver løsningen, da jeg så småt
er ved at konvertere til i første omgang en HTML med PHP, senere når
jeg har fået rigtig fat i PHP, bliver det nok en PHP med HTML.


> Med en database struktur som følgende:
>
> MENU
> --------------------------------
> | id | foreregående_id | titel |
> --------------------------------
>
> Vil du kunne lave en mneu ved at sige noget i retning af:
>
> function vis_indhold($id) {
> $indehold=mysql_query("select titel from menu where id=$id");
> $indehold=mysql_fetch_array($indhold);
> print $indhold;
> }
>
> $menu_array=mysql_query("select id,titel from menu where
> forregående_id=''"); // henter de menupunkter som ikke har et overliggende
> niveau
> while($menu_punkt=mysql_fetch_array($menu_array)) {
> if(empty($menu_punkt[forregående_id])) {
> print 'øverste niveau i menuen'; // kunne jo passende være et link
> til at folde menuen mere ud ved at sende en værdi i variablen
> $parent=forregående _id
> }
> if(isset($parent)) {
> $under_menu=mysql_query("select id,forregående_id,titel from menu
> where forregående_id=$menu[id]"); // henter de mneupunkter som har en
> 'parent' med det aktuelle id
> while($under_menu_punkt=mysql_fetch_array($under_punkt)) {
> vis_indhold($under_menu[id]); // henter indholdet af et givet
> mneupunkt
> }
> }
> }
>

Jeg takker for dit forslag.

Jeg arbejder videre med dit forslag til løsning, og vender tilbage med
opklarende spørgsmål, hvis det går helt i kage :)


--
Med venlig hilsen / Kind regards / Mit freundlichen Grüßen
Ib K. Jensen
www.ikjensen.dk

Sune Fibaek (07-05-2003)
Kommentar
Fra : Sune Fibaek


Dato : 07-05-03 10:21

On Tue, 06 May 2003 22:02:23 +0200, Ib K. Jensen wrote:

>> Hvor ligger dit indhold? I en database?
>
> Ikke endnu, men jeg regner med at det bliver løsningen, da jeg så småt
> er ved at konvertere til i første omgang en HTML med PHP, senere når jeg
> har fået rigtig fat i PHP, bliver det nok en PHP med HTML.

Som beskrevet andetsteds vil nedenstående - med et par modifikationer -
kunne bruges uden en egentlig database, men med smart navngivning af rene
tekstfiler. Det er selvfølgeligt nemmere og mere skalerbart med en
database (jeg kan forstille mig at opdatering/vedligeholdelse af 50-100+
tekstfiler bliver lidt kedeligt i længden...)

>>
> Jeg takker for dit forslag.
>
> Jeg arbejder videre med dit forslag til løsning, og vender tilbage med
> opklarende spørgsmål, hvis det går helt i kage :)

Gør det :)

>
>

/Sune

--
Kind regards

Sune Fibaek
[ contact --> http://cv.fibaek.dk | mailto:sune@fibaek.dk ]

Søg
Reklame
Statistik
Spørgsmål : 177503
Tips : 31968
Nyheder : 719565
Indlæg : 6408540
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste