Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Was ist falsch an dieser if/elseif-schleife [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
brauche Webseite ideal für Vereine und Firmen
- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Was ist falsch an dieser if/elseif-schleife


 
Kiruma
29-10-2003, 19:58 
 
Hi,

was ist daran falsch? Ich finde den Fehler nicht, d.h. es trifft immer der letzte Fall bei "else" ein, obwol alle Variablen richtig übergeben werden.

function puckdrittel($puckbesitz_team, $puck_drittel, $team_heim, $team_gast, $passanzahl )
{
//echo "Vor dem Puckdrittel: Puckdrittel: $puck_drittel, Team: $puckbesitz_team, Pass: $passanzahl<br>";

if ( $puckbesitz_team == $team_heim AND $puck_drittel == $team_heim AND $passanzahl >= 2
OR
$puckbesitz_team == $team_gast AND $puck_drittel == $team_gast AND $passanzahl >= 2 ) {

$puckdrittel = 'mittel';
}

elseif ( $puckbesitz_team == $team_heim AND $puck_drittel == 'mittel' AND $passanzahl >= 2 ) {

$puckdrittel = $team_gast;
}

elseif ( $puckbesitz_team == $team_gast AND $puck_drittel == 'mittel' AND $passanzahl >= 2 ) {

$puckdrittel = $team_heim;
}

elseif ( $puckbesitz_team == $team_heim AND $puck_drittel == $team_gast AND $passanzahl > 2
OR
$puckbesitz_team == $team_gast AND $puck_drittel == $team_heim AND $passanzahl > 2 ) {

$wirdgeschossen = rand(0,3);
}

else { echo "Fehler!"; }

$_SESSION['puck_drittel'] = $puck_drittel;
$_SESSION['wirdgeschossen'] = $wirdgeschossen;
//echo "Puckdrittel nach Funktion: $puck_drittel, Team: $puckbesitz_team, Schuss: $wirdgeschossen.<br>";
}

 
Payne_of_Death
29-10-2003, 20:45 
 
was ist daran falsch? Ich finde den Fehler nicht, d.h. es trifft immer der letzte Fall bei "else" ein, obwol alle Variablen richtig übergeben werden.


Ehm, woher soll ich bitte schön wissen bei dieser Beschreibung woher der Fehler rührt? Brauch ich dazu eine Glaskugel oder ein Medium oder wie?

Du redest von Schleifen ich seh keine ;)

Fakten die zu klären sind:
- Welche Parameter bzw. Variablen erhält die Funktion?
- Die ganzen Bedingungen usw. ausklammern und überprüfen ob die übergebenen Parameter Inhalte haben....

- Wenn du Inhalte hast dann erklär was gemacht werden soll und was nicht tut.

-> Entweder werden keine Werte übergeben oder aber kein logisches Konstrukt trifft zu, da es einen Logikfehler gibt....

 
Kiruma
29-10-2003, 21:12 
 
Di Funktion wird wie folgt aufgerufen:

puckdrittel($_SESSION['puckbesitz_team'], $_SESSION['puck_drittel'], $team_heim, $team_gast, $_SESSION['passanzahl'] );

und die Parameter sind auch alle da, werden auch alle richtig angezeigt, aber es scheint wirklich keine Übereinstimmung einzutreffen, so dass nur "else" übrig bleibt.

 
MelloPie
29-10-2003, 21:44 
 
ich glaub Du machst einfach ein paar zuwenige klammern

 
Kiruma
29-10-2003, 22:52 
 
Wenn ich zu wenige Klammern mache, dann würde das überhaupt nicht funktionieren, oder?

Aber das Skript funktioniert ja, weil wenigstens (leider immer) "echo "Fehler";" ausgeführt wird.

 
Wurzel
29-10-2003, 23:31 
 
in deinem auskommentierten "echo" listest du nur 3 von 5 variablen.
steht auch was in $team_heim, $teamgast ?

wenn ja, zeig doch mal, was in den einzelnen vars steht.

 
wahsaga
30-10-2003, 09:40 
 
btw: "if-schleifen" (http://www.dclp-faq.de/q/q-terminologie-if.html)

 
Kiruma
30-10-2003, 09:57 
 
Jaja, ich weiß, dass es keine Schleife ist, deshalb is ja in einer Funktion und diese Funktion wird aus einer for-Schleife aufgerufen. Aber trotzdem weiß ich immernoch nicht, warum die Bedingung nicht erfüllt wird, obwohl er mir alles genau anzeigt , d.h. die Bedingungen wie z.B.

$puckbesitz_team == $team_heim
Loewenzahn == Loewenzahn

eintreffen, aber es keine Veränderung gibt.

 
mrhappiness
30-10-2003, 13:15 
 
erste zeile der funktion:echo '$puckbesitz_team: -'.$puckbesitz_team.'-<br />';
echo '$puck_drittel: -'.$puck_drittel.'-<br />';
echo '$puckbesitz_team: -'.$puckbesitz_team.'-<br />';
echo '$team_heim: -'.$team_heim.'-<br />';
echo '$team_gast: -'.$team_gast.'-<br />';
echo '$team_gast: -'.$team_gast.'-<br />';
echo '$passanzahl: -'.$passanzahl.'-';ausgabe?

 
Kiruma
30-10-2003, 15:20 
 
Ausgabe:

$puckbesitz_team: -Loewenzahn-
$puck_drittel: -mittel-
$puckbesitz_team: -Loewenzahn-
$team_heim: -Loewenzahn-
$team_gast: -Pusteblume-
$team_gast: -Pusteblume-
$passanzahl: -1-Fehler!

und weiter unten:

$puckbesitz_team: -Loewenzahn-
$puck_drittel: -mittel-
$puckbesitz_team: -Loewenzahn-
$team_heim: -Loewenzahn-
$team_gast: -Pusteblume-
$team_gast: -Pusteblume-
$passanzahl: -3-

Da sollte eigentlich eine Bedingung erfüllt sein, oder?

 
mrhappiness
30-10-2003, 15:23 
 
Original geschrieben von Kiruma
Ausgabe:

$puckbesitz_team: -Loewenzahn-
$puck_drittel: -mittel-
$puckbesitz_team: -Loewenzahn-
$team_heim: -Loewenzahn-
$team_gast: -Pusteblume-
$team_gast: -Pusteblume-
$passanzahl: -1-Fehler!

Da sollte eigentlich eine Bedingung erfüllt sein, oder? und welche?

 
Kiruma
30-10-2003, 15:31 
 
Original geschrieben von Kiruma


und weiter unten:

$puckbesitz_team: -Loewenzahn-
$puck_drittel: -mittel-
$puckbesitz_team: -Loewenzahn-
$team_heim: -Loewenzahn-
$team_gast: -Pusteblume-
$team_gast: -Pusteblume-
$passanzahl: -3-



elseif ( $puckbesitz_team == $team_heim AND $puck_drittel == 'mittel' AND $passanzahl >= 2 )

Diese sollte meines Wissens erfüllt sein.

 
mrhappiness
30-10-2003, 15:35 
 
Original geschrieben von Kiruma
elseif ( $puckbesitz_team == $team_heim AND $puck_drittel == 'mittel' AND $passanzahl >= 2 )

Diese sollte meines Wissens erfüllt sein. ja, aber da vorher schon die ausgabe "Fehler" kommt, hat er das if-konstrukt ja bereits abgearbeitet oder?

und da nach dieser zweiten ausgabe nicht mehr der text "Fehler" kommt, denke ich mal, dass er da was gearbeitet hat

 
Kiruma
30-10-2003, 15:49 
 
So, endlich habe ich den Fehler gefunden. Ganz einfach:

$puckdrittel sollte eigentlich $puck_drittel heißen.

Wieviel Leute haben da nicht danach gefragt, lol. Okay -> Thema beendet.

Vielen Dank an alle.


Alle Zeitangaben in WEZ +2. Es ist jetzt 15:58 Uhr.