• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Problem mit $_GET

YetiZwerg

Neues Mitglied
Hi...

Ich habe gleich mal 2 Fragen:

1. wie kann ich aus folgender URL den Wert nach dem "?" auslesen?
http://......de/page.php?12

Wie kann ich meinem PHP-Script sagen, dass er die Seite, welche in der DB die ID 12 hat, öffnen soll...

es soll nicht mit http://.......de/page.php?id=12
das weiß ich schon...

2. wie kann ich aus folgender URL den Wert nach dem "/" auslesen?
http://......de/12

Wie kann ich meinen PHP-Script sagen, dass er die Seite, welche in der DB die ID 12 hat, öffnen soll...


Wenn ihr eine Lösung für meine zweite Frage habt, wäre mir das lieber.


Grüße YetiZwerg
 
Wer dir gesagt hat, dass es nicht mit ?id=12 geht, hat Schwachsinn gelabert. $_GET ist ein assoziatives Array, das heißt der Wert vor dem = ist die "Ansprechadresse" und der Wert dahinter ist der eigentliche Wert.
Also bei der folgenden URL:
search.php?search=test&page=1
kommst du an die Werte hinter dem "?" mit
PHP:
$_GET[ "search" ];
$_GET[ "page" ];
// ...

Was deine zweite Frage betrifft empfehle ich dir den Gebrauch von mod_rewrite. Es ist zwar etwas komplizierter für Anfänger, aber es erfüllt seinen Zweck.
 
Dann hast du dich unklar ausgedrückt. Ich zitiere:
es soll nicht mit http://.......de/page.php?id=12
das weiß ich schon...
Was soll es denn nicht? Es soll so nicht funktionieren (hast du gehört) oder weißt du schon, dass es so funktioniert?

Wie auch immer, ich weiß gerade nicht, ob $_GET sowohl assoziativ als auch nummerisch ist. Probier es mal aus:
PHP:
$page = $_GET[ 0 ];
Vielleicht hast du da ja Erfolg.

Für den zweiten Fall habe ich dir ja schon gesagt, schau dir mod_rewrite für Apache an. Das ist genau das, was du willst.
Solltest du aus irgend einem Grund mir nicht glauben, erkläre ich dir kurz und bündig, was mod_rewrite ist:

mod_rewrite ist ein Apache-Modul, welches die URL mittels Regular Expressions absucht und anschließend umändern kann, ohne dass die angezeigte URL abgeändert wird. Somit wird dem Benutzer "vorgegaukelt", er befände sich beispielsweise auf contact.html, dabei ist er in Wahrheit auf index.php?page=contact.
 
habe mir das jetzt mal mit mod_rewrite angesehen...

musste leider feststellen, dass mein Server eben diese Funktion nicht unterstützt...

Ich habe einen Windowsserver...

Könnt Ihr mir evtl sagen, wie ich mod_rewrite auf dem Server aktivieren kann...
Ich habe Google benutzt, doch leider komme ich nicht weiter...

bin, was Servereinstellungen angeht leider nicht so der Profi.....


# EDIT
habe phpinfo() aufgerufen und festgestellt, dass es nicht anzeigt wird...


Freue mich schon auf euere Antworten...

Grüße
 
Zuletzt bearbeitet:
In der phpInfo wirst du das auch nicht finden! mod_rewrite verwendet diese kleine, lustige Datei ohne Namen, die auf .htaccess endet. Sollte dein Server wirklich kein mod_rewrite haben, aber Apache, dann installier es. Wenn du nicht der Besitzer bist, sondern diesen nur angemietet hast, frag deinen Administrator, dies für dich zu tun.
Sollte auf deinem Server nicht Apache laufen, such nach Alternativen...


Apropos, mod_rewrite ist nichts, das auf PHP läuft. Es ist wie gesagt ein Modul für Apache und ist abgekapselt von PHP. Beide haben nichts mit einander zu tun. Deswegen wirst du das auch nicht in der phpInfo finden.
 
Zuletzt bearbeitet:
Weil Windows sich auf Dateiendungen verlässt, während unter Unix der Datei-Typ ermittelt wird (gilt nicht für Webserver).
 
Die Installation hängt ganz von dir ab bzw. von deinem Webspace-Provider. Da musst du schon selbst durch, ich werde wohl kaum mit deinem Webspace-Anbieter reden, damit er auf deinem Server mod_rewrite mitsamt Apache installiert oder auch nur eine Alternative für die jeweilige Server-Software.
 
YetiZwerg schrieb:
1. wie kann ich aus folgender URL den Wert nach dem "?" auslesen?

PHP:
$queryPart = parse_url($url, PHP_URL_QUERY);

2. wie kann ich aus folgender URL den Wert nach dem "/" auslesen?

PHP:
$path = parse_url($url, PHP_URL_PATH);

Wie kann ich meinen PHP-Script sagen, dass er die Seite, welche in der DB die ID 12 hat, öffnen soll...

PHP:
$dsn      = 'mysql:dbname=yourdatabase;host=localhost';
$user     = '';
$password = '';

$dbh = new PDO($dsn, $user, $password);

$dbh->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);

$query = "SELECT `field1`, `field2` FROM `table` WHERE `id` = :id";

$sth   = $dbh->prepare($query);

$sth->execute(array('id' => 12));

print_r($sth->fetchAll());

DarkDragon193 schrieb:
ich weiß gerade nicht, ob $_GET sowohl assoziativ als auch nummerisch ist

Prinzipiell nur assoziativ.

PHP:
// index.php?39

var_dump($_GET); // array(1) { [39]=> string(0) "" }

Apropos, mod_rewrite ist nichts, das auf PHP läuft. Es ist wie gesagt ein Modul für Apache und ist abgekapselt von PHP. Beide haben nichts mit einander zu tun. Deswegen wirst du das auch nicht in der phpInfo finden.

Ich finde es da unter „apache2handler“ und „Loaded Modules“. Aber das mag konfigurationsabhängig sein.

damit er auf deinem Server mod_rewrite mitsamt Apache installiert oder auch nur eine Alternative für die jeweilige Server-Software

@YetiZwerg:

Es gibt eine IIS-Extension „URL Rewrite“.

- URL Rewrite : The Official Microsoft IIS Site
- Anleitung: Using the URL Rewrite Module : URL Rewrite Module : Installing and Configuring IIS 7 : The Official Microsoft IIS Site

Aber ob du IIS überhaupt nutzt und ob diese Extension verfügbar ist, lässt sich so nicht sagen, wie DarkDragon193 auch schon meinte.
 

Neueste Beiträge

Zurück
Oben