/ 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
Sammentælling...
Fra : Dennis Munding


Dato : 03-05-07 18:13

Hej NG!

Jeg sidder og fifler med et simpelt webshop-script...

I korte træk er der en tabel med varenr., varebeskrivelse, pris pr. stk,
antal og sub-total.

Ovennævnte har jeg ingen problemer med at få skrevet ud, men det kniber, når
jeg skal have lagt alle sub-totalerne sammen til et total...

En smule kode (klippet ud, men med alle funktioner - $varelager og $pris er
2 array's indeholdende varenr., beskrivelse($varelager) og priser($pris)):
<?
$total = 0;
for($i = 0; $i < sizeof($varelager); $i++) {
?>
<tr>
<td><?=key($varelager);?></td>
<td><?=$varelager[key($varelager)]?></td>
<td><?=$pris[key($pris)]?></td>
<?
$sub_total = ($pris[key($pris)]) * ($produkt[$i]);
next($pris);
$x = $x + $pris[$x];
?>
<td><input type="text" name="antal[<?=$i?>]" value="<?=$produkt[$i]?>"
size="2" maxlength="2" /></td>
[1] <td><? echo $sub_total.",00"; ?></td>
</tr>
<?
next($varelager);
$total = $total + $produkt[$i];
}
$ialt = $sub_total++;
?>
<tr>
<td>Total:</td>
<td><?=$total?></td>
[2] <td><?=$ialt.",00";?></td>
</tr>

[1]: Findes der en måde at sætte et komma og 2 nuller efter et tal?
[2]: Her er mit egentlige problem!


På forhånd tak for alle svar!


Med venlig hilsen
--
Dennis Munding
http://tolkecentret.dk/ - Tolkning, oversættelse, rådgivning og kurser!
http://pe-vagtservice.dk/ -Et sikkert valg til at passe på dine værdier!
http://munding-webdesign.dk/ -Vi ses! - ganske enkelt...



 
 
Dennis Munding (03-05-2007)
Kommentar
Fra : Dennis Munding


Dato : 03-05-07 18:18

Hej igen - glemte lige en detalje...
"Dennis Munding" skrev i en meddelelse :
[SNIP]

> $ialt = $sub_total++;

Ovenstående linje udskriver kun den seneste sub-total - det var blot et skud
i tågen, som ikke virkede efter hensigten (så her ses mine php-evner
tydeligt...).


PS:
Hvis det er til nogen hjælp, så har jeg hentet det oprindelige script fra
bogen "Avanceret PHP" af Christopher Cosentino.
Jeg har dog selv tilføjet kolonnerne med stk.-pris og sub-totaler.


Med venlig hilsen
--
Dennis Munding
http://tolkecentret.dk/ - Tolkning, oversættelse, rådgivning og kurser!
http://pe-vagtservice.dk/ -Et sikkert valg til at passe på dine værdier!
http://munding-webdesign.dk/ -Vi ses! - ganske enkelt...



Martin (03-05-2007)
Kommentar
Fra : Martin


Dato : 03-05-07 19:21

Dennis Munding wrote:
> Hej igen - glemte lige en detalje...
> "Dennis Munding" skrev i en meddelelse :
> [SNIP]
>
>> $ialt = $sub_total++;

Et lille minimalt kursus i tildeling af values til variabler

for($i=0;$i<=10;$i++) {
$out += $i;
echo $out . "<br>";
}

// Returnerer
0
1
3
6
10
15
21
28
36
45
55

Istarten (hvor $i=0) så er $out ikke sat - faktisk burde der komme en
notice her, men det gør der ikke af den grund at vi skriver
+=

+= betyder noget ala
"er variablen ikke sat, så sæt den til value - hvis den ER sat, så
ligger vi tallet til den"

Man kan også med
-= og med *=

Man skal dog passe lidt på med at bruge /= da denne godt kan gå hen og
give en division by zero warning, hvis ikke inputtet bliver kontrolleret
ordentligt inden :)

Den rigtige måde at lave en subtotal på er noget ala
$subtotal += ($pris*$antal_varer);

Antal totale varer kan så udregnes på følgende måde
$total_antal += $antal_varer;

Så behøver man heller ikke i starten af sin løkke skrive
$subtotal = 0;
$total_antal = 0;
// Selvom dette dog aldrig vil skade :)


2 ting som man nok også lige skal overveje lidt engang imellem

for ($i=0; $i < 10; $i++) {
   echo $s = $i+1;
}
// I denne vil der blive udskrevet 12345678910

for ($i=0; $i < 10; $i++) {
   echo $s = $i++;
}
// Denne vil outputte 02468

Kortsagt...
Der er STOR forskel mellem $i++ og $i+1

Forklaring...
Når der skrives $i++ så vil blive lagt 1 til $i.
Men det vil der også når der skrives $i+1, men denne er midlertidig kan
man sige


PS:
Lidt yderligere læsning er manualen altid et godt sted at kigge
<http://de.php.net/manual/en/language.operators.php>
<http://de.php.net/manual/en/language.operators.assignment.php>
<http://de.php.net/manual/en/language.operators.increment.php>

Dennis Munding (05-05-2007)
Kommentar
Fra : Dennis Munding


Dato : 05-05-07 19:57

Hej Martin!
"Martin" skrev i en meddelelse:
> Dennis Munding wrote:
> Et lille minimalt kursus i tildeling af values til variabler
>
> for($i=0;$i<=10;$i++) {
> $out += $i;
> echo $out . "<br>";
> }
>
> // Returnerer
> 0
> 1
> 3
> 6
.... [SNIP]

Ok! Men nu bruger jeg jo ikke +=...?

> Istarten (hvor $i=0) så er $out ikke sat - faktisk burde der komme en
> notice her, men det gør der ikke af den grund at vi skriver
> +=

[SNIP - forklaring af operand-typer...]

> Den rigtige måde at lave en subtotal på er noget ala
> $subtotal += ($pris*$antal_varer);

Vil nok ikke virke (se længere nede...).

> Antal totale varer kan så udregnes på følgende måde
> $total_antal += $antal_varer;

Det virker så ikke - får en "Fatal error: Undefined operand...", som
forsvinder, hvis jeg ændrer += til =... (men så bliver der ikke udskrevet
noget!)

> Så behøver man heller ikke i starten af sin løkke skrive
> $subtotal = 0;
> $total_antal = 0;
> // Selvom dette dog aldrig vil skade :)

Det er jeg så p.t. nødt til alligevel...

> 2 ting som man nok også lige skal overveje lidt engang imellem
>
> for ($i=0; $i < 10; $i++) {
> echo $s = $i+1;
> }
> // I denne vil der blive udskrevet 12345678910
>
> for ($i=0; $i < 10; $i++) {
> echo $s = $i++;
> }
> // Denne vil outputte 02468
>
> Kortsagt...
> Der er STOR forskel mellem $i++ og $i+1

Jeg kan så slet ikke få udskrevet noget, hvis jeg nøjes med et +...

> Forklaring...
> Når der skrives $i++ så vil blive lagt 1 til $i.
> Men det vil der også når der skrives $i+1, men denne er midlertidig kan
> man sige
>
>
> PS:
> Lidt yderligere læsning er manualen altid et godt sted at kigge

Som desværre endnu ikke findes komplet på dansk, hvilket er en skam, da jeg
(og sikkert også andre!?) ikke forstår så meget af det tekniske!
Så indtil den dag (hvis den kommer) at manualen findes komplet på dansk, så
må jeg købe diverse litteratur (som desværre ikke altid fungerer lige godt -
især når der er skrive- og tegnsætningsfejl i!) og følge godt med i
nyhedsgrupperne...

Derudover, så har jeg en mistanke om, at du måske har misforstået mit
spørgsmål...?

Det jeg ønsker er, at tælle alle sub-totaler (pris!) sammen, og udskrive det
i en total - sammentælling af antal varer har jeg allerede, og det fungerer
upåklageligt...

Jeg har forsøgt at overføre koden til pris-sammenlægningen, men noget må jeg
gøre galt, for enten udskriver det ingenting, eller også udskriver det kun
den sidste sub-total...

I tilfælde af, at du skulle have mod på at kigge på det, og prøve at skære
det ud i pap for mig, så har jeg lagt koden op her (pastebin er nede i
øjeblikket grundet vedligeholdelse - både den danske og den engelske
version.):
http://munding-webdesign.dk/Sessions/session_cart_checkout.phps

Skulle du få lyst til at se koden i aktion, så klik ind på denne side:
http://munding-webdesign.dk/Sessions/session_cart.php

Indtast et tilfældigt navn og en ligegyldig email og klik på "Send"...
Det første skærmbillede er "bestillings-siden" - bestil et tilfældigt antal
af en af varerne og klik på "Læg i indkøbsvogn", og derefter på "Check
ud"...

Så kommer du til "problem-siden"...

Nederste linje i tabellen, yderst til højre - der vil jeg gerne have det
totale beløb til at stå, men som du vil opdage - hvis du besøger siden - så
står der kun ",00"...

På forhånd mange tak for hjælpen!


Med venlig hilsen
--
Dennis Munding
http://tolkecentret.dk/ - Tolkning, oversættelse, rådgivning og kurser!
http://pe-vagtservice.dk/ -Et sikkert valg til at passe på dine værdier!
http://munding-webdesign.dk/ -Vi ses! - ganske enkelt...



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408925
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste