Avatar billede tlunde Nybegynder
25. november 2006 - 19:37 Der er 11 kommentarer og
1 løsning

Flere sider i en side, hvordan?

Hejsa,
Sidder lige og vil gerne lave en simpel side i PHP, med en 5-6 der og har siddet og kigget lidt efter noget inspiration, og faldt så over en side, hvor links i menuen var skrevet på denne måde:

<li class="subnav"><a class="submenulink" href="index.php?zerenity=mig&menu=undertegnede&sub=musik">Musik</a></li>

Det jeg er interesseret i at få forklaret er selve linket?
Den henviser da til en del i selve indexsiden, men hvordan lavet det i PHP??

Nogen der kan hjælpe mig med det?
Avatar billede simplus Nybegynder
25. november 2006 - 19:50 #1
Altså det linket gør er at tildele et par GET værdier ($_GET['værdi'])
Dem kan du senere tjekke på og se hvad de indeholder..
Det link du skrev i dit spm opretter følgene GET værdier:

$_GET['zerenity'] som indeholder "mig"
$_GET['menu'] som indeholder "undertegnede"
$_GET['sub'] som indeholder "musik"

Så kan du med en simpel if sige hvad der skal ske/vises hvis man klikker på et link uden at forlade selve siden:

if ($_GET['sub'] == "musik") {
  //koden her skal udføres hvis man har klikket på et link der indeholder sætningen sub=musik
}
Avatar billede zynzz Praktikant
25. november 2006 - 19:50 #2
Indsæt dette hvor du gerne vil have siderne vist:
<?
if(isset($_GET['s'])){
$sti = $_GET['s'].".php";
if(file_exists($sti))
include $sti;
else
include 'fejl.php';} else
include 'forside.php';
?>

Lav så fx. en fil: musik.php

Så kunne dit link se således ud: ?s=musik
Avatar billede showsource Seniormester
25. november 2006 - 19:52 #3
til zynzz, file_exits() "virker" også for dirs, derfor er is_file() bedre, nu det er en fil der skal findes
Avatar billede tlunde Nybegynder
25. november 2006 - 20:00 #4
simplus --> Jeg kan se på siden, at alle links henviser til index.php, og så bare med 2-3 værdier tilknyttet. Vil det så sige at hele denne hjemmeside er lavet i en enkelt indexfil? I så fald, er det hensigtsmæssigt? Ville da mene af den ene index.php fil vil blive utrolig lang og måske uoverskuelig...
Avatar billede simplus Nybegynder
25. november 2006 - 20:03 #5
Ja det er lige det jeg mener, dog vile jeg mene at de har flere filer som de bare includer i den originale ellers bliver den som du siger ekstrem uoverskuelig.
Du kan simpelt include en fil ved at bruge følgene kode:

<?php
include "filnavn.php"
?>
Avatar billede simplus Nybegynder
25. november 2006 - 20:05 #6
og en supplering til det kunne være at filen også ville blive ufattelig langsom for folk med langsomt internet, så en god løsning er det ikke helt.
Det er også (næsten!) kun folk med mindre hjemmeside der bruger den slags løsninger.
Avatar billede tlunde Nybegynder
25. november 2006 - 20:09 #7
dvs. at hvis jeg har en hjemmeside der fylder 5 sider, så er det nemmeste bare at skrive dette i toppen af indexfilen:

<?
include ("side1.php");
include ("side2.php");
include ("side3.php");
include ("side4.php");
include ("side5.php");
?>
Avatar billede simplus Nybegynder
25. november 2006 - 20:15 #8
Ja, men ikke nødvendigvis i toppen, bare der hvor selve koden skal udføres.
Du skal dog være opmærksom på at siden stadig bliver langsom. Det hjælper dog en del at include filerne, så kan du jo lave en if der bestemmer hvornår de skal vises. Så bliver de ikke vist unødvendigt.

Du kan lave en menu et sted øverst i din fil hvor alle links ser sådan ud fx:
www.sidenavn.dk/index.php?menu=1
www.sidenavn.dk/index.php?menu=2
www.sidenavn.dk/index.php?menu=3
osv.

så når du skal til at vise selve siderne så kan du gøre således:

if ($_GET['menu'] == "1") {
  //vis koden for side 1
}
if ($_GET['menu'] == "2") {
  //vis koden for side 2
}
if ($_GET['menu'] == "3") {
  //vis koden for side 3
}

osv.

Håber du forstår det.
Avatar billede showsource Seniormester
25. november 2006 - 20:16 #9
Et lille ex. mere

<table cellspacing=10><tr>
    <td><?php

$sider = array("forside" => "Forsiden", "kontakt" => "Kontakt til mig", "billeder" => "Feriebilleder", "guestbook" => "Gæstebog");

foreach($sider as $link => $text) {
echo"<a href=\"". $_SERVER["PHP_SELF"] ."?vis=". $link ."\">". htmlentities($text) ."</a>";

    if($text != end($sider)) {
    echo"<br />\r\n";
    }
}

?></td>


    <td><?php
$page = (isset($_GET["vis"]) && isset($sider[$_GET["vis"]]) ? $_GET["vis"] : "forside");
 
    if(is_file($page .".php")) {
        include($page .".php");
    }else{
        echo"Ups, der mangler en fil på serveren";
    }

?></td>

</tr></table>
Avatar billede tlunde Nybegynder
25. november 2006 - 20:17 #10
Okay, tror jeg er ved at forstå det :)
Så indeni hver i-sætning, smider man en include, hvis man vil have den til at læse en anden sides indhold, når den if-sætning køres?
Avatar billede zynzz Praktikant
25. november 2006 - 20:20 #11
Ja, hvis betingelserne bliver overholdt udfører den handlingen og dermed bliver en side inkluderet... .)
Avatar billede simplus Nybegynder
25. november 2006 - 20:22 #12
Ja det er fuldstændig korrekt :-)

Sig til hvis du behøver at vide mere.
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