[PHP + MySQL] Decimal(16,2) > 0

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Dit is werkelijk het simpelste wat ik ooit gedaan heb in PHP en het werkt niet! Om gek van te worden!

De kwestie: Uit een MySQL loop komt een tarief in Decimal(16,2)-formaat. Wat probeer ik?
PHP:
1
2
3
4
if ($foo[totaal] > 0)
    echo "$foo[totaal] > 0 \n";
else
    echo "$foo[totaal] < 0 \n";
En welk resultaat krijg ik?
PHP:
1
2
3
4
5
6
7
8
9
-66.00 < 0.00
125.00 > 0.00
190.00 < 0.00
125.00 > 0.00
125.00 < 0.00
75.00 > 0.00
-953.50 < 0.00
68.00 < 0.00
234.00 < 0.00
De getoonde bedragen kloppen, maar het GROTER DAN of KLEINER DAN klopt echt voor geen meter... :?

[ Voor 24% gewijzigd door Verwijderd op 26-01-2005 14:09 ]


Acties:
  • 0 Henk 'm!

  • Cavorka
  • Registratie: April 2003
  • Laatst online: 27-03-2018

Cavorka

Internet Entrepreneur

Verwijderd schreef op woensdag 26 januari 2005 @ 14:04:
PHP:
1
2
3
4
if ($foo[totaal] > 0) )
    echo "> 0.00 = $foo[totaal] \n";
else
    echo "< 0.00 = $foo[totaal] \n";
En welk resultaat krijg ik?[php]
Wat doet dat extra haakje achter > 0) ?

En zet de error_reporting eens op E_ALL, want zelfs met dit kleine stukje code krijg je al notices/warnings.

[ Voor 52% gewijzigd door Cavorka op 26-01-2005 14:10 ]

the-blueprints.com - The largest free blueprint collection on the internet: 50000+ drawings.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Cavorka schreef op woensdag 26 januari 2005 @ 14:08:
Wat doet dat extra haakje achter > 0) ?
Foutje in mijn voorbeeld. Ik heb het voorbeeld even aangepast. Probleem bestaat overigens nog steeds.

Acties:
  • 0 Henk 'm!

Verwijderd

PHP:
1
2
3
4
5
6
7
8
9
10
<?php
if ($foo['totaal'] > 0)
{
    echo $foo['totaal']." > 0 \n";
}
else
{
    echo $foo['totaal']." < 0 \n";
}
?>



Probeer dit is.
Variabele buiten quotes, en die de array moet met weer met quotes dacht ik. ;)

[ Voor 61% gewijzigd door Verwijderd op 26-01-2005 14:19 . Reden: Eindelijk goed neergezet ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Cavorka schreef op woensdag 26 januari 2005 @ 14:08:
En zet de error_reporting eens op E_ALL, want zelfs met dit kleine stukje code krijg je al notices/warnings.
Levert ook niets op. :'(

Acties:
  • 0 Henk 'm!

Verwijderd

en dit?
PHP:
1
2
3
4
5
6
<?
if ($foo[totaal] > 0)
    echo "{$foo['totaal']} > 0 \n";
else
    echo "{$foo['totaal']} < 0 \n";
?>


bron:
http://www.php.net/echo (De Handleiding... duh)

[ Voor 52% gewijzigd door Verwijderd op 26-01-2005 14:46 ]


Acties:
  • 0 Henk 'm!

  • Marijn_S
  • Registratie: Februari 2001
  • Niet online
Ziet hij die bedragen misschien als strings in plaats van nummers? Cast hem even als (float) anders.

Al zou PHP dat automatisch moeten doen dacht ik...njah, probeer het even :P

[ Voor 29% gewijzigd door Marijn_S op 26-01-2005 14:21 ]

System specs - Ik word blij van knipperende lichtjes.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
PHP:
1
2
3
4
5
setType($factuur['totaal'], "float");
if ($factuur['totaal'] > 0)
    echo $factuur['totaal'] . ' > 0.00 <br>';
else
    echo $factuur['totaal'] . ' < 0.00 <br>';

PHP:
1
2
3
4
5
6
7
-66 < 0.00
125 > 0.00
190 < 0.00
125 > 0.00
125 < 0.00
75 > 0.00
-953.5 < 0.00
Nog steeds niet dus :'(

[ Voor 33% gewijzigd door Verwijderd op 26-01-2005 14:40 ]


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 02:21

Janoz

Moderator Devschuur®

!litemod

Kijk eens in je html source ipv de browser. Misschien probeert je browser wel tags die er niet zijn te interpreteren. Volgende keer gewoon ff & lt; en & gt; gebruiken.

@nme:
Probleem is eerder mijn html rechten. De & amp; wordt op 1 of andere manier sowieso al vervangen dus ik kan ze niet zo maken zoals jij ze maakt :'(

[ Voor 36% gewijzigd door Janoz op 26-01-2005 15:28 ]

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Janoz schreef op woensdag 26 januari 2005 @ 14:38:
Kijk eens in je html source ipv de browser. Misschien probeert je browser wel tags die er niet zijn te interpreteren. Volgende keer gewoon ff < en > gebruiken.
&lt; en &gt; dus. ;) (Handig dat dat soort dingen geparset wordt. ;))

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Janoz schreef op woensdag 26 januari 2005 @ 14:38:
Kijk eens in je html source ipv de browser. Misschien probeert je browser wel tags die er niet zijn te interpreteren. Volgende keer gewoon ff < en > gebruiken.
Dat is het ook niet, want mijn 'output' is de broncode.

Acties:
  • 0 Henk 'm!

Verwijderd

de ouput van je php-code is de php-code zelf? ik ben niet meer mee... heb je trouwens mijn oplossing van enkele posts hierboven al geprobeerd?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Verwijderd schreef op woensdag 26 januari 2005 @ 14:50:
de ouput van je php-code is de php-code zelf? ik ben niet meer mee... heb je trouwens mijn oplossing van enkele posts hierboven al geprobeerd?
Nee, de broncode van de HTML...

Er is niets mis met de echo. Er is iets mis met de vergelijking.

[ Voor 12% gewijzigd door Verwijderd op 26-01-2005 14:57 ]


Acties:
  • 0 Henk 'm!

  • Marijn_S
  • Registratie: Februari 2001
  • Niet online
Laat anders iets meer zien van de code er om heen als het kan. Erg raar probleem iig :)
En var_dump() hem anders ook nog even, per getal.

[ Voor 23% gewijzigd door Marijn_S op 26-01-2005 15:01 ]

System specs - Ik word blij van knipperende lichtjes.


Acties:
  • 0 Henk 'm!

  • FendtVario
  • Registratie: Januari 2002
  • Laatst online: 12-05 22:30

FendtVario

The leader drives Vario!

Hoe wordt de array factuur samengesteld? Het volgende geeft bij mij altijd wel de goede uitkomst.

PHP:
1
2
3
4
5
$factuur = array("totaal" => -0.5, "factuurnr" => 2);
if ($factuur['totaal'] > 0)
    echo $factuur['totaal'] . ' > 0.00 <br>';
else
    echo $factuur['totaal'] . ' < 0.00 <br>';

www.fendt.com | Nikon D7100 | PS5


Acties:
  • 0 Henk 'm!

Verwijderd

"float" (only possible since PHP 4.2.0, for older versions use the deprecated variant "double")
Bron: http://nl2.php.net/manual/en/function.settype.php
Je weet maar nooit.
Probeer anders met gettype om te kijken of het echt wel een float is.

Acties:
  • 0 Henk 'm!

Verwijderd

een andere tip, misschien moet je de float afronden voordat je de vergelijking gaat doen, dit is blijkbaar soms nodig:

dus:

PHP:
1
2
3
4
5
6
<?
if (round($factuur['totaal'],2) > 0)
    echo $factuur['totaal'] . ' > 0.00 <br>';
else
    echo $factuur['totaal'] . ' < 0.00 <br>';
?>


ahja, de bron: http://be2.php.net/manual/en/language.types.float.php (ergens tussen de comments)

[ Voor 29% gewijzigd door Verwijderd op 26-01-2005 15:08 ]


Acties:
  • 0 Henk 'm!

Verwijderd

even oneven lijkt mij, -even is niet waar in deze statement +even wel, -oneven is waar, +oneven niet waar en anders probeer de vergelijking met 0.00

[ Voor 17% gewijzigd door Verwijderd op 26-01-2005 15:34 ]

Pagina: 1