einfache if else läuft nicht

Alles, was den Apache betrifft, kann hier besprochen werden.

einfache if else läuft nicht

Postby McHouse » 08. March 2004 15:22

Hallo, eigentlich schäme ich mich fast ein bisschen, dass ich dieses Problem hier reinschreiben muss...

Also ich benutze SuSe 9 und hab den Apache über yast installiert. PHP 4 und MySQL läuft und ich benutze Vhosts.

Eigentlich will ich ja meine Homepage (ist bei NexLink gehostet - kann ich sehr empfehlen!) über einen Subdomain auf meinem Server testen für weitere Updates. Ich habe aber schnell gemerkt das da was nicht stimmt.

Ich hab da mal schnell was ausprobiert aber es geht einfach nicht:
Code: Select all
<a href="<? echo $PHP_SELF; ?>?link=1">Link 1</a> <? if ($link==1) {print "aktiv";} else {print "inaktiv";} ?>


Was mich total irritiert ist: Ich hab phpMyAdmin per FTP auf den Server geladen und das LÄUFT! :shock:
Auch Datumsberechnungen, Include, echo und print laufen um ein Paar beispiele zu nennen.

Kann mir einer bei dieser Sache weiterhelfen???
Gruss McHouse
McHouse
 
Posts: 8
Joined: 08. March 2004 14:56

Postby BlackbirdHakke » 09. March 2004 08:57

Moin..

was soll denn da auch funktionieren? Und was hat das mit phpMyAdmin zu tun?

Woher bekommt die Variable $link den Inhalt? Kann dein Server Kürzel, also < ? statt < ?php ?
Also wenn ich das lokal teste, und $link mit einer Zahl fülle, funktioniert der Vergleich und aktiv bzw. inaktiv wird ausgegeben..

LG, Flo
~ich bin, denke ich~
Ishundia - das RPG
BlackbirdHakke
 
Posts: 89
Joined: 24. February 2004 08:51

Postby Stefan » 09. March 2004 10:19

Morsche,

wird da vielleicht was per Get oder Post übergeben?
Und steht "register_globals" auf "on"?
könnte vielleicht die Ursache sein.


Tipp:
Schon mal was von IF Kurzschreibweise gehört?

Code: Select all
$b = ($a>10) ? "viel" : "wenig";
echo $b;


Oder statt
Code: Select all
<? echo $text ?>

so
Code: Select all
<?=$text ?>


Auf Dein Beispiel angewand würde das so aussehen
Code: Select all
<?php
$link = 1;
?>

<a href="<?=$_SERVER['PHP_SELF']?>?link=1">Link 1</a> <?=($link==1) ? "aktiv": "inaktiv";?>

Was im übrigen "aktiv" ergibt. Und damit tadellos funktioniert. Der Fehler liegt wo anderst.


Gruß
Stefan
User avatar
Stefan
 
Posts: 475
Joined: 26. December 2002 22:36
Location: Mitten in der sonnigen Südpfalz

Postby Stefan » 09. March 2004 10:34

Ach ja, die Lösung Deines Problems:

$_GET['link'] ist die Lösung:

Code: Select all
<a href="<?=$_SERVER['PHP_SELF']?>?link=<?=($_GET['link']==1) ? 0 : 1;?>">Link 1</a> <?=($_GET['link']==1) ? "aktiv": "inaktiv";?>


Gruß
Stefan
User avatar
Stefan
 
Posts: 475
Joined: 26. December 2002 22:36
Location: Mitten in der sonnigen Südpfalz

Gut gemeint aber das ist es nicht...

Postby McHouse » 09. March 2004 13:24

Was meinst du mit: "register_globals" auf "on"?

<?php oder <? macht bei mir keinen unterschied.

Ich habe aus Frust das SuSe neu installiert. Apache 2 und PHP 4 per Yast aktiviert mehr nicht...

Beispiel 1 läuft nich. Alles was hinter dem ? steht ignoriert er.
Code: Select all
<p>PHP Test</p>
<p><a href="index.php?test1=1">TEST 1</a> <? if ($test1==1) {print "erfolgreich";} else {print "gescheitert";} ?></p>


Beispiel 2 läuft.
Code: Select all
<p>PHP Test</p>
<? $test10=1; ?>
<p>TEST 10 <? if ($test10==1) {print "erfolgreich";} else {print "gescheitert";} ?></p>

Kann mir einer erklären was das soll???
McHouse
 
Posts: 8
Joined: 08. March 2004 14:56

Postby BlackbirdHakke » 09. March 2004 13:48

Also in Beispiel 1 würde der Test funktionieren, wenn du das script selbst mit dem Parameter ?test=1 aufrufst. Wenn du es ohne aufrufst, ist die Variable $test1 nicht befüllt.
Lokal getestet:
Wenn ich a.php aufrufe, wird mir gescheitert ausgegeben.
Wenn ich a.php?test=1 aufrufe, wird mit erfolgreich ausgegeben.

Im zweiten Codeschnippsel setzt du $test10 ja schon auf eins, ergo kann nur erfolgreich angezeigt werden.

LG, FLo
~ich bin, denke ich~
Ishundia - das RPG
BlackbirdHakke
 
Posts: 89
Joined: 24. February 2004 08:51

Postby McHouse » 09. March 2004 13:59

BlackbirdHakke wrote:Also in Beispiel 1 würde der Test funktionieren, wenn du das script selbst mit dem Parameter ?test=1 aufrufst. Wenn du es ohne aufrufst, ist die Variable $test1 nicht befüllt.


Sorry aber blöd bin ich nicht! Eben genau das geht nicht:

Wenn ich index.php?test1=1 im Browser eingebe GEHT DAS NICHT!!!
McHouse
 
Posts: 8
Joined: 08. March 2004 14:56

Postby BlackbirdHakke » 09. March 2004 14:13

Naja, WIE du es aufrufst, hast du ja bisher nicht geschildert. ;)
Und was geht stattdessen? Was ist das Ergebnis? Wird der Code einfach nicht ausgeführt und auch ncihts angezeigt? Wird Klartext angezeigt?

Kann es sein dass du php 4.2.x laufen hast?
LG, Flo
~ich bin, denke ich~
Ishundia - das RPG
BlackbirdHakke
 
Posts: 89
Joined: 24. February 2004 08:51

Postby McHouse » 09. March 2004 14:31

BlackbirdHakke wrote:Naja, WIE du es aufrufst, hast du ja bisher nicht geschildert. ;)


Ich dachte das dies hier klar sei wie ich es aufrufe:
Code: Select all
<a href="index.php?test1=1">TEST 1</a>


Ich benutze PHP 4.3.3-13 und der Code wird einfach nicht ausgeführt.
Mehr kann ich dazu auch nich schreiben...
McHouse
 
Posts: 8
Joined: 08. March 2004 14:56

Postby BlackbirdHakke » 09. March 2004 14:43

Nein, ich dachte das wäre Teil des Codes, nicht die Art, wie du es aufrufst. Dann isses klar ;)

Hast du es schon mit Stefans Tipp versucht, $link1 = $_GET['link1']?

Ums mal aus einem adneren Forum zu klauen,wo wir das auch schon hatten:
mit Post: $_POST["varname"] oder $HTTP_POST_VARS["varname"]
bei GET: mit $_GET["varname"] oder $HTTP_GET_VARS["varname"]
für Cookies ($_COOKIE["varname"])
für Session: ($_SESSION["varname"])


Andererseits könntest du auch register_globals auf on stellen. Wenn ich mich nicht irre, dürfte eines von beiden dein Problem lösen.

LG, Flo
~ich bin, denke ich~
Ishundia - das RPG
BlackbirdHakke
 
Posts: 89
Joined: 24. February 2004 08:51

Postby McHouse » 09. March 2004 14:57

Ich denke auch das ich register_globals auf on stellen muss. Bin auch schon heftig am suchen wo ich das machen muss aber ich finde die Datei nicht. :( Ich bin halt noch Linux neuling...
McHouse
 
Posts: 8
Joined: 08. March 2004 14:56

Postby McHouse » 09. March 2004 15:10

ok alles klar...
hab in der php.ini register_globals auf On gestellt und jetzt läuft es...

Danke für eure Mühen und Geduld.
Gruss McHouse
McHouse
 
Posts: 8
Joined: 08. March 2004 14:56

Postby BlackbirdHakke » 09. March 2004 15:25

Oops, sorry, hätt ich dazu sagen sollen, mein Fehler ;) Aber hauptsache es klappt jetzt.

LG, Flo
~ich bin, denke ich~
Ishundia - das RPG
BlackbirdHakke
 
Posts: 89
Joined: 24. February 2004 08:51

Postby Stefan » 09. March 2004 17:34

ok alles klar...
hab in der php.ini register_globals auf On gestellt und jetzt läuft es...

Leicht und verführerisch... ist SIE, ... die Dunkle Seite der Macht.
Nicht brauchen ... wirst .. Du es.
User avatar
Stefan
 
Posts: 475
Joined: 26. December 2002 22:36
Location: Mitten in der sonnigen Südpfalz

Postby McHouse » 09. March 2004 19:28

Stefan wrote:
ok alles klar...
hab in der php.ini register_globals auf On gestellt und jetzt läuft es...

Leicht und verführerisch... ist SIE, ... die Dunkle Seite der Macht.
Nicht brauchen ... wirst .. Du es.


Rede Klartext wen du was willst...
McHouse
 
Posts: 8
Joined: 08. March 2004 14:56

Next

Return to Apache

Who is online

Users browsing this forum: No registered users and 3 guests