Avatar billede nomisweb Nybegynder
23. juli 2007 - 13:39 Der er 7 kommentarer og
1 løsning

De rigtige database værdier?

Hej,

Jeg er ved at lave en lille shop og vil gerne kunne fastsæte prisen på forsendelse alt efter hvor meget det man køber vejer! Så jeg har en variabel med totalvægten på kurven, $productWeight (ja den skulle måske nok hellere hedde $cartWeight!)
Derudover har jeg en tabel i min mysql database som indeholder vægt og tilhørende pris.

Dette er min funktion so far, men den er jo forkert, så jeg har brug for lidt hjælp:
function getShippingCost($productWeight)
{

$shippingCost = array();

$sql = "SELECT f_weight, f_price FROM tbl_forsendelse";
$result = dbQuery($sql);
$row = dbFetchAssoc($result);

if ($productWeight > $row['1'] && $productWeight <= $row['5'])
        $pris = $row['f_price'];
        } else if ($productWeight > $row['5'] && $productWeight <= $row['10']) {
        $pris = $row['f_price'];
        } else if ($productWeight > $row['10'] && $productWeight <= $row['15']) {
        $pris = $row['f_price'];
        } else if ($productWeight > $row['15'] && $productWeight <= $row['20']) {
        $pris = $row['f_price'];
        } else {
        $pris = $row['f_price'];
        }
return $pris;
}

lidt forklaring: $row['5']osv er værdierne af min f_weight fra databasen.
Jeg tænkte man henter databasen ind i et array og så sammenligne man hver værdi hvor den rigtige værdi så vil komme frem, men hvordan er det lige det skal gøres rigtigt?

tak for hjælpen
S
Avatar billede nomisweb Nybegynder
23. juli 2007 - 13:42 #1
hov $shippingCost skal vist bare fjernes igen, det er et levn fra et tidligere forsøg!
Måske skulle der indgå en for løkke istedet for if? tænker på en $i variabel som er afhængig af størrelsen på det array som hentes ind...hvis det giver mening det jeg siger! :-)
Avatar billede jakobdo Ekspert
23. juli 2007 - 16:12 #2
Jeg formoder du har en vægt på alle dine varer.
Hvad med at trække dem med ud, når du alligevel trækker info om varen ud.
Og så lave en samlet vægt og tjekke mod SQL:

SELECT f_price FROM tbl_forsendelse WHERE f_weight > $total_weight ORDER DESC LIMIT 1

Måske skal ORDER DESC lige vendes til ASC, men ideen holder! :op
Avatar billede nomisweb Nybegynder
23. juli 2007 - 16:34 #3
Ja det lyder super, men hvad nu hvis min total vægt er 9kg og min tabel med vægt og pris har vægtene 1, 5, 10, 15 og 20 kg. Vil den så ikke returnere både 10, 15 og 20 kg priserne?
Avatar billede nomisweb Nybegynder
23. juli 2007 - 16:36 #4
Nåååå så kan jeg bare nøjes med at tage den første værdi af udtrækket?? det var det du mener med at vende til ASC....eller hvad?
Avatar billede nomisweb Nybegynder
23. juli 2007 - 16:36 #5
undskyld nu læser jeg der står limit 1! Doh! Sorry!
Avatar billede nomisweb Nybegynder
23. juli 2007 - 17:08 #6
Nu virker det, jeg har lige tilføjet lidt til sql så det er rigtig syntax, men det er jo super meget nemmere! :-)
Den endelige funktion ser således ud:
function getShippingCost($productWeight)
{
$sql = "SELECT f_price FROM tbl_forsendelse WHERE f_weight >= '$productWeight' ORDER BY f_weight ASC LIMIT 1";
$result = dbQuery($sql);
$row = dbFetchAssoc($result);

return $row;
}

Tak for hjælpen, Simon
og smider du et svar!
Avatar billede jakobdo Ekspert
23. juli 2007 - 17:45 #7
Selv tak! :o)
Og du får et svar.
Avatar billede jakobdo Ekspert
25. juli 2007 - 20:13 #8
Takker for point.
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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