Wie kann ich mehrere Unterseiten mit php erstellen?
Ich möchte eine website erstellen. Ich habe schon eine index.php erstellt und dort mit dem include Befehl die anderen php seiten eingefügt:
if($id=="news") {
include('news.php');
}
Die id wird vorher noch deklariert :
$id = $_GET["id"];
Die id steht dann hinterher auch so in der URL. Hab dies mit der .htaccess festgelegt. Jetzt möchte ich eine news-seite erstellen. Wie kann ich das so machen, dass die URL dann so aussieht:
www.example.com/news/artikelnummer
ich möchte, dass es für news praktisch eine Startseite gibt: example.com/news , die immer dann erscheint wenn ich oben im Menü auf news klicke. auf dieser Startseite kann man dann den Artikel anklicken und es wird der Artikel geladen und die URL ändert sich auf news/Artikelnummer. kann man das mit dem include Befehl machen oder gibt es da andere Möglichkeiten?
LG Calamann
2 Antworten
Ich hatte auch mal sowas gelesen: example.com/index.php?id=news&title=Artikelnummer
Weißt du wie man so etwas macht oder ist deine Methode besser ? ;)
So - index.php:
$page = null; if (isset($_GET['page']) $page = $_GET['page']; $slug = null; if (isset($_GET['slug']) $slug = $_GET['slug']; $pages = array('news', 'home'); if (in_array($page, $pages)) { inlucde __DIR__.$pages; }
// news.php:
if ($slug) {
// Spezifische News anzeigen
... // SELECT * FROM news WHERE slug=$slug
// Achtung: Gegen MySQL-Injection sichern!!!
} else {
// Alle News anzeigen
... // SELECT * FROM news
}
In dem von PHP automatisch generierten Array $_GET stehen die Schlüssel und Werte aller Parameter (also in deinem Beispiel id => news und title => Artikelnummer).
id würde ich aber z. B. page nennen und der Fachausdruck für title wäre slug. Ein slug wird aus dem title generiert aber ist eben URL-geeignet. Z. B. der Titel wäre "Hallo Welt", dann wäre ein möglicher Slug "Hallo_Welt". Wenn es eine zweite News mit dem Titel "Hallo Welt" gibt, wäre deren Slug z. B. "Hallo_Welt_2". Verständlich? Ein slug ist immer einzigartig und URL-geeignet, für einen Titel muss das nicht gelten.
Achtung: Falls du eine MySQL-Abfrage machen solltest, bei der du eine News mit einem bestimmten Slug suchst, ist es wichtig, diese gegen MySQL-Injections abzusichern!
ich weiß nicht, ob ich dich richtig verstanden habe:
in entspr. verzeichnis von example.com/news eine index.php, die die artikelnummern als links anzeigt (a href)
(ich weiß auch nicht was du an erfahrung mit web-programmierung hast)
alternative zum include (damit fügst du php code direkt ein), ist die php-header funktion
dann arbeitest du wohl intensiv mit .htaccess . zeig die uns mal bitte.
RewriteEngine on
RewriteRule ^de/([0-9a-zA-Z]+)$ de/index.php?id=$1 [NC,L]
RewriteRule ^en/([0-9a-zA-Z]+)$ en/index.php?id=$1 [NC,L]
Ich hab vorher noch die sprache. d.h. eig heißt die URL dann example.com/de/news
du hast dann also in $id z.b. "new/342" stehen. wie fragst du diese fälle ab?
oder zeig uns den entspr. code. aber bitte in z.b. http://pastie.org
(in den GF-editor kann man keinen code hineinkopieren.)
ich nehme an, du hast mehr als die 4 artikel 1..4. also so programmiert man:
statt
if($id=="home") ... und folgende:
if ( in_array($id, array('home', 'news')) ):
include("$id.php");
elseif ( substr($id, 0, 5) == 'news/' ):
include( substr($id, 5) . '.php');
else:
echo "error-text"; // z.b.
endif;
alles klar? wenn nicht: erstmal in php doku googeln.
erstmal vielen Dank für deine Hilfe ;) Ja genau es kommen auch immer mehr Artikel hinzu:) Da ich mich in php noch nicht gut auskenne, wärst du so nett und könntest mir den code von dir erklären?(Am besten zeile für zeile :D) Und kann ich die htaccess darauf immer noch anwenden oder was muss ich dann noch machen:P
Ich hatte auch mal sowas gelesen: example.com/index.php?id=news&title=Artikelnummer
Weißt du wie man so etwas macht oder ist deine Methode besser ? ;)
auch das könnte man mit htaccess aufsplitten. ich würde aber mal die finger von lassen und das wie gehabt in php machen.
der code ist als hilfe zur selbsthilfe gedacht. wenn du dir die funktionen in der doku anschaust, müsstest du den code verstehen können. wenn nicht, dann solltest du dir erst mal ein tutorial reinziehen oder ein buch.
ja mit der htaccess möchte ich ja eigentlich nur die URL schöner machen. Also anstatt /index.php?id=news nur /news ;)
Ich glaube ich habe den Code fast verstanden:D Vielen Dank! Du hast mir echt geholfen ;)
Meinst du mit "php doku" das php Handbuch? https://secure.php.net/manual/de/index.php
Habe das jetzt einfach so in google eingegeben :P Kann sein dass ich jetzt ein bisschen dumm bin :DD
ja, das php handbuch. und es tastächlich einfacher dortselbst via google nachzuschlagen, z.b. mit "php funktionsname". meist ist der 1. treffer der link zum manual (jedenfalls wenns man öfter macht? - big google watches you)
fast :D Also ich habe ein verzeichnes wo alle php Dateien drin sind. also auch die index.php. mit einem link (a href) kommt man zur id news die die URL /news anzeigt und dann die news.php includet. Wenn man dann dort auf einen link klickt soll der entsprechende Artikel (342.php) includet werden. ich möchte, dass in der URL dann aber nicht einfach example.com/342 oder so steht, sondern /news/342. wenn ich die id in news/342 ändere wird die seite nicht angezeigt. Ich hoffe das war verständlich :) sonst gerne fragen ;)