Querystrign ansprechen, wie?
Simon
- php
0 fastix®0 Tobias Kloth
Hi Forum!
Ich will mit einem Link <a href="seite.php?id=1&lang=2>TEST</a>
zwei Variablen an die Seite übergeben.
Meine Frage, ich wollte mittels psarse_str() den Querystring bearbeiten, so dass mir die Variablen id und lang direkt zur Verfügung stehen, so dass ich die dann weiter verwenden kann: if (id =1) ... und so was auch für lang ...
Oder brauche ich den Querystring nicht zu parsen? Kann ich die direkt mir $_GET['id'] nehmen und verwenden?
Simon
---
*php-newbie* ;)
Moin!
Hi Forum!
Ich will mit einem Link <a href="seite.php?id=1&lang=2>TEST</a>
zwei Variablen an die Seite übergeben.
<a href="seite.php?id=1&lang=2>TEST</a>
Ist valide. Das andere macht in manchen Browsern Probleme.
Oder brauche ich den Querystring nicht zu parsen? Kann ich die direkt mir $_GET['id'] nehmen und verwenden?
Genau so.
@$id=$_GET['id'];
@$lang=$_GET['id'];
beseitigt alle Probleme restlos.... Warum hast Du es noch nicht probiert?
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix®
Hallo!
@$id=$_GET['id'];
@$lang=$_GET['id'];beseitigt alle Probleme restlos.... Warum hast Du es noch nicht probiert?
Gerade am Anfang sollte man @ möglichst _nicht_ verwenden, da so evtl. hilfreiche Fehlermeldungen unterdrückt werden. Ich habe noch nie gesehen dass man @ vor eine Variable schreibt - um was zu erreichen?
Grüße
Andreas
Moin!
Gerade am Anfang sollte man @ möglichst _nicht_ verwenden, da so evtl. hilfreiche Fehlermeldungen unterdrückt werden. Ich habe noch nie gesehen dass man @ vor eine Variable schreibt - um was zu erreichen?
Fehlermeldungen vielleicht? Bei manchen Einstellungen in der PHP.INI gibts nervige Meldungen, wenn im Beispiel $_GET['id'] oder $_GET['language'] nicht gesetzt sind. So bleiben die Variablen $id und $language einfach leer.
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix®
Hi fastix,
Gerade am Anfang sollte man @ möglichst _nicht_ verwenden, da so evtl. hilfreiche Fehlermeldungen unterdrückt werden. Ich habe noch nie gesehen dass man @ vor eine Variable schreibt - um was zu erreichen?
Fehlermeldungen vielleicht? Bei manchen Einstellungen in der PHP.INI gibts nervige Meldungen, wenn im Beispiel $_GET['id'] oder $_GET['language'] nicht gesetzt sind. So bleiben die Variablen $id und $language einfach leer.
Du solltest dich vielleicht damit befassen, was der Unterschied zwischen ~E_NOTICE und ~E_ERROR ist.
Grüße aus Barsinghausen,
Fabian
Moin!
Hallo Fabian!
Fehlermeldungen vielleicht?
Du solltest dich vielleicht damit befassen, was der Unterschied zwischen ~E_NOTICE und ~E_ERROR ist.
Mir ist der Unterschied zwischen einer Notiz und einer Fehlermeldung schon klar... da war auch mal irgendwo ein Thread zum Thema Perl. Was aber, wenn der Hoster die Notizen eingeschaltet hat, was auf einem Entwicklersystem Sinn macht, beim Hoster (eigentlich) nicht. Der Kinde hat da aber "nicht immer" Einfluß. Soweit ich informiert bin unterdrückt das "@" auch die Notizen. Naja... und das ich "Fehlermeldung" geschrieben habe war eine sprachliche Ungenauigkeit. Wobei ja die Notizen auf einen eventuellen Fehler aufmerksam machen sollen :) - kann ja sein, da hat sich wer schlicht vertippt.
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix®
Hallo!
Fehlermeldungen vielleicht?
Du solltest dich vielleicht damit befassen, was der Unterschied zwischen ~E_NOTICE und ~E_ERROR ist.Mir ist der Unterschied zwischen einer Notiz und einer Fehlermeldung schon klar... da war auch mal irgendwo ein Thread zum Thema Perl. Was aber, wenn der Hoster die Notizen eingeschaltet hat, was auf einem Entwicklersystem Sinn macht, beim Hoster (eigentlich) nicht. Der Kinde hat da aber "nicht immer" Einfluß. Soweit ich informiert bin unterdrückt das "@" auch die Notizen. Naja... und das ich "Fehlermeldung" geschrieben habe war eine sprachliche Ungenauigkeit. Wobei ja die Notizen auf einen eventuellen Fehler aufmerksam machen sollen :) - kann ja sein, da hat sich wer schlicht vertippt.
Also mir wäre kein Provider bekannt der das aktiviert hat, normalerweise kommen diese Fragen immer von Leuten die ein Testsystem lokal installiert haben. Auch auch wenn, es ist einfach falsch zu schreiben
$var = $_GET['var'];
wenn man nicht weiß ob $_GET['var'] existiert.
Daher sollte man es so machen:
if (isset($_GET['var'])) {
$var = $_GET['var'];
}
Das muss man nicht unbedingt für jeden Parameter machen, man kann das auch zusammenfassen. Nur so kannst Du ein bestimmtes Verhalten sicherstellen.
Außerdem gibt es noch die Funkiton error_reporting(), die Du Dir mal angucken solltest ;-)
http://de3.php.net/error-reporting
Grüße
Andreas
Moin!
Also mir wäre kein Provider bekannt der das aktiviert hat,
Tja. Der Teufel ist ein Eichhörnchen. Man baut das Skript, testet es, nimmt an es wird laufen, dann stellt sich raus: Es ist Browser-, aber nicht Serveradminkompatibel. Wer ist dann erst mal der böse? Der Admin nicht. Der Programmierer...
if (isset($_GET['var'])) {
$var = $_GET['var'];
}
Das mag zwar syntaktisch hyperkorrekt sein führt aber zu anderen Problemen: Dann ist nämlich $var nicht gesetzt, was wieder irgendwelche Nachrichten provoziert (schließlich will ich $var ja auch noch weiterverarbeiten) und ich muss entweder:
$var = '';
if (isset($_GET['var'])) {
$var = $_GET['var'];
}
oder:
if (isset($_GET['var'])) {
$var = $_GET['var'];
} else {
$var = '';
}
hin schreiben.
Das erledigt aber mein Einzeiler
@$var = $_GET['var'];
schnell, sauber und übersichtlich. (Es sei dahingestellt, das sich obiges auch in eine Zeile schreiben lässt.)
Ob das während des Entwickelns/Debuggens und für Anfänger sinnvoll ist sei dahingestellt. Jedenfalls sind die "@" ziemlich schnell gesetzt und entfernt :).
Danke für den Tipp. Das werde ich mir bei passender Gelegenheit (== passendes Problem) mal richtig "reinziehen". Vielleicht läßt sich damit was wirklich intessantes anstellen. Ein kurzer Überblick war vielversprechend.
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix®
Hallo Simon,
Ich will mit einem Link <a href="seite.php?id=1&lang=2>TEST</a>
du weißt, dass du das & mit & maskieren musst?
Meine Frage, ich wollte mittels psarse_str() den Querystring bearbeiten,
du meinst parse_str(), oder? (ein 's' zu viel) - das ist nicht nötig (die Funktion kannte ich noch nicht einmal :-))
if (id =1)
na wennschon dann if($id==1) :-)
(id wäre eine Konstante und mit einem '=' weist du lediglich einen Wert zu und vergleichst nicht)
Oder brauche ich den Querystring nicht zu parsen?
nein, brauchst du nicht; php übernimmt die Parameter automatisch in das Array $_GET
Kann ich die direkt mir $_GET['id'] nehmen und verwenden?
ja, kannst du - ein einfaches ausprobieren hätte dir das aber auch gesagt...
Grüße aus Nürnberg
Tobias