Avatar billede t-rex Nybegynder
23. februar 2006 - 15:19 Der er 6 kommentarer og
3 løsninger

indkøbskurv

hej eksperter.

er der en der kan hjælpe mig med at tilføje så man kan slette fra denne indkøbskurv.



<?php
session_start();
if ($_GET['basket']!="")
    {
    if (session_is_registered('ses_basket_items'))
        {
        $basket_position_counter=0;
        $double=0;
        if ($_SESSION['ses_basket_items']>0)
        {
        foreach ($_SESSION['ses_basket_name'] as $basket_item)
            {
            if ($basket_item==$_GET['basket'])
                {
                $double=1;
                $basket_position=$basket_position_counter;
                }
                $basket_position_counter++;
            }
        }
        if ($double==1)
            {
            $oldamount=$_SESSION['ses_basket_amount'][$basket_position];
            $_SESSION['ses_basket_amount'][$basket_position]++;
            $amount=$_SESSION['ses_basket_amount'][$basket_position];
            $oldprice=$_SESSION['ses_basket_price'][$basket_position];
            $newprice=($oldprice/$oldamount)*$amount;
            $_SESSION['ses_basket_price'][$basket_position]=$newprice;
            }
            else
            {
            $_SESSION['ses_basket_name'][]=$_GET['basket'];
            $_SESSION['ses_basket_amount'][]=1;
            $_SESSION['ses_basket_price'][]=$_GET['price'];
            $_SESSION['ses_basket_id'][]=$_GET['id'];
            $_SESSION['ses_basket_items']++;
            }
            }
            else
            {


            $_SESSION['ses_basket_items']=1;
            $_SESSION['ses_basket_name'][0]=$_GET['basket'];
$_SESSION['ses_basket_amount'][0]=1;
$_SESSION['ses_basket_price'][0]=$_GET['price'];
$_SESSION['ses_basket_id'][0]=$_GET['id'];
session_register("ses_basket_items");
session_register("ses_basket_name");
session_register("ses_basket_amount");
session_register("ses_basket_price");
session_register("ses_basket_id");
}
}

if ($_SESSION['ses_basket_items']>0){
for ($basket_counter=0;$basket_counter<$_SESSION['ses_basket_items'];$basket_counter++){ 
$price=sprintf("%01.2f",$_SESSION['ses_basket_price'][$basket_counter]);
$amount=$_SESSION['ses_basket_amount'][$basket_counter];
$name=$_SESSION['ses_basket_name'][$basket_counter];
echo "$amount $name $price";
echo "<BR>\n";
}
} else {
$_SESSION['ses_basket_items']=0;
unset($_SESSION['ses_basket_name']);
unset($_SESSION['ses_basket_amount']);
unset($_SESSION['ses_basket_price']);
unset($_SESSION['ses_basket_id']);
}

?>
Avatar billede kokoko Nybegynder
23. februar 2006 - 17:12 #1
Vil du slet alle med et id? Eller kun tælle amount 1 ned?

Dette kode gør det sidste: (fjern *)

$id = // nummer du vil slette
$basket_position_counter=0;
if ($_SESSION['ses_basket_items']>0){
  foreach ($_SESSION['ses_basket_id'] as $basket_item){
    if ($basket_item==$id){
      $basket_position=$basket_position_counter;
    }
    $basket_position_counter++;
  }
* $_SESSION['ses_basket_amount'][$basket_position]--;
* if ($_SESSION['ses_basket_amount'][$basket_position]<=0) {
    array_splice ($_SESSION['ses_basket_name'], $basket_position, 1);
    array_splice ($_SESSION['ses_basket_amount'], $basket_position, 1);
    array_splice ($_SESSION['ses_basket_price'], $basket_position, 1);
    array_splice ($_SESSION['ses_basket_id'], $basket_position, 1);
    $_SESSION['ses_basket_items']--;
* }
}

Hvis du vil fjerne alle kan du bare fjerne de linjer med *
Avatar billede t-rex Nybegynder
25. februar 2006 - 12:23 #2
der hvor du skriver $id = // nummer du vil slette : er det $_SESSION['ses_basket_id'] eller er det, det antal der skal slettet.
Avatar billede kokoko Nybegynder
25. februar 2006 - 16:27 #3
Det er det $_SESSION['ses_basket_id'] du vil slette
Avatar billede t-rex Nybegynder
27. februar 2006 - 11:36 #4
kan jeg få dig til at skrive det der hvor det skal være for kan ikke få det til at virke som det skal. Den er includet på index.php

<?php
session_start();
if ($_GET['basket']!="")
    {
    if (session_is_registered('ses_basket_items'))
        {
        $basket_position_counter=0;
        $double=0;
        if ($_SESSION['ses_basket_items']>0)
        {
        foreach ($_SESSION['ses_basket_name'] as $basket_item)
            {
            if ($basket_item==$_GET['basket'])
                {
                $double=1;
                $basket_position=$basket_position_counter;
                }
                $basket_position_counter++;
            }
        }
        if ($double==1)
            {
            $oldamount=$_SESSION['ses_basket_amount'][$basket_position];
            $_SESSION['ses_basket_amount'][$basket_position]++;
            $amount=$_SESSION['ses_basket_amount'][$basket_position];
            $oldprice=$_SESSION['ses_basket_price'][$basket_position];
            $newprice=($oldprice/$oldamount)*$amount;
            $_SESSION['ses_basket_price'][$basket_position]=$newprice;
            }
            else
            {
            $_SESSION['ses_basket_name'][]=$_GET['basket'];
            $_SESSION['ses_basket_amount'][]=1;
            $_SESSION['ses_basket_price'][]=$_GET['price'];
            $_SESSION['ses_basket_id'][]=$_GET['id'];
            $_SESSION['ses_basket_items']++;
            }
            }
            else
            {


            $_SESSION['ses_basket_items']=1;
            $_SESSION['ses_basket_name'][0]=$_GET['basket'];
$_SESSION['ses_basket_amount'][0]=1;
$_SESSION['ses_basket_price'][0]=$_GET['price'];
$_SESSION['ses_basket_id'][0]=$_GET['id'];
session_register("ses_basket_items");
session_register("ses_basket_name");
session_register("ses_basket_amount");
session_register("ses_basket_price");
session_register("ses_basket_id");
}

}

if ($_SESSION['ses_basket_items']>0){
for ($basket_counter=0;$basket_counter<$_SESSION['ses_basket_items'];$basket_counter++){

$price=sprintf("%01.2f",$_SESSION['ses_basket_price'][$basket_counter]);
$amount=$_SESSION['ses_basket_amount'][$basket_counter];
$name=$_SESSION['ses_basket_name'][$basket_counter];
echo "$amount"."&nbsp;". substr("$name", 0, 12) ."&nbsp;"."$price"."&nbsp;kr";
echo "<br />";
echo "<br />";
}
} else {

$_SESSION['ses_basket_items']=0;
unset($_SESSION['ses_basket_name']);
unset($_SESSION['ses_basket_amount']);
unset($_SESSION['ses_basket_price']);
unset($_SESSION['ses_basket_id']);
echo "Der er ingen vare i kurven!";
echo "<br />";
echo "<br />";
}

$id = // nummer du vil slette
$basket_position_counter=0;
if ($_SESSION['ses_basket_items']>0){
  foreach ($_SESSION['ses_basket_id'] as $basket_item){
    if ($basket_item==$id){
      $basket_position=$basket_position_counter;
    }
    $basket_position_counter++;
  }
$_SESSION['ses_basket_amount'][$basket_position]--;
if ($_SESSION['ses_basket_amount'][$basket_position]<=0) {
    array_splice ($_SESSION['ses_basket_name'], $basket_position, 1);
    array_splice ($_SESSION['ses_basket_amount'], $basket_position, 1);
    array_splice ($_SESSION['ses_basket_price'], $basket_position, 1);
    array_splice ($_SESSION['ses_basket_id'], $basket_position, 1);
    $_SESSION['ses_basket_items']--;
}
}

?>
Avatar billede kokoko Nybegynder
27. februar 2006 - 18:23 #5
Jeg forstår ikke hvad det er du vil. Før du skal slette en indgang bliver du nød til at kende $_SESSION['ses_basket_id'].

Du kunne lave en delete.php:

<?php
$id = $_GET['id'];
$basket_position_counter=0;
if ($_SESSION['ses_basket_items']>0){
  foreach ($_SESSION['ses_basket_id'] as $basket_item){
    if ($basket_item==$id){
      $basket_position=$basket_position_counter;
    }
    $basket_position_counter++;
  }
$_SESSION['ses_basket_amount'][$basket_position]--;
if ($_SESSION['ses_basket_amount'][$basket_position]<=0) {
    array_splice ($_SESSION['ses_basket_name'], $basket_position, 1);
    array_splice ($_SESSION['ses_basket_amount'], $basket_position, 1);
    array_splice ($_SESSION['ses_basket_price'], $basket_position, 1);
    array_splice ($_SESSION['ses_basket_id'], $basket_position, 1);
    $_SESSION['ses_basket_items']--;
}
}

  header("Location: index.php");
  exit;
?>


og så gå ind på siden http://.../delete?id=7 for at slette varer med nr 7.
Avatar billede t-rex Nybegynder
27. februar 2006 - 19:34 #6
Ja men problemet er at jeg ikke kan få $_SESSION['ses_basket_id'] ud. så jeg kan sende den vider til delete.php som du har lavet oven over. det eneste jeg får ud er "array" og ikke noget id som kan bruges.
Avatar billede kokoko Nybegynder
27. februar 2006 - 20:16 #7
Prøv dette istedet for det der ligner det:

if ($_SESSION['ses_basket_items']>0){
for ($basket_counter=0;$basket_counter<$_SESSION['ses_basket_items'];$basket_counter++){

$price=sprintf("%01.2f",$_SESSION['ses_basket_price'][$basket_counter]);
$amount=$_SESSION['ses_basket_amount'][$basket_counter];
$name=$_SESSION['ses_basket_name'][$basket_counter];
$id=$_SESSION['ses_basket_id'][$basket_counter];
echo "$amount"."&nbsp;". substr("$name", 0, 12) ."&nbsp;"."$price"."&nbsp;kr <a href='delete.php?id=$id'>SLET</a>";
echo "<br />";
echo "<br />";
}
} else {
Avatar billede t-rex Nybegynder
02. marts 2006 - 12:14 #8
så virket det... tak... men jeg har et lille problem mere for når man sletter en så sletter den ikke prisen eller sætter den ned hvis der nu var 2 vare... hvis en koster 100 kr ~ 2 koster 200 kr. sletter man så den ene skriver den stadig 200 kr.
Avatar billede kokoko Nybegynder
02. marts 2006 - 12:40 #9
Du bør slet ikke have pris med i din indkøbskurv, men istedet hente den fra databasen når du skal bruge den.

Men for at få det til at virke kan du prøve at ændre din delete fil til:

<?php
$id = $_GET['id'];
$basket_position_counter=0;
if ($_SESSION['ses_basket_items']>0){
  foreach ($_SESSION['ses_basket_id'] as $basket_item){
    if ($basket_item==$id){
      $basket_position=$basket_position_counter;
    }
    $basket_position_counter++;
  }
$_SESSION['ses_basket_amount'][$basket_position]--;
if ($_SESSION['ses_basket_amount'][$basket_position]<=0) {
    array_splice ($_SESSION['ses_basket_name'], $basket_position, 1);
    array_splice ($_SESSION['ses_basket_amount'], $basket_position, 1);
    array_splice ($_SESSION['ses_basket_price'], $basket_position, 1);
    array_splice ($_SESSION['ses_basket_id'], $basket_position, 1);
    $_SESSION['ses_basket_items']--;
}
else {
$_SESSION['ses_basket_amount'][$basket_position] = $_SESSION['ses_basket_price'][$basket_position]/($_SESSION['ses_basket_amount'][$basket_position]+1)*$_SESSION['ses_basket_amount'][$basket_position];
}
}

  header("Location: index.php");
  exit;
?>
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