Avatar billede morteeart Nybegynder
19. september 2004 - 14:04 Der er 10 kommentarer og
1 løsning

problemer med PludsLigmed

Hey

jeg har dette script, som er en del af min webshop

<?
session_start();
?>
    <h3> Din Kurv </h3>
    <br />

    Din kurv indeholder:<br />
    <br />

    <?php

    include('config.php');

    ######### PRODUKT OVERSIGT ##############
    if ( $_SESSION['kurv'] != NULL ) {
    $id = array_unique($_SESSION['kurv']);
    $antal = array_count_values($_SESSION['kurv']);
    foreach ($id as $v) {
    $query1 = @mysql_query("SELECT * FROM produkter WHERE id='$v' ");
    $row1 = @mysql_fetch_array($query1);
if (!$_SESSION['kurv']) { echo "Du har ikke valgt nogle produkter endnu"; }

  if($row1[fast] == 0) {

  $nantal = $antal[$v];

  if ( ($nantal < 10) && ($nantal > 0) ) {
  $dbpris = ($row1[c_pris]/100)*110;
  }
  elseif ( ($nantal >= 10) && ($nantal < 20) ) {
  $dbpris = ($row1[c_pris]/100)*110;
  }
  elseif ( ($nantal >= 20) && ($nantal < 30) ) {
  $dbpris = ($row1[b_pris]/100)*110;
  }
  elseif ( $nantal >= 30 ) {
  $dbpris = ($row1[a_pris]/100)*110;
  }

  } else {
  $dbpris = ($row1[pris]/100)*110;
  }


    echo $antal[$v]." stk. ".$row1[navn]." á ".$dbpris." Dkr. <a href=\"?side=kurv.php&dbid=".$row1[id]."&antal=".$antal[$v]." \">Fjern</a> <br />";
    $_SESSION['pris'] = $antal[$v] * $dbpris; // her er problemet
    }
    }

    ######### FJERNER PRODUKTER ##############
    if( isset($_GET['dbid']) ) {
    $dbid = $_GET['dbid'];
    $bla = $_GET['antal'];
    $j = 1;
    while($j <= $bla) {
    $key = array_search($dbid,$_SESSION['kurv']);
    unset($_SESSION['kurv'][$key]);
    $j++;
    }
    $pquery = @mysql_query("SELECT * FROM produkter WHERE id='$dbid' ");
    $rabat_query = @mysql_query("SELECT rabat FROM rabat WHERE fra<=$bla AND $bla<=til AND produktid='$dbid' ");
    $rabat = @mysql_result($rabat_query,0);
    $rowp = @mysql_fetch_array($pquery);

  if($rowp[fast] == 0) {

  $nantal = $antal[$v];

  if ( ($nantal < 10) && ($nantal > 0) ) {
  $enpris = ($rowp[c_pris]/100)*110 - (($rowp[c_pris]/100)*$rabat);
  }
  elseif ( ($nantal >= 10) && ($nantal < 20) ) {
  $enpris = ($rowp[c_pris]/100)*110 - (($rowp[c_pris]/100)*$rabat);
  }
  elseif ( ($nantal >= 20) && ($nantal < 30) ) {
  $enpris = ($rowp[b_pris]/100)*110 - (($rowp[b_pris]/100)*$rabat);
  }
  elseif ( $nantal >= 30 ) {
  $enpris = ($rowp[a_pris]/100)*110 - (($rowp[a_pris]/100)*$rabat);
  }

  } else {
  $enpris = ($rowp[pris]/100)*110 - (($rowp[pris]/100)*$rabat);
  }


    $netpris = $_SESSION['pris'] - $bla * $enpris;
    unset($_SESSION['pris']);
    $_SESSION['pris'] = $netpris;
    header("Location: index.php?side=kurv.php");
    }



    ############ TØMMER KURVEN TOTAL #############
    if( isset($_GET['empty']) ) {
    if ( $_GET['empty'] = 'true' ) {
    session_unset();
    session_destroy();
    header("Location: index.php?side=kurv.php");
    } }

    ############ FEJL MEDDELSE ###########
    if ( $_SESSION['pris'] != NULL ) {
    if ( $_SESSION['pris'] < 0 ) {
    die("<br /><b>Der er sket en fejl, luk venlig din browser, og prøv igen</b>");
    }
    ############ PRIS OVERSIGT ##########
    echo "<br /><br /><b>Total Pris: <u>".$_SESSION['pris']. "</u> Dkr. </b>";
    echo "<br /><br /><b><a href=\"?side=betaling.php\">Gå til betaling</a> </b>";
    echo "<br /><br /><b><a href=\"?side=kurv.php&empty=true\">Tøm</a> </b><br /><br />";
    }
?>


problemet er at ved '  $_SESSION['pris'] = $antal[$v] * $dbpris; ' så udregner den kun prisen for det seneste produkt som kommer i kruven , og ikke total.
Jeg har prøvet med += men så bliver prisen størrere hver gang man trykke Opdater, og dette er absolut ikke meningen.

Nogen som har nogle forslag til en løsning ?
Avatar billede detox Nybegynder
19. september 2004 - 14:44 #1
Måske kunne du lave en: unset($_SESSION['pris']); li'som du gør længere nede og så bruge:

$_SESSION['pris'] += $antal[$v] * $dbpris;
Avatar billede detox Nybegynder
19. september 2004 - 14:44 #2
Eller:

$_SESSION['pris'] = 0;

og så:

$_SESSION['pris'] += $antal[$v] * $dbpris;
Avatar billede detox Nybegynder
19. september 2004 - 14:54 #3
Arh, nu er jeg med. Problemet er når du trykker opdater. Måske du kunne sætte en slags status variabel i slutningen af scriptet. Fx:

$_SESSION['run'] = 1;

og så tjekke om den er sat inden du kører sciptet (og så selvfølgelig sørge for den bliver unset() på den/de andre sider der sender brugeren til denne side).
Avatar billede morteeart Nybegynder
19. september 2004 - 16:23 #4
jeg prøvede det men det gik ikke så godt,
så fik jeg en bedre ide som gik på at lave et array
som indeholdt priserne ved de enkelte produter,
og så tælle det sammen til sidst.

45  echo $antal[$v]." stk. ".$row1[navn]." á ".$dbpris." Dkr. <a href=\"?side=kurv.php&dbid=".$row1[id]."&antal=".$antal[$v]." \">Fjern</a> <br />";
46  $pris = $antal[$v] * $dbpris;
47    $_SESSION['pris'][$v] = $pris;

problemet er dog at jeg får denne fejlmeddelse:

Warning: Cannot use a scalar value as an array in c:\apache\htdocs\kunder\dvdshop\webshop\kurv.php on line 47


hvad betyder det, og hvordan undgår jeg deT ?
Avatar billede detox Nybegynder
19. september 2004 - 16:34 #5
Måske fordi du har givet: $_SESSION['pris'] en værdi og derfor ikke kan bruge det som array.
Avatar billede detox Nybegynder
19. september 2004 - 16:38 #6
Eks.:

$_SESSION['a'] = 0;
$_SESSION['a'][10] = 1;

giver ovenstående warning
Avatar billede detox Nybegynder
19. september 2004 - 16:41 #7
Når du siger tælle arrayet sammen, bruger du vel: array_sum()
Avatar billede morteeart Nybegynder
19. september 2004 - 16:52 #8
iden var at tælle dem sammen, ja..

men den kode har jeg ikke skrevet endnu, fordi jeg vil have det andet til at virke først..

problemet er at den laver array'et først gang, men så går det galt igen.
Kan det lade sig gøre at undgå siden opdatere ?
evt. med et header
Avatar billede detox Nybegynder
19. september 2004 - 16:55 #9
Ja, du kan altid dirigere brugeren videre med en header() og det er nok en god ide ift. reload/opdatering.
Avatar billede morteeart Nybegynder
19. september 2004 - 20:41 #10
fik problemet løst. Tak for hjælpen.. (husk at lægge et svar :)
Avatar billede detox Nybegynder
19. september 2004 - 21:15 #11
Velbekommen
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