WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   PHP: Hohe Zahlenwerte vergleichen ==> falsches Ergebnis (http://www.wcm.at/forum/showthread.php?t=213007)

3of4 29.03.2007 14:21

PHP: Hohe Zahlenwerte vergleichen ==> falsches Ergebnis
 
Mein Problem: PHP erzeugt mir bei zwei Zahlenvergleichen (mit zwei sehr hohen Zahlen) zu oft wahr!
Und zwar jedesmal wenn ich
400000000000000000000301 mit
400000000000000000000301 vergleichen will (identisch) liefert die Abfrage wahr, aber dann anschließend gleich auch für
400000000000000000000301 mit 400000000000000000000302!
in einem anderen Fall (ich vergleich die ID 400000000000000000000300 mit allen anderen) liefert er nur bei 400000000000000000000300 wahr und sonst überall falsch. Sind die Nummernbereiche einfach zu groß (es gibt so viele PHP-Tutorials, dass man dabei keine brauchbaren technischen Beschreibungen findet) oder wieso tritt der Fehler gerade bei diese Kombination auf?

Code:

400000000000000000000301 400000000000000000000300
<option value='400000000000000000000300' >Wagner Patrick</option>
400000000000000000000301 400000000000000000000301 1
<option value='400000000000000000000301' selected='selected'>XXXXXXXXXXXXX Caterina</option>
400000000000000000000301 400000000000000000000302 1
<option value='400000000000000000000302' selected='selected'>XXXXXXXXXXXXX Manuel</option>
400000000000000000000301 653517
<option value='652347' >XXXXXXXXXXXXX GERHARD</option>
400000000000000000000301 211532
<option value='223532' >XXXXXXXXXXXXX Manfred</option>

Code:

                        <form action='lwpro.php' method='POST'>
                        <select name='userid' size='20' onChange='submit();' <?=$disable_userid ?>>
                            <?php
                                $sql='SELECT ANMELDE_BENUTZER_ID,ANMELDE_BENUTZER_ZUNAME, ANMELDE_BENUTZER_VORNAME FROM anmelde_benutzer where
                                rechte_uid_stufe(ANMELDE_BENUTZER_LOGIN,ANMELDE_BENUTZER_PASSWORT,'.$statuser.') > 29';
                                // RICHTIGE HÖHE FEHLT: 29 hätte anonymous, 30 normaler User!
                                $stmt = OCIParse($connection, $sql);
                                OCIExecute($stmt);

                                while (OCIFetch($stmt)) {
                                    $selected='';
echo "\n".$userid . " " . OCIResult($stmt, 'ANMELDE_BENUTZER_ID') . " " . ($userid==OCIResult($stmt, 'ANMELDE_BENUTZER_ID'));
                                    if($userid==OCIResult($stmt, 'ANMELDE_BENUTZER_ID')){
                                        $selected="selected='selected'";
                                    }
                                    echo "\n<option value='" . OCIResult($stmt, 'ANMELDE_BENUTZER_ID') . "' "
                                    . $selected . ">" . OCIResult($stmt, 'ANMELDE_BENUTZER_ZUNAME')
                                    . " " . OCIResult($stmt, 'ANMELDE_BENUTZER_VORNAME') . "</option>";
                                }
                                OCIFreeStatement($stmt);
                            ?>
                        </select>


zAPPEL 29.03.2007 14:56

Hier steht etwas dazu, evt. hilft dir das weiter?

http://www.hudzilla.org/phpbook/read.php/3_12_2

Aber wieso hast du überhaupt so riesige Zahlen? Haut die ganzen Nullen am besten einfach raus ;)

lg zAPPEL

3of4 29.03.2007 15:55

Das ist eine laufende Sequence (Oracle) mit der ich nichts zu tun habe, ich soll nur eine kompatible Erweiterung schreiben

zAPPEL 29.03.2007 16:26

Wie in dem Artikel auch angesprochen mit
http://at.php.net/manual/de/function.bccomp.php
sollte es funktionieren.

void 29.03.2007 19:37

oder als string: http://at.php.net/manual/de/function.strcmp.php

3of4 29.03.2007 19:52

Herzlichen Dank!
Auf die Stringlösung hätte ich selbst kommen können, habe ich ja im Projekt woanders schon einige Male verwendet :/


Alle Zeitangaben in WEZ +2. Es ist jetzt 03:04 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag