[Gelöst] Simple if() Bedingung in Block schlägt fehl...
am 30.11.2009 - 22:43 Uhr in
Hallo!
Ich habe ein kurioses Problem. Wahrscheinlich fehlt mir einfach das nötige Hintergrundwissen, um zu merken was an folgendem Sachverhalt falsch ist.
Ich möchte innerhalb eines Block eine kleine if() Bedingung einbringen, die zwei Variablenwerte miteinander vergleicht.
<?php
if($row[field_bericht_torewir_value] > $row[field_bericht_toredie_value]) {
echo "JA!";
} else {
echo "NEIN!"
}
echo $row[field_bericht_torewir_value;
echo $row[field_bericht_toredie_value;
?>Dieser Vergleich landet immer im else Block! Gebe ich die Variablen via echo aus, enthalten sie jedoch die gewünschten Werte. So erhalte ich zum Beispiel folgende Ausgabe mit obigem Beispiel:
NEIN!
7
1
7 ist größer 1 müsste aber JA! ergeben ;).
HILFE! DANKE!
- Anmelden oder Registrieren um Kommentare zu schreiben

Das sind vermutlich Texte,
am 30.11.2009 - 23:14 Uhr
Das sind vermutlich Texte, also vor dem Vergleich in Integer umwandeln, dann sollte das gehen.
Beste Grüße
Werner
$foo = (int)$foo; $foo =
am 30.11.2009 - 23:56 Uhr
$foo = (int)$foo;
$foo = intval($foo);
Also einmal das Typecasting, und einmal die Funktion.
Teste mal:
<?phpif((int)$row[field_bericht_torewir_value] > (int)$row[field_bericht_toredie_value]) {
echo "JA!";
} else {
echo "NEIN!"
}
echo $row[field_bericht_torewir_value;
echo $row[field_bericht_toredie_value;
?>
das ist denk ich mal von wla gemeint.
----------------------------------------
Nur Wer Selbst Brennt, Kann Das Feuer In Anderen Entfachen! - http://cybercore.de
Danke erstmal für diesen
am 01.12.2009 - 00:27 Uhr
Danke erstmal für diesen Tip! Leider funktioniert es noch nicht ;(. Ich habe den Code jetzt wie folgt umgebaut. Er landet immer noch IMMER im "else".
<?php
$a = (int)$row[field_bericht_torewir_value];
$b = (int)$row[field_bericht_toredie_value];
echo gettype($a);
echo gettype($b);
if($a > $b) {
echo "JA!";
} else {
echo "NEIN!";
}
?>
gettype() liefert mir für beide Aufrufe "integer" zurück. Noch jemand eine Idee?
Sorry, aber ich habe wohl
am 01.12.2009 - 09:15 Uhr
Sorry, aber ich habe wohl nicht genau genug hingesehen, denn es ist ein leicht zu übersehender Fehler. Versuch doch mal
<?phpif($row['field_bericht_torewir_value'] > $row['field_bericht_toredie_value']) {
echo "JA!";
} else {
echo "NEIN!";
}
?>
Der Fehler liegt in den Indexwerten des Arrays. Bei Texten als Index müssen die gequotet werden.
Beste Grüße
Werner
Danke! Das hat mich schon
am 04.12.2009 - 12:10 Uhr
Danke! Das hat mich schon mal näher an die Fehlerursache gebracht. Es liegt jetzt folgender Sachverhalt vor:
Ich dachte zunächst an führende Nullen, in der Datenbank stehen allerdings keine, und müsste er diese dann nicht auch bei der Ausgabe mit echo anzeigen?
Danke!
Du hast den Clou nicht
am 04.12.2009 - 12:31 Uhr
Du hast den Clou nicht gesehen: Du mußt die Feldnamen in single-quotes setzen. Wenn Du ein Array mit nicht numerischen Keys belegst ist das notwendig, auch wenn es oft nicht danach aussieht. Der Rest ist OK.
Beste Grüße
Werner
Hallo! Habe mittlerweile das
am 12.12.2009 - 15:05 Uhr
Hallo!
Habe mittlerweile das Problem lösen können. Eure Hinweise haben dabei sehr gut geholfen.
Das Problem war letztendlich, dass das Feld welches ich ausgelesen habe ein String war, der zusätzlich zum Wert noch html tags enthielt...
Nach Entfernen dieser mit Hilfe von strip_tags() konnte ich dann auch in einen int Wert umwandeln.
Danke Euch!