Zum Inhalt springen

was mach ich nur falsch?


Empfohlene Beiträge

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:

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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]

Link zu diesem Kommentar
Auf anderen Seiten teilen

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?

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...