Original von Toby
Wie wärs ganz einfach mit intval?
$menge=intval($_POST["menge"]);
if($menge<0) { $menge=0; error=1; }
Denn ---1000 ist für PHP keine Zahl mehr, sondern ein String. Daher schlägt die Abfrage fehl (String ist größer als 0).
Wenn du ein Int erwartest, sorge dafür, das du einen bekommst.
Wenn du gemein sein willst, baust du noch ein abs ein...
ich hab das grade mal getestet, auch inval('---1') wird zu 0 ausgewertet.
Das Problem ist scheinbar, dass PHP von links nach rechts auswertet und sich nach dem zweiten - sagt, dass das Ding keine vernuenftige Zahl sein kann. Warum das spaeter funktioniert, scheint nur dadurch erklaerbar, dass die Datenbank da dann wieder mit umgehen kann.
Das einzige, was ich grade sehe, waere eine Funktion, die solange iteriert, wie sie zwei - am Anfang matcht und in einer Iteration zwei - am Anfang durch eines ersestzt.
Sowas (das da ist ungetested ):
function trim_negations_from_STRING($string) {
while($string{0} == '-' && $string{1} == '-') {
$string = substr($string, 1);
}
return $string;
}
[/code}
MfG
PS: mein kleiner test ist im Anhang zu finden, wenn mir das wer nicht glaubt.