Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

was mach ich nur falsch?

Empfohlene Antworten

Veröffentlicht

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. :rolleyes:

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.

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???

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).

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??

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]

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.

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?

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?

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...

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???

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

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.