Code richtig? geht nicht :(

analogbernd

Mitglied
hallo, könnte mir jemand evtl. sagen, was an diesem code falsch ist?

PHP:
<?php
    $a = "Test1";
    $b = "Test2";
print "<a href=\"datei.php?auswahl=1\">Test 1</a> <a href=\"datei.php?auswahl=2\">Test 2</a>";
if(!isset($_GET['auswahl'])) print "Bitte klicken";
if (isset($_GET['auswahl']) and ($_GET['auswahl'] =1)) print $a;
if (isset($_GET['auswahl']) and ($_GET['auswahl'] =2)) print $b ;
?>

auf meinem webspace funktioniert er, jedoch steht beim klick test1test2 da ( das ist aber nicht das problem). auf meinem rechner habe ich ein WAMP installiert, da passiert jedoch beim klick nichts.

danke
 
PHP:
[...] and ($_GET['auswahl'] =1)) //Das machst du
// = ist aber der Zuweisungsoperator.
// Was du brauchst ist der Vergleichsoperator und der ist ==
 
sorry, habe ich nciht dazugeschrieben. so hatte ich es, aber da das script funktionieren muste, habe ich allen möglichen müll probiert, eben auch dies ;) das war meine letzte fassung, im original hatte ich es natürlich so ( == )

nur funktionierte es leider nicht :)

danke
 
Mal probiert die isset() bedingung bei den zwei letzten Abfragen wegzulassen ? Wenn die Variable einen Wert hat (zweiter Check) ist sie zwangsläufig auch gesetzt.

Ich weiss, ich hangel mich an Kleinigkeiten entlang, aber da ich keine wirklichen Fehler sehe, bleibt mir kaum was andere übrig ;)
 
Moin,

setzt mal die Klammern bei der if - Abfrage so:

PHP:
if(!isset($_GET['auswahl'])) print "Bitte klicken<br>";

if ((isset($_GET['auswahl'])) and ($_GET['auswahl'] ==1)) print $a;

if ((isset($_GET['auswahl'])) and ($_GET['auswahl'] ==2)) print $b ;
 
las isset() gleich raus

$bla = "bla";

if($bla) und if(isset($bla)) geben das gleiche aus, isset ist überholt ;)... zumal wenn $auswahl (ich schreib das immer one _GET) den wert "1" hat , dann hat es zwangsläufig auch einen wert, also nehm das raus... bzw ich mach das mal für dich, das skript nach meiner meinung:

PHP:
<?php

    $a = "Test1";

    $b = "Test2";

print "<a href=\"$PHP_SELF"."?auswahl=1\">Test 1</a> <a href=\"$PHP_SELF"."?auswahl=2\">Test 2</a>";

if(!$auswahl) print "Bitte klicken"; //modedit: Diese Zeile ist Quark, siehe nächster Reply

if ($_GET['auswahl'] =="1") print $a;

if ($_GET['auswahl'] =="2") print $b ;

?>

ich habs nicht getestet, aber probiers mal so!
 
Zuletzt bearbeitet von einem Moderator:
if(!$auswahl) print "Bitte klicken";
Wirst du dich wohl unterstehen, auf die superglobalen Arrays zu pfeifen ? Das heisst $_GET['auswahl'] und nur so, es sei denn du jagst vor dem Script, dass gesamte GET Array durch eine foreach Schleife, dass dir die normalen lokalen Variablen erzeugt.

Warum ich so motzig bin ? Ich sehe nicht ein, dass wir hier veralteten, im Web nicht mehr lauffähigen Code publizieren.
 
Original geschrieben von pornex
las isset() gleich raus

$bla = "bla";

if($bla) und if(isset($bla)) geben das gleiche aus, isset ist überholt ;)...

Beide aussagen sind falsch:

Aussage: if($var) und if(isset($var)) sind nicht gleich. Verhalten sich komplett anders.
Beweis:
PHP:
<?PHP
$a = false;
if($a) {
  echo 'if($a) ist true';
} else {
  echo 'if($a) ist false';
}
echo "<br>";
if(isset($a)) {
  echo 'if isset($a) ist true';
} else {
  echo 'if($a) ist false';
}
?>

Ausgabe:
if($a) ist false
if isset($a) ist true

Aussage: isset ist überholt ;)
Stimmt laut :
http://de.php.net/manual/de/function.isset.php
nicht. Die Funktion nutze ich oft.

Einsatzgebiet z.b. bei dem Versionkonflikt:

if(isset($_GET)==false) {
$_GET = $HTTP_GET_VARS;
}

selbst wenn keine Werte per GET übergeben werden, ist in neueren PHP Versionen isset($_GET) immer true.
Damit hat mann die möglichkeit bei false $_GET aus den $HTTP_GET_VARS (die in alten Versionen vorhanden waren) zu bilden.
Darum ist dieser 2 Zeiler bei mir immer mit angegeben, dann stolper ich über keine Versionkonflikte.

Bitte keine falsche Aussagen machen wenn mann etwas nicht genau weiss, das kann bei dem Fragenden nur zu Falschlernen führen.

Die Funktion isset prüft nicht ob die Variable einen Wert hat sondern, ob sie überhaupt existiert. Das ist in PHP zwar oft so das wenn sie keinen Wert hat, nicht existiert, aber wie gesehen nicht immer.

<?PHP
if(isset($_GET)) {
echo "nimmt _GET vars<br>";
if($_GET) echo "hat Werte!";
} else {
$_GET = $HTTP_GET_VARS;
}
?>

in neueren PHP Versionen gibts den Output beim aufrufen des Scriptes mit Werten
nimmt _GET vars
hat Werte

beim aufrufen des Scriptes ohne QueryString aber nur:
nimmt _GET vars

Mann kann jedoch auch eine Variable deklarieren und somit als Trigger nutzen.
 
vielen dank, für eure zahlreichen antworten, jedoch besteht mein problem, das mein script im web funktioniert und bei mir zu hause auf nem WAMP nicht.

;)

was soll ich nun machen? habe einiges zahlreiche tutorials und manuals gelesen und mein WAMP ( bin ich mir sicher ) ist ordentlich eingerichtet.

sorry, das ich das thema wieder auf mein problem lenke, auch wenn syntax diskussionen vielleicht wichtig sind, jedoch sollte das mein problem nicht lösen. danke ;)
 
ich bleibe dann gleich mal hier im Thread....

Ich benutze nie die Superglobalen Variablen alà _GET['BLA']... worin liegt der unterschied zwischen

$_GET[$inputname] und $inputname?

ich benutz das nämlich immer, wenn ihr mir nämlich jetzt ne gute Begründung liefert steige ich wohl um. Deshalb wär ich da ma dankbar...
und das mit isset, oke, aber wenn ich jetzt nicht mit false/true Übergaben als Variablenwert arbeite dann ist es doch egal??!

oder nicht?

millZ
 
Zurück