Avatar billede itmouse Nybegynder
23. maj 2011 - 08:58 Der er 10 kommentarer og
1 løsning

Er der en smartere måde at lave sidevisning på? En mere automatisk måde?

Hej - jeg har en hjmmeside hvori nederste php kode virker. Hver gang brugeren trykker på et link som f.eks.:

<a href="index.php?forside"></a>

bliver et andet php dokument, eller for den sags skyld et html dokument vist et sted på siden.

Er der noget jeg kunne være smartere mht. sidevisning og sideskift på min hjemmeside?

Jeg har tænkt på om det er muligt, at php stykket bliver lidt mere generelt, så jeg ikke behøver at skive den nye sides navn hele tiden - men i stedet at den tager alle de filer der slutter med .html eller .php i en bestemt mappe.

  <?php
        if(isset($_GET['forside'])){

    include('forside.php');

        }else if(isset($_GET['kalender'])){

    include('kalender.php');
   
        }else if(isset($_GET['medlemmer'])){

    include('medlemmer.php');
   
        }else if(isset($_GET['kontakt'])){

    include('kontakt.php');

        } else {
    include('forside.php');
    }
  ?>
Avatar billede The_Buzz Novice
23. maj 2011 - 09:32 #1
<?php
$filepath = "/var/www/modified.dk/html/";

if ($handle = opendir($filepath)) {
    while (false !== ($file = readdir($handle))) {
        if ($file != "." && $file != "..") {
                $valuestringexploded = explode('.', $file);
            echo "<a href='listhtml.php?action=".$file."'>".$valuestringexploded[0]."</a> \n";
        }
    }
    closedir($handle);
}
?>

og til dine GET values:

<?php
if ($_GET['action']) {
    $action = $_GET['action'];
    if (file_exists($filepath.$action)) {
        include($filepath.$action);
    }
}
?>

Det kører her - men med to images. http://www.modified.dk/listhtml.php

Du kan eventuelt - navngive dine HTML filer som Forside.html - hvor den så stripper .html af - og skriver kun Forside.

NB: Det vil fejle med Forside.Hjem.Html... Her vil den så bare skrive Forside i din menu.
Avatar billede The_Buzz Novice
23. maj 2011 - 09:37 #2
Whoups og et svar :P
Avatar billede itmouse Nybegynder
23. maj 2011 - 11:02 #3
Fedt. Jeg kan ikke helt få det til at virke. Jeg har oprettet et html dokument ved navn "forside.html" i mappen "/html/".



Min kode ser således ud:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="stylesheet" type="text/css" href="css/index.css" />
<link rel="stylesheet" type="text/css" href="shadowbox.css">
<title>agnvig.dk</title>

<script type="text/javascript" src="js/jquery-1.6.min.js"></script>

<script type="text/javascript" src="js/coda.js"> </script>

<script type="text/javascript" src="shadowbox.js"></script>
<script type="text/javascript">
Shadowbox.init({
    language: 'en',
    players:  ['img', 'html', 'iframe', 'qt', 'wmp', 'swf', 'flv']
});
</script>

<?php
$filepath = "/var/www/minhjemmeside.dk/html/";

if ($handle = opendir($filepath)) {
    while (false !== ($file = readdir($handle))) {
        if ($file != "." && $file != "..") {
                $valuestringexploded = explode('.', $file);
            echo "<a href='index.php?action=".$file."'>".$valuestringexploded[0]."</a> \n";
        }
    }
    closedir($handle);
}
?>

</head>
<body>
<div class="all">
<div class="content">
<div class="chiliimg"></div>
  <div class="main">
   
<?php
if ($_GET['action']) {
    $action = $_GET['action'];
    if (file_exists($filepath.$action)) {
        include($filepath.$action);
    }
}
?>
 
  </div>
  <div class="footer"></div>
  <div class="disclaimer">
    <p>Foreningen af 2011</p>
  </div>
</div>
</div>

</body>
</html>
Avatar billede The_Buzz Novice
23. maj 2011 - 11:24 #4
Viser den links for forside.html i menuen, eller loader den ikke det ind der er i forside.html?
Avatar billede The_Buzz Novice
23. maj 2011 - 11:40 #5
Eventuelt hvilken operativ system siden kører på? og en URL til din test side.
Avatar billede itmouse Nybegynder
23. maj 2011 - 12:13 #6
Den laver fejlen:

Warning: opendir(http://localhost/sauna/backup/) [function.opendir]: failed to open dir: not implemented in C:\Program Files (x86)\Wamp\www\sauna\backup\index.php on line 24



Så det er noget med denne linje:
$filepath = "http://localhost/sauna/backup/";

Jeg kører den på en WAMP server.
Avatar billede itmouse Nybegynder
23. maj 2011 - 12:39 #7
Min tilbagemelding er lidt misvisende. Jeg har ikke ovenstående problem mere.

Dog er scriptet ikke helt hvad jeg troede i starten.
Den laver automatisk links efter hvad der er af .html filer i mappen "html", det behøver den ikke.

Minus:
echo "<a href='index.php?action=".$file."'>".$valuestringexploded[0]."</a> \n";

Jeg kunne godt tænke mig, når jeg har lavet en html-fil (eksempelvis kalender.html) med noget tekst i (i mappen /html), at jeg så bare kunne lave et link som "index.php?action=kalender", hvorefter den inculder "kalender.html" et sted på siden.

Dette nok med din funktion al la:


if ($_GET['action']) {
    $action = $_GET['action'];
    if (file_exists($filepath.$action)) {
        include($filepath.$action);
    }
}
?>
Avatar billede The_Buzz Novice
23. maj 2011 - 13:17 #8
Jamen  så er funktionen jo bare som jeg har lavet (som du selv siger)...

<?php
$filepath = "/var/www/minhjemmeside.dk/html/";
// eller $filepath = "C:\Program Files (x86)\Wamp\www\sauna\backup\html\";
if ($_GET['action']) {
    $action = $_GET['action'];
    if (file_exists($filepath.$action)) {
        include($filepath.$action);
    }
}
?>
Avatar billede The_Buzz Novice
23. maj 2011 - 13:18 #9
Burde nok være:

if (isset($_GET['action'])) {
    $action = $_GET['action'];
    if (file_exists($filepath.$action)) {
        include($filepath.$action);
    }
}
Avatar billede itmouse Nybegynder
23. maj 2011 - 14:28 #10
Oh ok, så er det simpelthen kun den del.

Siden ser som sådan fin ud med henblik på min CSS og html opsætning, men den henter desværre ikke /html/forside.html, ved hjælp af nedenstående kode og linket "index.php?action=forside".

if (isset($_GET['action'])) {
    $action = $_GET['action'];
    if (file_exists($filepath.$action)) {
        include($filepath.$action);
    }
}
Avatar billede The_Buzz Novice
23. maj 2011 - 14:44 #11
if (isset($_GET['action'])) {
    $action = $_GET['action'];
    if (file_exists($filepath.$action.".html")) {
        include($filepath.$action);
    }
}
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

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