Avatar billede steenolsen1 Nybegynder
07. januar 2005 - 09:47 Der er 1 kommentar

Finder ikke prisen

Hej,

jeg har en kode, der ser ud som den nedenfor. Der findes 5 forskellige prisintervaller i tabellen, og alt efter bestilte antal stk, skal den rigtige pris findes i tabellen. Er der et af intervallerne, hvor der ikke er oprettet en pris, skal prisen for et lavereliggende interval gælde.

Eksempel:
pris 1 - 2 stk: 100,-
pris 3 - 4 stk: 90,-
pris 5 - 9 stk: 80,-
pris 10 - 19 stk: 70,-
pris 20 + stk: 60,-

Bestilles der 8 stk, er prisen pr. stk altså 80,-

MIT PROBLEM:
Hvis der ikke er oprettet en pris for prisintervallet 5-9 stk, er det prisen for 3-4 stk, der skal gælde. Dermed gælder den i princippet for intervallet 3-9 stk.

Jeg har lavet følgende kode til at finde prisen, men hvis et af intervallerne i databasen er tomt, får jeg bare en værdi på 0 og ikke den prisen fra det lavereligennede prisinterval :-(

Hvordan klarer jeg den? Jeg kan virkelig ikke se at der er en fejl her...


        // Henter connection og prisintervallerne for varen
        include("../admin/connect.php");
        $q_priser = mysql_query("SELECT pris, pris3stk, pris5stk, pris10stk, pris20stk FROM egne_varer WHERE id_vare = '$_POST[id_vare]'");
        $prisinterval = mysql_fetch_assoc($q_priser);
       
        // Finder ud af hvilken pris der skal gælde
        // 20 + stk.
        if($_POST[antal] > '19') {
            if($prisinterval[pris20stk] <> '') {
                $pris = $prisinterval[pris20stk];
            } elseif($prisinterval[pris20stk] == '') {
                $pris = $prisinterval[pris10stk];
            } elseif($prisinterval[pris10stk] == '') {
                $pris = $prisinterval[pris5stk];
            } elseif($prisinterval[pris5stk] == '') {
                $pris = $prisinterval[pris3stk];
            } elseif($prisinterval[pris3stk] == '') {
                $pris = $prisinterval[pris];
            }
        }
        // 10 - 19 stk.
        elseif(($_POST[antal] > '9') AND ($_POST[antal] < '20')) {
            if($prisinterval[pris10stk] <> '') {
                $pris = $prisinterval[pris10stk];
            } elseif($prisinterval[pris10stk] == '') {
                $pris = $prisinterval[pris5stk];
            } elseif($prisinterval[pris5stk] == '') {
                $pris = $prisinterval[pris3stk];
            } elseif($prisinterval[pris3stk] == '') {
                $pris = $prisinterval[pris];
            }
        }
        // 5 - 9 stk.
        elseif(($_POST[antal] > '4') AND ($_POST[antal] < '10')) {
            if($prisinterval[pris5stk] <> '') {
                $pris = $prisinterval[pris5stk];
            } elseif($prisinterval[pris5stk] == '') {
                $pris = $prisinterval[pris3stk];
            } elseif($prisinterval[pris3stk] == '') {
                $pris = $prisinterval[pris];
            }
        }
        // 3 - 4 stk.
        elseif(($_POST[antal] > '2') AND ($_POST[antal] < '5')) {
            if($prisinterval[pris3stk] <> '') {
                $pris = $prisinterval[pris3stk];
            } else {
                $pris = $prisinterval[pris];
            }
        }
        // 1 - 2 stk
        else{
            $pris = $prisinterval[pris];
        }
Avatar billede wordwrap Nybegynder
07. januar 2005 - 13:08 #1
En lille tanke... har ikke afprøvet den selv :-D

men ser ud som om du har alle informationerne i en tabel ??

tror jeg ville dele den op i 2...

i den du kalder egne_varer fjernes alt hvad der har med priser og gøre...
og opretter en der evt ku hedde priser, indeholdende vare_id, min_antal, max_antal, pris


laver så først en select i egne_varer

$q_varer = mysql_fetch_array(mysql_query(select * from egne_vare where vare_id = '$_POST[vare_id]'));

hefter finder du prisen i priser..

$q_priser = mysql_fetch_array(mysql_query(select * from priser where vare_id = '$q_varer[vare_id]' AND '$_POST[antal]' between min_antal AND max_antal));


echo $q_priser[pris]; burde så efter min mening udskrive prisen men som sagt, har ikke lige rendt den igennem selv :-D

for bare at finde prisen er første søgning ikke nødvendig, men går ud fra der skal bruges nogen oplsninger derfra os.... evt smid søgningerne sammen med en inner join

en anden lille ting der kunne blive et problem er at der ville blive et maks på hvor mange varer der kan bestilles, men kan løses med en lille if :-D eller bare angive et meget højt antal i max_antal :-D

/strange
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