ternärer Operator will nicht

Hallo Forum,

Bei folgendem Codeschnipsel beschwert sich der PHP-Parser:

echo " (".mysql_num_rows($result2) . (mysql_num_rows($result2)=1)? "Bild":"Bilder". " vorhanden! ". (mysql_num_rows($result2)=1)?"Bild wird":"Bilder werden"." gelöscht)"; Der Parser sagt immer: Fatal error: Can’t use function return value in write context in C:\xampp\htdocs\test\include\rubriken_einfuegen_del.php5 on line 20

Danke für Eure Hilfe
thuemmy

Ternärer Operator - machts Spass, mit Fachausdrücken um sich zu werfen? :wink:
[PHP]
mysql_num_rows($result2)=1[/PHP]
Du meinst ==, = ist Zuweisung.

Ich weiß gar nicht, wie der auf deutsch heißt :grin: Dreier-Operator?

Mensch, das mit der Zuweisung hätte mir auch wirklich selber auffallen können :sad:

Danke und Gruß
thuemmy

Dass da = verwendet wird, ist aber kein Fehler. Weist man auf die Weise 0 zu, ist das Konstrukt false, ansonsten true. Hier wird immer 1 zugewiesen, dann ist das immer true.

Sollte das wirklich der Auslöser des Fehlers gewesen sein? Ich würde eher vermuten, dass da Klammern drum sollten.

echo " (".mysql_num_rows($result2) . [B]([/B](mysql_num_rows($result2)=[B]=[/B]1)? "Bild":"Bilder"[B])[/B]. " vorhanden! ". [B]([/B](mysql_num_rows($result2)=[B]=[/B]1)?"Bild wird":"Bilder werden"[B])[/B]." gelöscht)";

So, hier bin ich wieder.

Danke Efchen, die Klamern waren es, aber auch der logische Fehler mit der Zuweisung.

Gruß thuemmy

Jo. Dacht ich mir. Die Zuweisung war sicher nicht so, wie Du das gedacht hattest, die allein hat aber den Fehler nicht ausgelöst.

Schön.

Wenn das so gedacht gewesen wäre (mit der Zuweisung) dann sollte ich mir nochmal grundlegende Gedanken über mein logisches Denken und die Programmiererei als solches machen :grin: Mein gnu-C-Compiler hätte mich immerhin dezent drauf hingewiesen (Option -Wall), dass da irgendwas eventuell nicht richtig sein könnte :grin:

Gruß thuemmy

Ich weiß, dass man sich bei Perl alle Warnungen ausgeben lassen kann, gibts so eine Option vielleicht auch bei PHP?

error_reporting(E_ALL);

[php]$anz = mysql_num_rows($result2);
echo " (" . $anz .
( $anz == 1 ? „Bild“ : „Bilder“ ) .
" vorhanden! " .
( $anz == 1 ? „Bild wird“ : „Bilder werden“ ) .
" gelöscht)";[/php]

bring doch mal n bissel ordnung in deinen code -.-’

Bringt in diesem Fall nicht viel, da $anz = 1 genauso richtig ist, wie $anz == 1, zumindest was die Syntax betrifft. Nur die Logik ist komplett anders. Anders als der gnu-Compiler (er weißt bei der Option -Wall auf eventuelle logische Fehler hin) fehlt das beim error_reporting() in PHP.

@ slibbo - Hab jetzt tatsächlich mal Ordnung in den Code gebracht. Ist auf jeden Fall einfacher zu lesen, wenn ich da nochmal was machen möchte :wink:

Gruß thuemmy