Avatar billede learner Praktikant
17. marts 2011 - 16:20 Der er 8 kommentarer og
1 løsning

Valg af felt type til felt med både numre og numre+%

Jeg tænker om der findes en felt type som egner sig til at gemme tal og tal efterfulgt af % tegnet

fx 100 og 22%

Det er jo ikke INT

Findes der et egnet felt? Elller skal jeg vælge Varchar og selv evaluere input?

jeg har kigget lidt på http://dev.mysql.com/doc/refman/4.1/en/data-types.html men ikke fundet de vise sten :o)

På forhånd tak
Avatar billede arne_v Ekspert
17. marts 2011 - 16:29 #1
val varchar

eller

val int
typ enum('abs','perc')
Avatar billede learner Praktikant
17. marts 2011 - 16:44 #2
okay tak

ang:
val int
typ enum('abs','perc')

Det har jeg ik set før
Kan du evt gi en hurtig forklaring? :o)
Avatar billede arne_v Ekspert
17. marts 2011 - 17:13 #3
val        typ

100        'abs'
22          'perc'
Avatar billede arne_v Ekspert
17. marts 2011 - 17:13 #4
Avatar billede learner Praktikant
17. marts 2011 - 17:40 #5
hmm jeg kan ik rigtig finde en god løsning så benytte varchar

og så må jeg evaluere når jeg indsætter noget og udlæser

jeg er startet lidt med dette grimme script:

  function tep_calculate_products_cost($number_or_percentage_string, $products_price, $decimals=0) {
    if (strstr($number_or_percentage_string, "%") != false) {
        if ((int)$number_or_percentage_string>0){
            return number_format( (($products_price*(100-number_format(str_replace('%','',$number_or_percentage_string), 2, '.', '')))/100) , $decimals, '.', '');
        } else {
            return number_format($products_price, $decimals, '.', '');
        }
    } else {
        if ((int)$number_or_percentage_string>0){
            return number_format($number_or_percentage_string, $decimals, '.', '');
        } else {
            return number_format($products_price, $decimals, '.', '');
        }
    }
  }
Avatar billede learner Praktikant
17. marts 2011 - 17:49 #6
og denne til når jeg indsætter noget

  function tep_db_insert_percentage_or_number($number_or_percentage_string) {
    if (strstr($number_or_percentage_string, "%") != false) {
        return number_format(trim(str_replace(',','.',str_replace('%','',$number_or_percentage_string))), 2, '.', '')."%";
    } else {
        return number_format(str_replace(',','.',$number_or_percentage_string), 2, '.', '');
    }
  }
Avatar billede learner Praktikant
18. marts 2011 - 01:21 #7
hej igen
jeg har valgt en bedre løsning
istedet for at skrive % i feltet, så har jeg lavet så den beregner hvor meget fx 10% er, og indsætter det i feltet. altså bevare feltet som INT felttype

tak for bidragene :o)

venligst smid svar og få point
Avatar billede arne_v Ekspert
18. marts 2011 - 02:04 #8
svar
Avatar billede learner Praktikant
18. marts 2011 - 02:11 #9
god nat :o)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester