/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Aritmetik problem
Fra : Brian Danielsen


Dato : 14-03-06 13:32

jeg har flg. kode
___________________________________________________
<html>
<head>
   <title>Auto Parts</title>
</head>
<body>
<h1>Autoparts</h1>
<h2>Order Results</h2>
<?
   echo "<p>Order processed at ";
   echo date("H:i, jS F");
   echo "<br />";
   echo "<p>Your order is as follows:";
   echo "<br />";

   $totalqty = 0;         //$totalqty = 0;
   $totalamount = 0.00;   //$totalamount = (double)$totalqty;

   define("TIREPRICE", 100);
   define("OILPRICE", 10);
   define("SPARKPRICE", 4);

   $totalqty = $tireqty + $oilqty + $sparkqty;

   if( $totalqty == 0 )
   {
      echo "You did not order anything on the previous page!<br />";
   }
   else
   {
      if( $tireqty < 10 )
         $discount = 0;
      elseif($tireqty >=10 && $tireqty <= 49)
         $discount = 0.05;
      elseif($tireqty >=50 && $tireqty <= 99)
         $discount = 0.1;
      elseif($tireqty > 100 )
         $discount = 0.15;
      echo $tireqty." tires<br />";
      if ( $oilqty > 0)
      echo $oilqty." bottles of oil<br />";
      if( $sparkqty >0 )
      echo $sparkqty." spark plugs<br />";
   }

   $totalamount = $tireqty * (TIREPRICE - (TIREPRICE * $discount))
+ $oilqty * OILPRICE + $sparkqty * SPARKPRICE;
   $totalamount = number_format($totalamount, 2);
   echo "<br />\n";
   echo "Items ordered:      ".$totalqty."<br />\n";
   echo "Subtotal:            $".$totalamount."<br />\n";
   $taxrate = 0.10;
   $totalamount = $totalamount * (1 + $taxrate);
   $totalamount = number_format($totalamount, 2);
   echo "Total including tax: $".$totalamount."<br />\n";
?>
</body>
</html>
_____________________________________________________
Det virker fint, så længe inputs'ne inputs'ne ikke overstiger 10,
hvis jeg skriver 11 får jeg altid total amount=$1.10.... hvorfor
det...?


på forhånd tak
Brian Danielsen

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

 
 
Michael Zedeler (14-03-2006)
Kommentar
Fra : Michael Zedeler


Dato : 14-03-06 15:22

Brian Danielsen wrote:
> jeg har flg. kode
> ___________________________________________________
> <html>
> <head>
>    <title>Auto Parts</title>
> </head>
> <body>
> <h1>Autoparts</h1>
> <h2>Order Results</h2>
> <?[klip 10 kilometer html-kode]
> ?>
> </body>
> </html>
> _____________________________________________________
> Det virker fint, så længe inputs'ne inputs'ne ikke overstiger 10,
> hvis jeg skriver 11 får jeg altid total amount=$1.10.... hvorfor
> det...?

Et generelt værktøj til fejlsøgning: reducér din kode til et minimalt
eksempel på noget, som ikke virker som det skal. Først når du er nået
dertil, er det tid til at sende et indlæg til usenet. Som regel finder
du problemet undervejs.

Mvh. Michael.
--
Which is more dangerous? TV guided missiles or TV guided families?
Visit my home page at http://michael.zedeler.dk/
Get my vcard at http://michael.zedeler.dk/vcard.vcf

Michael Zedeler (14-03-2006)
Kommentar
Fra : Michael Zedeler


Dato : 14-03-06 15:25

Michael Zedeler wrote:
>> <?[klip 10 kilometer html-kode]
Fejl. Beklager. Slet "html"

Mvh. Michael.
--
Which is more dangerous? TV guided missiles or TV guided families?
Visit my home page at http://michael.zedeler.dk/
Get my vcard at http://michael.zedeler.dk/vcard.vcf

Jesper H (15-03-2006)
Kommentar
Fra : Jesper H


Dato : 15-03-06 10:36

Hej Brian

Mit første gæt ville være, at PHP betragter $tireqty som en
tekst-streng. PHP er rimeligt tolerant overfor det at blande typer
sammen; f.eks. kan den vistnok godt finde ud af, at hvis du prøve at
lægge '11' sammen med '10' (når du beregner $totalqty), at det så
giver 21. Læg mærke til, at jeg skrive '11' og '10' med "gnyffer"
omkring, da de betragtes som tekst-strenge.

Men jeg tror problemet opstår når PHP bliver bedt om at sammenligne
tekststrengen '10' eller '11' med heltals-værdien 10. Set fra et
datalogisk synspunkt, er det vist ikke muligt.

Prøv ca. i starten af din kode at skrive
$tireqty = intval($tireqty);
(det samme for dine andre tal-værdi-variable, naturligvis).
Så burde tekststrengen '10' blive til heltals-værdien 10.

--
Mvh Jesper, http://fdf.dk/landsdel1/


Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408526
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste