Variable "verschwindet"
-
Hi!
Folgendes Problem:
Ich übergebe per Link
<a href="index.php?site=turnieranlegen&action=server_edit&sid=<?= $server[id]; ?>">Server editieren</a>
eine Variable an ein anderes Script.
$abfrage = "SELECT * FROM turnier_server WHERE id='$_GET[sid]'"; $resID = mysql_query($abfrage); $server = mysql_fetch_array($resID,MYSQL_BOTH); ?> <form method="POST" action="index.php?site=turnieranlegen&action=save_server&edit_server=1&sid=<?= $_GET[sid]; ?>">
In der SQL Abfrage funktioniert sie bestens, aber beim action="" Feld des Formulars wird sie nicht mehr ausgegeben. Dazwischen ist kein anderer Code als hier abgebildet.
Stimmt da am Syntax was nicht? Ich verwende <= $bla; => allerdings sehr oft und es gab noch nue Probleme damit.
-
Assoziative Array-Indexe müssen in Hochkommata eingeschlossen werden ...
-
Ich weis zwar nicht, ob das dein Problem löst, aber du schreibst
$_GET[sid]
, aber müsste es nicht
$_GET["sid"]
mit Anführungszeichen heißen? Oder ist sid eine Konstante?
-
@ProgChild
Falsch, Hochkommata und nichts anderes!Weder $_GET[sid] noch $_GET["sid"] entsprechen dem Sprachstandard!
-
Das wars, danke für die Lösung.
Jetzt wo ich es lese kommt mir das ich mir das ja mal angewöhnen wollte aber irgendwie als verpeile.
-
Reyx schrieb:
@ProgChild
Falsch, Hochkommata und nichts anderes!Weder $_GET[sid] noch $_GET["sid"] entsprechen dem Sprachstandard!
Ich dachte es wäre egal, wie der String, der in der Abfrage steht erzeugt wird.
Entspricht dann
$var = "sid"; echo $_GET[$var];
dem Sprachstandard nicht und
$var = 'sid'; echo $_GET[$var];
dem Sprachstandard schon?
-
Die beiden Versionen sind beie vollkommen OK und sind im Endergebnis vollkommen identisch!
Der String wird intern immer gleich gespeichert, der Unterschied ist nur, dass bei doppelten Hochkommata im String enthaltene Variablen interpoliert werden, bei einfachen nicht. Der String, der in der Variablen letztendlich landet, ist der gleiche!
PHP kommt aber, glaube ich, auch mit doppelten zurecht ... nur Sprachstandard ist es afaik trotzdem nicht.
-
Reyx schrieb:
PHP kommt aber, glaube ich, auch mit doppelten zurecht ... nur Sprachstandard ist es afaik trotzdem nicht.
Erwartet wird ein String - wieso sollte "" also nicht standard-konform sein?!
-
Thargor schrieb:
Hi!
Folgendes Problem:
Ich übergebe per Link
<a href="index.php?site=turnieranlegen&action=server_edit&sid=<?= $server[id]; ?>">Server editieren</a>
eine Variable an ein anderes Script.
$abfrage = "SELECT * FROM turnier_server WHERE id='$_GET[sid]'"; $resID = mysql_query($abfrage); $server = mysql_fetch_array($resID,MYSQL_BOTH); ?> <form method="POST" action="index.php?site=turnieranlegen&action=save_server&edit_server=1&sid=<?= $_GET[sid]; ?>">
In der SQL Abfrage funktioniert sie bestens, aber beim action="" Feld des Formulars wird sie nicht mehr ausgegeben. Dazwischen ist kein anderer Code als hier abgebildet.
Stimmt da am Syntax was nicht? Ich verwende <= $bla; => allerdings sehr oft und es gab noch nue Probleme damit.Problem ist, wenn du sowas hast $array[key], dann wird key Konstante interpretiert, je nach Konfiguration gibt es eine Warnung oder sogar Fehlermeldung. Deswegen macht man: $array["key"] oder $array['key'].
Nur wenn man innerhalb eines Strings ein Array ausgegeben wird, muss mann das " oder ' weglassen:<?php echo "test 1: " . $array["key"] . " done"; /* richtig */ echo "test 1: " . $array['key'] . " done"; /* richtig */ echo "test 1: $array[key] done"; /* richtig */ ?>
In deinem Fall muss halt $server["id"] oder $server['id'], weil die Hochkommas von href nicht im PHP Modus gestellt wurden.
Nebenbei sollte man & benutzen, so:
<a href="index.php?site=turnieranlegen&action=server_edit&sid=<?php echo $server['id']; ?>">Server editieren</a>