Paul,
Über ein Textfeld (z.B. 2) und eine Selectbox (z.B. >=) kann man in meiner Anwendung eine Datenbank abfragen (z.B. 1 >= 2). Als Ergebnis soll true oder false raus kommen.
eval() erwartet gültigen PHP-Code als Parameter, wenn du den Wert eines dynamisch erzeugten Vergleichs haben willst, musst du diesen mit return zurück geben. Beispiel:
<?php
$ein = "3";
$db = "2";
$op = ">=";
$s = eval('return '.$ein.$op.$db.';');
var_dump($s);
?>
WARNUNG: Der an eval() übergebene String wird als PHP-Code auf dem Server ausgeführt, es ist daher unbedingt notwendig, dass du überprüfst, ob wirklich nur Vergleichsoperatoren vom Benutzer eingeben worden sind. Ich würde deswegen auf eval() ganz verzichten und stattdessen eine if- oder switch-Anweisung verwenden:
if ($op = '>') {
$s = $ein > $db;
} elseif ($op = '<') {
$s = $ein < $db;
} elseif ($op = '>=') {
$s = $ein >= $db;
} elseif ($op = '<=') {
$s = $ein <= $db;
} elseif ($op = '==') {
$s = $ein == $db;
} elseif ($op = '!=') {
$s = $ein != $db;
} else {
// Eingabefehler
}
Das lässt sich natürlich prima in eine Funktion kapseln (z.B.: compare ($val1, $val2, $op);)
Schöne Grüße,
Johannes