Id uden database

Tags:    php

<< < 12 > >>
hej hej jeg sidder lige her med et lille problem er der nogle der kan hjælpe mig. Jeg vil lave et smart indexerings system til min hjemmeside. Jeg vil lave det system uden en database. Hvordan laver jeg sådan så man foreksempel includer www.da-bitsch.dk/index.php?id=main. hvor main =main.php det skal være sådan at den requester alt hvad der står efter iden vil virkelige hjælpe mig meget hvis der var nogle der gad og skrive hvordan jeg gør det.



12 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 5 karma
Sorter efter stemmer Sorter efter dato
Prøv at kigge på dette stykke kode:
<pre><?
$getSide = $_GET["side"];

function includepage($getSide)
{
$fileToInclude;

if ($getSide == null)
{
$fileToInclude = "forside";
}

else
{
$dir = opendir("./sider");

while($file = readdir($dir))
{
$file = strtolower($file);

if(ereg(".php", $file))
{
if ($file == $getSide . ".php")
{
$fileToInclude = $getSide;
}
}
}
}

if ($fileToInclude == null)
{
$fileToInclude = "forside";
}

$fileToInclude = "./sider/" . $fileToInclude . ".php";

include("$fileToInclude");
}
?>

<html></pre>

mikl-dk | ICQ: 159096501 | MSN: mikl@mikl.dk


Denne kode tager alt for lang tid, prøv hellere denne her:
<pre>
... din start html kode, ned til hvor indeholdet skal være
<?php
$directory = "sider"; // Bibloteket hvor dine sider ligger, uden en sluttende "slash" (/)

$file = $directory . '/' . $_GET['id'] . '.php'; //Filen som skal inkluderes

$std_file = $directory . '/main.php'; //Filen der skal inkluderes hvis den valgte fil ikke findes, eller hvis der er ikke et sat noget "id"
if(fileexists($file)){
include_once($file);
} else {
include_once($std_file);
}
?>
... din slut kode, fra slutningen af indholdet og ned.
</pre>

Denne kode burde være meget hurtigere end den tideligere foreslået.

Mvh
Kaare



Prøv at kigge på dette stykke kode:
<pre><?
$getSide = $_GET["side"];

function includepage($getSide)
{
$fileToInclude;

if ($getSide == null)
{
$fileToInclude = "forside";
}

else
{
$dir = opendir("./sider");

while($file = readdir($dir))
{
$file = strtolower($file);

if(ereg(".php", $file))
{
if ($file == $getSide . ".php")
{
$fileToInclude = $getSide;
}
}
}
}

if ($fileToInclude == null)
{
$fileToInclude = "forside";
}

$fileToInclude = "./sider/" . $fileToInclude . ".php";

include("$fileToInclude");
}
?>

<html></pre>

mikl-dk | ICQ: 159096501 | MSN: mikl@mikl.dk



Hey hvis du gider forklarer lidt hvad variablerne gør og hvad jeg skal skrive i dem så er pointene dine. Det ville virkelige gøre mig en tjeneste



Er enig i, at din kode er kortere end min...

Om den er hurtigere ved jeg ikke, men fordelen ved min er, at den jo er bygget op som en funktion...

mikl-dk | ICQ: 159096501 | MSN: mikl@mikl.dk



Er enig i, at din kode er kortere end min...

Om den er hurtigere ved jeg ikke, men fordelen ved min er, at den jo er bygget op som en funktion...

mikl-dk | ICQ: 159096501 | MSN: mikl@mikl.dk


Hurtigere er den, eftersom jeg kun bruger en filesystem funktion og ikke skal til at åbne en masse directoryer, det med funktionen, hvad er fordelen i det? Den skal jo kun bruges en gang.

Mvh
Kaare



Ja, okay - din er sku lidt smartere :)

Der er mange fordele ved funktioner!


mikl-dk | ICQ: 159096501 | MSN: mikl@mikl.dk



Der er mange fordele ved funktioner!
Ja, klart da. Men ikke i det her tilfælde, da det jo rent faktisk ikke gør det nemmere, men kun mere besværligt, vel og mærke hvis ikke at koden ligger i en inkluderet fil.
Mvh
Kaare



Nu har jeg altså siddet en hel del med scriptet kan ikke helt forstå hvordan det skulle kunne virke. Jeg har lavet en folder som heder sider og en fil der heder index.php første mand der forklarer det SÅ SELV JEG KAN FATTE DET for de 200 up.



Nu har jeg altså siddet en hel del med scriptet kan ikke helt forstå hvordan det skulle kunne virke. Jeg har lavet en folder som heder sider og en fil der heder index.php første mand der forklarer det SÅ SELV JEG KAN FATTE DET for de 200 up.


Hvis du kigger på den kode jeg har givet dig, er hver eneste kodestump kommenteret! fileexists funktionens brug burde vist give sig selv, den chekker for om en given fil eksistere, alt du skal gøre er at rette lidt til i variablerne, hvis ikke du har php4.1 så skal du ændre $_GET["id"] til $id.

Mvh
Kaare



Nu har jeg altså siddet en hel del med scriptet kan ikke helt forstå hvordan det skulle kunne virke. Jeg har lavet en folder som heder sider og en fil der heder index.php første mand der forklarer det SÅ SELV JEG KAN FATTE DET for de 200 up.

Hvis du kigger på den kode jeg har givet dig, er hver eneste kodestump kommenteret! fileexists funktionens brug burde vist give sig selv, den chekker for om en given fil eksistere, alt du skal gøre er at rette lidt til i variablerne, hvis ikke du har php4.1 så skal du ændre $_GET["id"] til $id.

Mvh
Kaare



Okay, her er en forklaring linie for line:

Fold kodeboks ind/udKode 


$directory angiver dit bibliotek som dine sider ligger i.
I eksemplet skal dine filer ligge under bib. "sider".
Vil du ha' det til at ligge under f.eks. "mit_web/sider" så sætter $directory = med det.

Fold kodeboks ind/udKode 


Når du kalder denne php side så skal du angive "id" som parameter altså:
http://www.din_web_adr/denne_php_side.php?id=forside
I linien ovenfor vil din $_GET["id"] indeholde "forside".

$file vil nu indeholde en streng sammensat af $directory og dit parameter.
Hvis vi bruger sammen URL som ovenfor så vil $file indeholde følgende:
"sider/forside.php"

Hvis nu du ikke havde angivet nogen parameter (f.eks. http://www.din_web_adr/denne_php_side.php) så vil $_GET["id"] indeholde en
tom streng og din $file vil se således ud:
"sider/.php"

Fold kodeboks ind/udKode 


Lidt lige som ovenfor med her sætter vi altid den samme php fil (main.php).
Det vil sige $std_file vil indeholde : "sider/main.php".
Hvis din "default" php side skal hedde noget andet end main.php så ændre i den ovenstående.
Lad os sige den skulle hedde "default.php" så ændre du det til:
$std_file = $directory . '/default.php';

Fold kodeboks ind/udKode 


Her checker vi på om filen som $file peger på eksistere.
Hvis den gør så inkluderes den i denne php siden.
Det vil sige at indholdet af php siden som $file peger vil blive udført lige som hvis du havde kaldt den direkte i din browser.

Fold kodeboks ind/udKode 


Hvis filen ikke findes (hvis $_GET["id"] er tom eller den angiver et forkert filnavn) så bruges $std_file i stedet for. Altså så inkluderes "sider/main.php" i denne php fil.

Fold kodeboks ind/udKode 



Jeg håber dette giver dig en bedre forståelse af scriptet og hvordan det fungere.

PS. UP'ene vil jeg ikke ha' da de bør gå til Kaare da det var ham der kom med scriptet.

Michael.



<< < 12 > >>
t