sunnyw86 Geschrieben 21. Juni 2007 Geschrieben 21. Juni 2007 Hi, also ich Übergebe zwei Werte: $kategorie= $_GET['kat']; $bildname= $_GET['name']; [/PHP] Das klappt auch, habe einfach mal zum Test es ausgeben lassen. Also die Werte werden übernommen. Nun zum Problem, denn ich möchte die Variablen jetzt übergeben. Zur kurzen Erklärung: ich habe mir eine Site aufgebaut für eine Galerie. Nun möchte ich die Galerie immer befüllen lassen egal auf welche Kategorie man klickt. Hier meine Übergabe: [PHP] echo "<a href=\"$PHP_SELF?page=$bildnr&kat=cars &name=scirocco \" title=\"$bildtext[$bildnr]\"> Anstatt dort "cars" oder "scirocco" hinzuschreiben möchte ich dies mit den Variablen "$kategorie" und "$bildname" machen. Hat jemand ne Ahnung? Hab schon soviel ausprobiert, aber immer kommen dann Fehler. Danke schon mal im vorraus. Zitieren
geloescht_JesterDay Geschrieben 21. Juni 2007 Geschrieben 21. Juni 2007 Hier meine Übergabe: echo "<a href=\"$PHP_SELF?page=$bildnr&kat=cars &name=scirocco \" title=\"$bildtext[$bildnr]\"> [/PHP] Anstatt dort "cars" oder "scirocco" hinzuschreiben möchte ich dies mit den Variablen "$kategorie" und "$bildname" machen. Hat jemand ne Ahnung? Hab schon soviel ausprobiert, aber immer kommen dann Fehler. Wenn zur Zeit der Ausgabe $kategorie und $bildname gefüllt sind, steht das dann auch im HTML das ausgegeben wird. Also nach der einen Zeile hier sollte das ja so gehen. Ich glaube eher, da läuft prinzipiell was falsch bei dir... Ach ja: $PHP_SELF riecht sehr stark nach register_globals. Das ist alt und sollte auf deinem Server ausgeschalten werden, da es das mittlerweile eigentlich bei den meisten Servern auch ist (sein sollte) und in den PHP-Versionen standardmäßig auch deaktiviert ist. $_SERVER["PHP_SELF"] wäre die richtige Variable. Zitieren
sunnyw86 Geschrieben 21. Juni 2007 Autor Geschrieben 21. Juni 2007 Danke für deine schnelle Antwort. Also ich habe die Zeile jetzt so umgeändert, aber er gibt ein Fehler an: echo "<a href=\$_SERVER["PHP_SELF"]?page=$bildnr&kat=cars &name=scirocco \" title=\"$bildtext[$bildnr]\"> [/PHP] Woran liegt das??? Zitieren
geloescht_JesterDay Geschrieben 21. Juni 2007 Geschrieben 21. Juni 2007 Woran liegt das??? $_SERVER["PHP_SELF"] ist ein Array (wie man ja sieht ) EinArray kannst du nicht so einfach in einen String einbauen wie eine Variable. Du hast 3 Möglichkeiten: $url = $_SERVER["PHP_SELF"]; $string = "bla$url"; [/php] oder [php] $string = "bla".$_SERVER["PHP_SELF"]; oder $string = "bla{$_SERVER['PHP_SELF']}"; [/php] Wobei ich mir beim letzen nicht 100% sicher bin, da ich das so eh nie verwende (so irgendwie geht es aber). Zitieren
sunnyw86 Geschrieben 21. Juni 2007 Autor Geschrieben 21. Juni 2007 Das klappt soweit. Aber wie bekomm ich mein Ausgangsproblem hin? Wie gesagt, will das halt nicht hinschreiben z.b.: name=scirocco sondern mit Variablen übergeben?? Zitieren
geloescht_JesterDay Geschrieben 21. Juni 2007 Geschrieben 21. Juni 2007 Das klappt soweit. Aber wie bekomm ich mein Ausgangsproblem hin? Wie gesagt, will das halt nicht hinschreiben z.b.: name=scirocco sondern mit Variablen übergeben?? Sollte so gehen wie du das da oben machst (wenn ich davon ausgehe, dass die einzelnen Zeile da oben sonst im richtigen Kontext stehen): <?php # Variablen Initialisieren $name = "scirocco"; # Name per GET-übergeben? if (isset($_GET["name"])) $name = $_GET["name"]; # Ausgabe $url = $_SERVER["PHP_SELF"]."?name=$name"; ?> <html> <body> <a href="<?php echo $url; ?>">Klick</a> </body> </html> [/php] Zitieren
sunnyw86 Geschrieben 21. Juni 2007 Autor Geschrieben 21. Juni 2007 Müßte eigentlich, denn $pfad oder $bildnr werden ja auch richtig übergeben. Deswegen wundert mich das so. echo "<a href=\"$pfad?page=$bildnr&kat=cars&name=$bildname\" title=\"$bildtext[$bildnr]\">[/PHP] Aber so gibt er mir nur: "http://localhost//galerieBild.php?page=1&kat=cars&name=" aus. Zitieren
sunnyw86 Geschrieben 21. Juni 2007 Autor Geschrieben 21. Juni 2007 Ok also jetzt weiß ich 100% das meine Übergabe falsch ist. So habe ich sonst den Wert übergeben: $kategorie= $_GET["kat"]; $bildname= $_GET["name"]; [/PHP] und zum Test hat die Variable den richtigen Wert gehabt. Zum Versuch habe ich mal so eingegeben: [PHP] $kategorie= "cars"; $bildname= "scirocco"; Dann hats geklappt. Wieso? Zitieren
geloescht_JesterDay Geschrieben 21. Juni 2007 Geschrieben 21. Juni 2007 Müßte eigentlich, denn $pfad oder $bildnr werden ja auch richtig übergeben. Deswegen wundert mich das so. Kann es sein, dass $bildname zu diesem Zeitpunkt einfach leer ist? Oder du dich irgendwo verschrieben hast beim befüllen? Zitieren
geloescht_JesterDay Geschrieben 21. Juni 2007 Geschrieben 21. Juni 2007 Ok also jetzt weiß ich 100% das meine Übergabe falsch ist. So habe ich sonst den Wert übergeben: $kategorie= $_GET["kat"]; $bildname= $_GET["name"]; [/PHP] und zum Test hat die Variable den richtigen Wert gehabt. Zum Versuch habe ich mal so eingegeben: [PHP] $kategorie= "cars"; $bildname= "scirocco"; Dann hats geklappt. Weil $_GET nicht immer gefüllt sein muss? Deswegen die Initialisierung bei mir vorhin. EDIT: Mehr kann man aber nur mit diesen 2 Zeilen nicht sagen... Zitieren
sunnyw86 Geschrieben 21. Juni 2007 Autor Geschrieben 21. Juni 2007 Achso, also wenn ich das so lasse: $kategorie= $_GET["kat"]; [/PHP] schaut er immer nach? Also wie kann ich es denn machen das er nur einmal nachschaut??? Zitieren
geloescht_JesterDay Geschrieben 21. Juni 2007 Geschrieben 21. Juni 2007 Achso, also wenn ich das so lasse: $kategorie= $_GET["kat"]; [/PHP] schaut er immer nach? Also wie kann ich es denn machen das er nur einmal nachschaut??? Wie meinst du das? Also: $_GET ist eines von ein paar sog. superglobalen Arrays. Darin stellt PHP z.B. die per URL übergebenen Werte (GET) im Skript zur Verfügung. Wenn jetzt kein Parameter übergeben wird, dann kannst du den natürlich auch nciht ansprechen bzw. erhälst keinen Wert. Um zu prüfen ob ein Wert vorhanden ist, kannst du die funktion isset benutzen: [php] if (isset($_GET["name"])) Damit prüfst für den Key "name" im Array ein Wert vorhanden ist. Da du dich immer wieder selbst aufrufst, kannst du nicht davon ausgehen, dass immer ein Wert übergeben wird (beim ersten Aufruf z.B.). auch sonst solltest du von Werten die von "außen" kommen nie annehmen, sie enthalten was korrektes. Mehr zu den superglobalen Arrays steht z.B. hier: PHP: Vordefinierte Variablen - Manual Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.