Datei nur durch ID laden
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
auflistung
beispiel
bericht
code
dank
datei
dateiname
datenbank
file
form
gefunden pfad
index
laden
ordner
page
pfad
schau
url
verzeichnis
zeiger
-
Hallo!
Ich habe folgendes Problem:
Ich möchte eine Seite laden, indem ich meiner index-Datei die ID angebe.
Diese soll dann eine Datei mit dem Dateinamen in Form von "Dateiname_ID.html" laden.
Beispiel:
index.php?id=35 >Seite "Testseite_35.html" soll geladen werden
index.php?id=07 >Seite "Info_07.html" soll geladen werden
Ich möchte nicht alle Dateien auflisten im php-code bzw.
eine Datenbank erstellen, in der jeder ID der Dateiname zugewiesen wird!
Leider habe ich noch keinen Ansatz.
Adi -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
naja drum herum kommst du nicht die Dateiname_ID.html zu laden ohne die ID ordnungsgemäß zu zu ordnern, sprich mit Datenbank oder Array oder so.
Wenn der Dateiname der HTML Seiten ohne weitere zahlen außer der ID benannt wird, könntest du jede einzelne Seite durchgehen und nach der gewünschten ID suchen, jedoch ist das zum einen sehr leistungsintensiev und kann lange dauern jenachdem wie viele seiten du hast, denn du müsstest die Seiten ja ersteinmal einlesen und den Dateinamen druchforsten nach der gewünschten ID.
Zum anderen würde, wenn du index.php?id=07 schreibst, $_GET['id'] wahrscheinlich aus der 07 eine einfache 7 machen und dadurch hättest du immerhin schon 3 verschiedene möglichkeiten, wie die ID lauten könnte.
z.B. 07, 17, 27
und selbst wenn du 35 nimmst könnte es immer noch 35, 135, 235, etc so weiter gehen, jenachdem wieviele Seiten du laden willst. -
jmc-remshalden schrieb:
Ich möchte eine Seite laden, indem ich meiner index-Datei die ID angebe.
Diese soll dann eine Datei mit dem Dateinamen in Form von "Dateiname_ID.html" laden.
Beispiel:
index.php?id=35 >Seite "Testseite_35.html" soll geladen werden
index.php?id=07 >Seite "Info_07.html" soll geladen werden
Das geht über eine .htacces -Datei.
Schau Dich bitte mal auf dieser Seite um, dort gibt es genug Lösungen zu Deiner Frage. ;) -
Danke für die Seite!
Ich schau mich mal dort um.
Aber nach was genau sollte ich da suchen?
Ich dachte mir schon, dass es irgendwie mit der .htaccess-Datei geht.
Bei meinem Anbieter konnte ich auf jede Seite durch "undefined_<ID>.html"
zugreifen ohne das ich eine bestimmten php-Script laufen lassen musste (wobei, php war sowieso nicht möglich...).
Adi
P.S: Es werden 'viele' Seiten (ca. 25 - Zuwachs monatlich: 1-2).
Beitrag zuletzt geändert: 1.4.2011 22:19:16 von jmc-remshalden -
Einfacher Tipp: Mach es nicht mit der ID ;) Wenn du kannst, lass die ID sogar eher ganz weg (wenn die Dateinamen sonst eindeutig sind). index.php?page=34 sagt einem doch viel weniger als index.php?page=Startseite, oder? Kannst du sogar über path_info noch verschönern zu index.php/Startseite. Oder sogar über .htaccess das index.php einsparen und nur noch /Startseite schreiben :)
Also, gibt es irgendeinen Grund, warum du gerade nur IDs haben willst und nicht eher umgekehrt? -
Und was spricht gegen eine Auflistung in einer Datenbank oder externem xlm-file oder einfach per php in dem Ordner alle Dateinamen einzulesen und die Id zu überprüfen?
MFG -
buddix schrieb:
Und was spricht gegen eine Auflistung in einer Datenbank oder externem xlm-file oder einfach per php in dem Ordner alle Dateinamen einzulesen und die Id zu überprüfen?
Das ist ein ganz anderes Thema ;) -
Ich nehme nikic's Vorschlag und übergebe den Dateinamen.
Ist wirklich besser als mit IDs.
Aber ich habe jetzt noch das Problem, dass die Dateien in mehreren Ordnern verteilt liegen, etwa so:
news-archiv.html: page/news
bericht-Index.html: page/berichte
Ich will nicht bei jedem Link die Kategorie mit übergeben müssen.
Geht es, die Dateien virtuell (also nicht wirklich) ins Hauptverzeichnis zu verschieben,
um dann aus dem Hauptverzeichnis die Datei zu laden? Und wenn ja, wie?
Danke, Adi -
Also ich verstehe nicht warum das nicht zum Thema gehören soll. Es ist halt nur eine andere Möglichkeit.
Vorallem bei einer größeren Verzeichnissstruktur würde ich in einer xml-datei alles auflisten.
Das könnte zum Beispiel so aussehen:
<files> <folder path="html/ordner1"> <file id="13">datei.txt</file> </folder> <folder path="html/ordner2"> <file id="6">test.html</file> <folder path="/ordnerxy"> <- ganzer Pfad dann "html/ordner2/ordnerxy <file id="7">script.php</file> </folder> </files>
Die Struktur kannst du natürlich beliebig variieren.
Aber so kannst du auch sehr übersichtlich die Dateien verwalten und verschiedene Attribute wie zB 'id' übergeben.
Datenbank, txt-datei mit einer liste, oder auch ordner per php durchsuchen....
Du hast tausend Möglichkeiten.
und wenn du das unbedingt per .htaccess machen willst... da kann ich dir leider nicht helfen.
viel Glück
& MFG
-
Ich habe es nun gelöst. Ich durchsuche die Ordner nach dem Dateinamen, der gleich der 'ID' ist:
function FINDpath(RecursiveDirectoryIterator $zeiger, $Dateiname) //Such-Funktion: $zeiger ist der Startordner (Unterverzeichnisse werden mit durchsucht); $Dateiname ist Teil der Datei (z.B. ID!) { $path[0]="!notfound!"; $path[1]="!notfound!"; for ($zeiger->rewind(); $zeiger->valid(); $zeiger->next()) //alle Dateien und Ordner des Verzeichnis prüfen { if ($zeiger->isDir() && !$zeiger->isDot()) { if ($zeiger->hasChildren()) { $unterverzeichnis = $zeiger->getChildren(); $erg=FINDpath($unterverzeichnis,$Dateiname ); //in Unterverzeichnis suchen if ($erg[0]!="!notfound!") {$path=$erg;} } } elseif ($zeiger->isFile()) { $foundName=$zeiger->getFilename(); if(stristr($foundName, $Dateiname) != FALSE) { //Wenn Dateinamen ID enthält if (substr($foundName,-4)==".php" xor substr($foundName,-5)==".html") //Prüfe, ob es sich um PHP- oder HTML-Datei handelt { $path[0]=$zeiger->getPath(); $path[1]=$foundName; } } } } return $path; } $get=FINDpath( new RecursiveDirectoryIterator( '.' ), $ID ); //SUCHEN if ($get[0]!="!notfound!") // Wenn Datei gefunden { $Pfad=$get[0]; $Datei=$get[1]; } else //Wenn nicht gefunden { $Pfad="."; $Datei="error.php"; } include($Pfad.'/'.$Datei); //Datei includieren
Alle Verzeichnisse ab dem aktuellen Verzeichnis werden rekursiv durchsucht.
Jede HTML- & PHP-Datei hat einen eindeutigen Namen
(ohne Dateierweiterung!) oder eine eindeutige ID.
Andere Dateitypen werden herausgefiltert (z.B. *.txt *.js *.jpg)
Beispiel:
gesuchte Datei: irgendwas-64697.html
Suchstring für $Dateiname:
a) 'irgend'
b) 'irgendwas' (Dateiname)
c) '64697' (ID)
d) 'was-646' ....
Adi
[Edit: Suche durch Teilstring hinzugefügt]
Beitrag zuletzt geändert: 3.4.2011 19:21:38 von jmc-remshalden -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage