Seite 1 von 1

probleme mit if abfrage

Verfasst: 30.09.2004 17:58
von Shadowman
so langsam bin ich am verzweifeln, da schriebt man 4 monate nichts in php, schon streikt alles.

ich versuch grad aus spass nen kleinen vokabel "überprüfer zu schreiben, doch bei der korrektur, ob es richtig übersetzt wurde streikt mein script total.

kurz zu den variablen:
$word_0 = "ich";
$word_0_translation = "ich";
$word_0_to_translate = "i";

$word_1 = "du";
$word_1_translation = "du";
$word_1_to_translate = "you";

$word_2 = "er";
$word_2_translation = "er";
$word_2_to_translate = "he";

$word_3 = "sie";
$word_3_translation = "sie";
$word_3_to_translate = "she";

Code: Alles auswählen

for($i=0;$i<$array_size;$i++)
{
	$word[$i]['translation'] = $HTTP_POST_VARS["word_".$i."_translation"];
	$word[$i]['translated'] = $HTTP_POST_VARS["word_".$i];
	$word[$i]['to_translate'] = $HTTP_POST_VARS["word_".$i."_to_translate"];
	
	echo "Sie haben ".$word[$i]['to_translate']." als ".$word[$i]['translated']." übersetzt.";
	
	if($word[$i]['translation'] == $word[$i]['translated'])
	{ 
	$ausgabe[$i] = "<font color='green'>richtig</font>"; 
	}
	else
	{ 
	$ausgabe[$i] = "<font color='red'>falsch</font>"; 
	}
	
	echo "Das war ".$ausgabe[$i].".";
	$ausgabe[$i] = "";
	echo " ".$word[$i]['translation'];
	echo "<br>";
}
Das Problem ist, dass nur das letzte wort als korrekt erkannt wird und alle von 0-2 werden als falsch erkannt. Woran liegt das?

Ich hoffe jemand findet den fehler, denn ich kann nichts falsches entdecken -.-

Verfasst: 30.09.2004 18:35
von Shadowman
ich bin kurz vorm verzweifeln, das problem muss an der if abfrage liegen, aber wo????
wenn ich mir beide variablen, einmal die vom user eingegebene und zum anderen die, mit der verglichen wird sind identisch, ich habe alle leerzeichen von beiden strings entfernen lassen aber er erkennt immer nur die letzte vokabel als richtig, der rest ist falsch, wo liegt den der fehler???????????

Verfasst: 30.09.2004 18:35
von PhilippK
Hast du schon mal geprüft, ob die Variablen auch wirklich übergeben wurden?

Gruß, Philipp

Verfasst: 30.09.2004 18:43
von Shadowman
ja, werden sie. ich habe mal den code

Code: Alles auswählen

echo $word[$i]['translated']." = ".$word[$i]['translation'];
darangehängt und beide waren identisch, ich bin wirklich am verzweifeln :(

[EDIT]
Das problem scheint doch irgendwie bei dem übergeben der strings zu liegen. Kurz zur Erklärung was die scripte machen. Als erstes wird eine Datei ausgelesen, in der in jeder zeile ein englisches wort, gefolgt von einem = und der deutschen übersetzung(keine leerzeichen vorhanden an den enden.
Als nächstes wird die datei mit file() eingelesen:

Code: Alles auswählen

$voc_array = file($datei);
und dann mit explode:

Code: Alles auswählen

for($i=0;$i<count($voc_array);$i++)
{
	$words_array[$i] = explode("=",$voc_array[$i]);
}
aufgeteilt. und genau hier liegt das problem. irgendwie kommen zeilenumbrüche und leerzeichen in die strings rein, die ich mit

Code: Alles auswählen

$words_array[$i][1] = nl2br($words_array[$i][1]);
trim($words_array[$i][1]);
$words_array[$i][1] = ereg_replace("<br />", "", $words_array[$i][1]);
einfach nicht rausbringe. is echt zum verzweifeln.

Verfasst: 30.09.2004 19:42
von PhilippK
Damit wird das auch nie klappen können:

Code: Alles auswählen

trim($words_array[$i][1]);
Der konvertierte String landet im Nirvarna...

Code: Alles auswählen

$words_array[$i][1] = trim($words_array[$i][1]);
ist da erfolgsversprechender...

Gruß, Philipp

Verfasst: 30.09.2004 19:46
von Shadowman
hm, stimmt irgendwie. da hätte ich auch selber draufkommen können, vielen dank für den hinweis, jetzt funktioniert alles :)