|
| Lægge tal sammen Fra : Henrik Pedersen |
Dato : 12-05-05 23:28 |
|
Hej NG.
Først -> Det er efterhånden en krig siden jeg har rodet med PHP, så er ikke
lige så skarp (med andre ord - opfat mig næsten som nybegynder).
Jeg arbejder med en lille side til internt brug. En side, hvor jeg gerne
ville lægge nogle tal sammen, som så giver et subtotal i nederste felt -
altså lige som et simpelt regnestykke.
Lad os sige:
Felt A har værdien 5
Felt B har værdien 4
Det skal så lægges sammen automatisk så Felt C giver summen (i dette
tilfælde 9).
Felt A og Felt B bliver trukket fra en MySQL-base.
Så spørgsmålet er - kan nogen hjælpe med dette eller give et link, hvor der
kan læses (og læres om det)? Desuden ville jeg være meget glad, hvis nogen
kunne fortælle mig hvilken TYPE feltet i MySQL-basen skal være (jeg tænker
på INT, VARCHAR eller andet)?
Tak på forhånd.
Mvh
Henrik Pedersen
| |
Henrik Pedersen (13-05-2005)
| Kommentar Fra : Henrik Pedersen |
Dato : 13-05-05 00:02 |
|
"Henrik Pedersen" <hpSPAM@beone.dk> wrote in message
news:4283d8ac$0$67255$157c6196@dreader2.cybercity.dk...
> Hej NG.
>
> Først -> Det er efterhånden en krig siden jeg har rodet med PHP, så er
> ikke lige så skarp (med andre ord - opfat mig næsten som nybegynder).
>
> Jeg arbejder med en lille side til internt brug. En side, hvor jeg gerne
> ville lægge nogle tal sammen, som så giver et subtotal i nederste felt -
> altså lige som et simpelt regnestykke.
>
> Lad os sige:
> Felt A har værdien 5
> Felt B har værdien 4
> Det skal så lægges sammen automatisk så Felt C giver summen (i dette
> tilfælde 9).
>
> Felt A og Felt B bliver trukket fra en MySQL-base.
>
> Så spørgsmålet er - kan nogen hjælpe med dette eller give et link, hvor
> der kan læses (og læres om det)? Desuden ville jeg være meget glad, hvis
> nogen kunne fortælle mig hvilken TYPE feltet i MySQL-basen skal være (jeg
> tænker på INT, VARCHAR eller andet)?
>
Jeg har fundet ud af at bcadd funktionen kan bruges - men så har jeg
problemet, når der er mere end 2 tal som skal lægges sammen - hvilken
funktion skal bruges til det?
Jeg har forsøgt mig med DECIMAL typen i min MySQL - men den laver en
Autoinsert på "0" - hvilket jeg ikke har interesse i.
Mvh
Henrik pedersen
| |
Johan Holst Nielsen (13-05-2005)
| Kommentar Fra : Johan Holst Nielsen |
Dato : 13-05-05 09:00 |
|
Henrik Pedersen wrote:
>>Lad os sige:
>>Felt A har værdien 5
>>Felt B har værdien 4
>>Det skal så lægges sammen automatisk så Felt C giver summen (i dette
>>tilfælde 9).
>>
>>Felt A og Felt B bliver trukket fra en MySQL-base.
>>
>>Så spørgsmålet er - kan nogen hjælpe med dette eller give et link, hvor
>>der kan læses (og læres om det)? Desuden ville jeg være meget glad, hvis
>>nogen kunne fortælle mig hvilken TYPE feltet i MySQL-basen skal være (jeg
>>tænker på INT, VARCHAR eller andet)?
>
>
> Jeg har fundet ud af at bcadd funktionen kan bruges - men så har jeg
> problemet, når der er mere end 2 tal som skal lægges sammen - hvilken
> funktion skal bruges til det?
>
> Jeg har forsøgt mig med DECIMAL typen i min MySQL - men den laver en
> Autoinsert på "0" - hvilket jeg ikke har interesse i.
Du skal bruge INT hvis der kun er tale om heltal. VARCHAR er ikke
beregnet til tal.
Og hvorfor bruge funktioner til at ligge talene sammen?
$resultat = $feltA+$feltB+$feltC+$feltD;
echo $resultat;
mvh
johan
| |
Henrik Pedersen (13-05-2005)
| Kommentar Fra : Henrik Pedersen |
Dato : 13-05-05 09:16 |
|
> Og hvorfor bruge funktioner til at ligge talene sammen?
>
> $resultat = $feltA+$feltB+$feltC+$feltD;
> echo $resultat;
OK - vidste ikke lige man bare kunne bruge + :)
Anyways - det har jeg prøvet nu, men kan ikke rigtigt få de 2 cifre med
efter kommaet. Hvis tallene f.eks. er 12,20+258,45, så giver den kun 270 som
resultat. Findes der en måde, at løse den på?
Jeg har også nu ændret til INT - men jeg får så det problem, at den
automatisk sætter 0 som standard (det ønsker jeg ikke).
Mvh
Henrik
| |
Johan Holst Nielsen (13-05-2005)
| Kommentar Fra : Johan Holst Nielsen |
Dato : 13-05-05 09:38 |
|
Henrik Pedersen wrote:
>>Og hvorfor bruge funktioner til at ligge talene sammen?
>>
>>$resultat = $feltA+$feltB+$feltC+$feltD;
>>echo $resultat;
>
> OK - vidste ikke lige man bare kunne bruge + :)
> Anyways - det har jeg prøvet nu, men kan ikke rigtigt få de 2 cifre med
> efter kommaet. Hvis tallene f.eks. er 12,20+258,45, så giver den kun 270 som
> resultat. Findes der en måde, at løse den på?
Husk at det skal hedde 12.20+258.45 (altså . i stedet for , - nok der
fejlen ligger). Og hvis det kommer fra databasen kan INT ikke bruges -
da INT bruges til heltal - ikke decimaltal. Så skal du bruge FLOAT/DECIMAL.
> Jeg har også nu ændret til INT - men jeg får så det problem, at den
> automatisk sætter 0 som standard (det ønsker jeg ikke).
For at undgå det skal du vælge NULL som default i din MySQL opsætning.
Hvis du bruger phpMyAdmin skal du flytte selectboksen ned fra Not Null
til Null når du opretter tabellen.
mvh
Johan
| |
Henrik Pedersen (13-05-2005)
| Kommentar Fra : Henrik Pedersen |
Dato : 13-05-05 09:51 |
|
> Husk at det skal hedde 12.20+258.45 (altså . i stedet for , - nok der
> fejlen ligger). Og hvis det kommer fra databasen kan INT ikke bruges - da
> INT bruges til heltal - ikke decimaltal. Så skal du bruge FLOAT/DECIMAL.
OK - det vidste jeg (heller) ikke.
Så skal jeg bare lige have lavet et eller andet som lige kan lave , om til .
i en streng. Det kan nok ikke undgås, at nogle brugere vil komme til at
bruge , i stedet for . når de taster noget ind.
Måske du oz lige har en løsning på det :) (uden du skal forære mig det
hele...hehe).
> For at undgå det skal du vælge NULL som default i din MySQL opsætning.
> Hvis du bruger phpMyAdmin skal du flytte selectboksen ned fra Not Null til
> Null når du opretter tabellen.
Nå, OK - jeg lavede bare en der hed, at var $felt > 0, så skulle den skrive
noget - ellers ikke. :)
Mvh
Henrik
| |
Johan Holst Nielsen (13-05-2005)
| Kommentar Fra : Johan Holst Nielsen |
Dato : 13-05-05 10:34 |
|
Henrik Pedersen wrote:
>>Husk at det skal hedde 12.20+258.45 (altså . i stedet for , - nok der
>>fejlen ligger). Og hvis det kommer fra databasen kan INT ikke bruges - da
>>INT bruges til heltal - ikke decimaltal. Så skal du bruge FLOAT/DECIMAL.
>
>
> OK - det vidste jeg (heller) ikke.
> Så skal jeg bare lige have lavet et eller andet som lige kan lave , om til .
> i en streng. Det kan nok ikke undgås, at nogle brugere vil komme til at
> bruge , i stedet for . når de taster noget ind.
> Måske du oz lige har en løsning på det :) (uden du skal forære mig det
> hele...hehe).
Well - der er flere muligheder - den nemmeste (men ikke sikreste) er nok
$tallet = (integer)str_replace(',','.',$tallet,1);
Så replacer du (alle) ,'er med .'er. Men det kan give problemer hvis
folk f.eks. skriver 10.000,00. Eller for den sags skyld 10,000.00
(amerikansk).
mvh
Johan
>
>>For at undgå det skal du vælge NULL som default i din MySQL opsætning.
>>Hvis du bruger phpMyAdmin skal du flytte selectboksen ned fra Not Null til
>>Null når du opretter tabellen.
>
> Nå, OK - jeg lavede bare en der hed, at var $felt > 0, så skulle den skrive
> noget - ellers ikke. :)
Fint fint ;)
mvh
johan
| |
Johan Holst Nielsen (13-05-2005)
| Kommentar Fra : Johan Holst Nielsen |
Dato : 13-05-05 10:47 |
|
Johan Holst Nielsen wrote:
> Well - der er flere muligheder - den nemmeste (men ikke sikreste) er nok
> $tallet = (integer)str_replace(',','.',$tallet,1);
>
> Så replacer du (alle) ,'er med .'er. Men det kan give problemer hvis
> folk f.eks. skriver 10.000,00. Eller for den sags skyld 10,000.00
> (amerikansk).
Passer så ikke at den replacer alle ,'er med .'er - for jeg har sat et
limit ind på 1 replace med 1-tallet til sidst i str_replace ;) Glemte
jeg bare selv :D
mvh
johan
| |
Henrik Pedersen (13-05-2005)
| Kommentar Fra : Henrik Pedersen |
Dato : 13-05-05 12:01 |
|
> Passer så ikke at den replacer alle ,'er med .'er - for jeg har sat et
> limit ind på 1 replace med 1-tallet til sidst i str_replace ;) Glemte jeg
> bare selv :D
1000 tak for hjælpen - nu er jeg mere på rette vej.
Har dog lige en enkelt lille ting som driller - har oprettet en ny post.....
....måske en haj som dig har lyst til at kigge der ;)
Mvh
Henrik
| |
|
|