Avatar billede Morten Professor
15. februar 2015 - 19:27 Der er 37 kommentarer og
1 løsning

Indkøbs kurv flere oplysninger skal udskrives

Hej alle sammen

Har et problem med min kurv.
Kan kun få id og antal ud.
Vil gerne have pris og varens navn ud også og vil gerne have prisen lagt sammen med nummer to vare.

Min kode er her:

<?php

/*
  List varer i kurv
*/
session_start();
$foerstelinie=true;
foreach($_SESSION['varenr'] as $vareid => $antal)

{
  if($antal>0){
    if($foerstelinie){
      echo '<ul>';
      $foerstelinie=false;
    }
    echo '<li>' . $vareid . ': ' . $antal . ' stk. ' . $pris .' . $vare.' <a href="indkoeb/slet_vare.php?slet='. urlencode($vareid) .'">Slet vare</a></li>';
  }
}
if(!$foerstelinie){
  echo '</ul>';
}
?>

Link hvor jeg trykke for at få tilføjet til kurv er her:

<div style="min-width:230px;" class="sv_overskrift"><?php echo $row_rsVare_Salg['vare']; ?></div>
           
           
            <div id="vs_opstilling">Varenr.: <strong><?php echo $row_rsVare_Salg['varenr']; ?></strong></div>
            <div class="linje"></div>
            <div id="vs_opstilling">Farve: <?php echo $row_rsVare_Salg['farve']; ?></div>
        <div class="linje"></div>
        <div id="vs_opstilling">Matriale: <?php echo $row_rsVare_Salg['matriale']; ?></div>
        <div class="linje"></div><div id="vs_opstilling">Højde: <?php echo $row_rsVare_Salg['hoejde']; ?></div>
            <div class="linje"></div>
            <div id="vs_opstilling">Vægt: <?php echo $row_rsVare_Salg['vaegt']; ?></div>
            <div class="linje"></div>
            <div id="vs_opstilling">Diameter: <?php echo $row_rsVare_Salg['diameter']; ?></div>
            <div class="linje"></div>
            <div id="vs_opstilling">Del(e): <?php echo $row_rsVare_Salg['antal']; ?> stk.</div>
           
            <div class="linje"></div>
            <div id="vs_opstilling">Oprettet: <?php echo $row_rsVare_Salg['dato']; ?></div>
            <div class="linje"></div>
        <div><div id="vs_opstilling">Status: <strong><?php echo $row_rsVare_Salg['status']; ?></strong></div>
        <div class="linje"></div>
        <div id="vs_opstilling"><strong>Pris:
<?php $samletpris = $row_rsVare_Salg['pris'] * $row_rsFortjenste['fortjenste']/100 + $row_rsVare_Salg['pris'] ; echo $samletpris; ?>
kr.</strong></div>
    <a href="indkoeb/indkoeb.php?id=<?php echo $row_rsVare_Salg['id']; ?>&vare=<?php echo $row_rsVare_Salg['vare']; ?>&pris=<?php echo $row_rsVare_Salg['pris']; ?>"><strong style="color:#0F0;">Læg i kurv</strong></a></div>

id kommer fra mysqldatabasen

Håber i kan hjælpe mig :-)

Har knoklet med det i to dag måske 3 snart... $please = "please help me";

echo $please; ;oP
Avatar billede majbom Novice
15. februar 2015 - 19:42 #1
Vi ved ikke hvad der sker i indkoeb.php.

Hvorfor sende andet end id og evt. antal med til denne side? navn og pris står vel i databasen?
Avatar billede Morten Professor
15. februar 2015 - 20:05 #2
Ja men så kommer det ikke med i min kurv, så kan man ikke se hvad det koster det man har købt
<?php

session_start();

// Dine kald til database m.m. skal ind her
include('../admin/thevalue/GetSQLValueString.php');

$colname_rsVare_Salg = "-1";
if (isset($_GET['id'])) {
  $colname_rsVare_Salg = $_GET['id'];
}
mysql_select_db($database_hellestrik, $hellestrik);
$query_rsVare_Salg = sprintf("SELECT * FROM vare WHERE id = %s", GetSQLValueString($colname_rsVare_Salg, "int"));
$rsVare_Salg = mysql_query($query_rsVare_Salg, $hellestrik) or die(mysql_error());
$row_rsVare_Salg = mysql_fetch_assoc($rsVare_Salg);
$totalRows_rsVare_Salg = mysql_num_rows($rsVare_Salg);

if(isset($row_rsVare_Salg['id'])){
  if(!isset($_SESSION['indkoeb'])){
    $_SESSION['indkoeb']=array($row_rsVare_Salg['vare'],$row_rsVare_Salg['antal'],$row_rsVare_Salg['pris']);
  }
  if(isset($_SESSION['varenr'][$row_rsVare_Salg['varenr']]))
  {
    $_SESSION['varenr'][$row_rsVare_Salg['varenr']]++;
  } else {
    $_SESSION['varenr'][$row_rsVare_Salg['varenr']]=1;
  }
} else {
  echo "Fejl: Ingen vareid";
}


$tilbage = $_SERVER['HTTP_REFERER'];
header("location: $tilbage");
// Her han du se hvordan $_SESSION['id'] er struktureret
dump($_SESSION['id']);

// Her han du se hvordan $_SESSION['total'] er struktureret



// Blot for at vise at dump kan bruges på flere måder
dump($row_rsVare_Salg, $rsVare_Salg, $_SESSION);

/*
* Funktionen dump.php kan med stor fordel gemmes i dump.php for
* derefter at inkluderes således
*
*  include_once "dump.php";
*
*/

function dump()
{
    $dump_body_background =  "navy";
    $dump_body_font_color = "yellow";
    $dump_body_border = "2px";
    $dump_body_border_color = "red";
    $dump_body_border_type = "solid";
    $dump_body_border_padding = "5px";
    $top_legend_background_color = "lightgrey";
    $info_legend_background_color = "lightgrey";
    $top_legend_padding = "5px";
    $show_info_background = "lightgrey";
    $show_info_font = "blue";
    $show_info_padding = "5px";
    $top_legend_font_color = "blue";
    $show_info = 0;

    $fil = "Fil";
    $line = "Linje";
    $variable_name = "Variabel navn";
    $variable_type = "Variabel type";
    $of = "af";

    if(!function_exists('_dump_type'))
    {
        function _dump_type($value)
        {
            $type = "";

            if(is_int($value)) $type = 'integer';

            if(is_null($value)) $type = 'null';

            if(is_string($value)) $type = 'string';

            if(is_float($value)) $type = 'float';

            if(is_bool($value)) $type = 'boolean';

            if(is_array($value)) $type = 'array';

            if(is_object($value)) $type = 'object';

            return $type;
        }
    }

    if(!function_exists('_d_'))
    {
        function _d_($value,$level=0)
        {
            if ($level==-1)
            {
                $trans["\t"]='&rArr;';
                $trans["\n"]='&para;;';
                $trans["\r"]='&crarr;';
                $trans["\0"]='&oplus;';
                return strtr(htmlspecialchars($value),$trans);
            }

            if ($level==0)
            echo '<pre>';

            $type = _dump_type($value);

            if ($type == 'string')
            {
                $value= _d_($value,-1);
            }

            elseif ($type == 'boolean')
            {
                $value = ($value?'true':'false');
            }
            elseif ($type == 'object')
            {
                $props= get_class_vars(get_class($value));
                echo $type.' ('.count($props).') <u>'.get_class($value).'</u>';
                foreach($props as $key=>$val)
                {
                    echo "\n".str_repeat("\t",$level+1).$key.' => ';
                    _d_($value->$key,$level+1);
                }

                $value= '';
            }
            elseif ($type=='array')
            {
                echo $type.' ('.count($value).')';
                foreach($value as $key=>$val)
                {
                    echo "\n".str_repeat("\t",$level+1)._d_($key,-1).' => ';
                    _d_($val,$level+1);
                }

                $value= '';
            }

            echo '<strong>'.$value.'</strong>';

            if ($level==0) echo '</pre>';
        }
    }

    list($debug_list) = debug_backtrace();
    $arguments = func_get_args();
    $total_arguments = count($arguments);

    $source = file($debug_list['file']);
    echo '<fieldset style="background:'.$dump_body_background.'; color: '.$dump_body_font_color.';  !important; border:'.$dump_body_border.' '.$dump_body_border_color.' '.$dump_body_border_type.'; padding:'.$dump_body_border_padding.'">';
    echo '<legend style="background:'.$top_legend_background_color.'; color:'.$top_legend_font_color.'; padding:'.$top_legend_padding.';">'.$fil.': '.$_SERVER['HTTP_HOST'].$debug_list['file'].' @ '.$line.': '.$debug_list['line'].'</legend><pre>';
    if ($show_info >= 1)
    {
        echo '<fieldset style="background:'.$show_info_background.'; color:'.$show_info_font.'; padding:'.$show_info_padding.';">';
        echo '&rArr; <b>=> tab (\t)</b>&emsp;&emsp;    &para; <b>=> new line (\n)</b>&emsp;&emsp;    &crarr;; <b>=> carrige retun (\r)</b>&emsp;&emsp; &oplus; <b>=>  (\0)</fieldset></b>';
    }

    $i = 0;
    foreach ($arguments as $argument)
    {
        $tmp = explode("(",$source[$debug_list['line']-1]);
        $tmp = explode(")",$tmp[1]);
        $var_names = explode(",",$tmp[0]);
        $type = _dump_type($argument);

        if ($type == 'string')
        $type .= ' ('.strlen($argument).')';

        echo '<strong>Debug #'.(++$i).' '.$of.' '.$total_arguments.' '.$variable_name.': '.trim($var_names[$i-1]).' '.$variable_type.': '.$type.'</strong>';

        _d_($argument);
    }

    echo "</pre></fieldset>";
   
   
}
?>
Avatar billede Morten Professor
15. februar 2015 - 20:09 #3
http://em-deko.dk/oversigt.php?t=1&id=1&u=1&uk=1&t=1

Det er siden jeg er igang med at lave, bare så jeg har noget at lave elsker det.
Avatar billede majbom Novice
15. februar 2015 - 22:09 #4
Du henter alligevel alle varens data ud fra databasen inden du opdaterer din session. Og det eneste du gemmer i din session er netop varens id og antal.
Avatar billede Morten Professor
16. februar 2015 - 07:13 #5
Hvordan får jeg det printet med ud.?
Avatar billede jakobdo Ekspert
16. februar 2015 - 09:23 #6
morticms: Når du gennemløber din session, hvor du har ID og antal, så lav et opslag mod databasen. Så kan du jo "igen" trække alle de info om dine produkter du ønsker.
Avatar billede Morten Professor
16. februar 2015 - 09:57 #7
Hej

Jeg har prøvet det men så kommer der til at stå det samme ved f.eks to vare.
Avatar billede jakobdo Ekspert
16. februar 2015 - 10:02 #8
Så er mit bud du gør noget forkert. :o)
Eller... Du gør måske som du vil.

Men alt efter om du jo ønsker følgende resultat:

vare1 - 1 stk
vare2 - 1 stk
vare1 - 1 stk
vare1 - 1 stk

Eller:

vare1 - 3 stk
vare2 - 1 stk

men det er jo din "opdater" varekurv kode der skal håndtere dette.
Avatar billede Morten Professor
16. februar 2015 - 10:08 #9
Hvordan for jeg den til det :)
Avatar billede jakobdo Ekspert
16. februar 2015 - 10:12 #10
Ved at kode det sjovt nok. :o)

Det er jo noget med, når du tilføjer en vare.
Så tjekker du om der allerede er en lign. vare i din kurv.
Er der det, så skal antal tælles op.
Og ellers skal den tilføjes som nyt produkt.
Avatar billede Morten Professor
16. februar 2015 - 10:19 #11
Det her prøver jeg at gøre for at få det ind i min mailform.
Men mangler jeg at gøre det samme et andet sted.

Foreach skulle da være til men kan jeg tilføje mere der f.eks. min vare navn.

Jeg prøver at tage det fra min database med vare nr.
<?php
     

/*
  List varer i kurv
*/
session_start();

$rsSalg['pris'] = $pris;

$foerstelinie=true;
foreach($_SESSION['varenr'] as $varenr => $antal){
   
   
if($antal>0){
    if($foerstelinie){
      $foerstelinie=false;
    }
    echo ' Antal: ' . $antal;
    echo ' Varenr: ' . $varenr;
    echo ' Pris: ' . $pris;
  }
}
if(!$foerstelinie){


?>
Avatar billede jakobdo Ekspert
16. februar 2015 - 10:25 #12
Start med at del din opgave lidt mere op.
Pt virker det til du blander rundt i tingene.

Mit forslag er følgende:

1): Lav en side der viser dine varer og en "tilføj til kurv" knap.
2): Lav funktion der kan modtage en vare (og evt. antal) og smid det ind i kurven. Hvis varen findes i forvejen, opdater antal med modtagne antal. Og ellers indsæt vare med antal (evt. default 1).
3): Hvis kurvens indhold med de ønskede info. (kan nemt trækkes fra databasen efterfølgende)
Avatar billede Morten Professor
16. februar 2015 - 10:32 #13
skal det laves i form så knappen virker :o) jeg spørger dum men jeg er ude på dybt vand lige pluselig
Avatar billede jakobdo Ekspert
16. februar 2015 - 10:50 #14
Hvis du viser dine varer sådan her:

Vare 1 [ ANTAL ] [KØB]
Altså hvor antal kan ændres til f.eks. 10.
Så skal det være en form. (eller man kan lave tricks med links, ajax osv)
Men du kunne jo starte den nemme, hvor du har et link pr vare.
Avatar billede Morten Professor
16. februar 2015 - 10:54 #15
<form id="kurv" name="kurv" method="post" action="indkoeb/indkoeb.php?id=<?php echo $_GET['id']; ?>">
  <p><?php echo $row_rsVare_Salg['id']; ?> </p>
  <p><?php echo $row_rsVare_Salg['vare']; ?></p>
  <p><?php echo $row_rsVare_Salg['pris']; ?></p>
  <p>
    <input type="submit" name="kurv2" id="kurv2" value="Tilføj i kurv" />
  </p>
  <p>
    <input name="id" type="hidden" id="id" value="<?php echo $row_rsVare_Salg['id']; ?>" />
  </p>
</form>

Det virker men så siger den ingen vare i indkøbskurv
Avatar billede Morten Professor
16. februar 2015 - 11:13 #16
<form id="kurv" name="kurv" method="post" action="indkoeb/indkoeb.php?id=<?php echo $_GET['id']; ?>">
  <p><?php echo $row_rsVare_Salg['id']; ?> </p>
  <p><?php echo $row_rsVare_Salg['vare']; ?></p>
  <p><?php echo $row_rsVare_Salg['pris']; ?></p>
  <p>
    <input type="submit" name="kurv2" id="kurv2" value="Tilføj i kurv" />
  </p>
  <p>
    <input name="id" type="hidden" id="id" value="<?php echo $row_rsVare_Salg['id']; ?>" />
  </p>
</form>

<?php
     

/*
  List varer i kurv
*/
session_start();



$foerstelinie=true;
foreach($_SESSION['varenr'] as $varenr => $antal){
   
   
if($antal>0){
    if($foerstelinie){
      $foerstelinie=false;
    }
    echo ' Antal: ' . $antal;
    echo ' Varenr: ' . $row_rsVare_Salg['id'];
    echo ' Pris: ' . $row_rsVare_Salg['pris'];
  }
}
if(!$foerstelinie){


?>

Så har jeg prøvet sådan det virker med pris og antal den stiger.
Avatar billede Morten Professor
16. februar 2015 - 11:17 #17
http://em-deko.dk/varekurv.php

Den virker på den måde
Avatar billede Morten Professor
17. februar 2015 - 08:07 #18
Hej

Hvorfor virker det her ikke?

<?php

session_start();
$_SESSION["varesalg"][] = "test";
$_SESSION["varesalg"][] = "test";
$_SESSION["varesalg"][] = "test";
$_SESSION["varesalg"][] = "test";
$_SESSION["varesalg"][] = "test";
$_SESSION["varesalg"][] = "test";
$_SESSION["varesalg"][] = "test";
$_SESSION["varesalg"][] = "test";
$_SESSION["varesalg"][] = "test";

$_SESSION["varesalg"] = 0;
while ($_SESSION["varesalg"] < 9) {
    echo "".$_SESSION["varesalg"]." <br/>";
    $_SESSION["varesalg"]++;
}

?>
Avatar billede Morten Professor
17. februar 2015 - 08:09 #19
Avatar billede Morten Professor
17. februar 2015 - 08:14 #20
Det her virker heller ikke
<?php


$_SESSION["varesalg"] = "test";
$_SESSION["varesalg"] = "test";
$_SESSION["varesalg"] = "test";
$_SESSION["varesalg"] = "test";
$_SESSION["varesalg"] = "test";
$_SESSION["varesalg"] = "test";
$_SESSION["varesalg"] = "test";
$_SESSION["varesalg"] = "test";
$_SESSION["varesalg"] = "test";

$vare = 0;
while ($vare < 9) {
    echo
    $vare++;
}

?>
Avatar billede Morten Professor
17. februar 2015 - 08:19 #21
Virker heller ikke

http://em-deko.dk/testest.php
Avatar billede jakobdo Ekspert
17. februar 2015 - 08:40 #22
Jeg ville nok lave noget ala dette:

//tilføj vare:
$_SESSION['kurv']['vare_id'] = $antal; //hvis antal ikke altid er = 1

//opdater vare:
$_SESSION['kurv']['vare_id'] = $_SESSION['vare_id'] + $antal; //hvis antal ikke altid er = 1

//vis kurv:
foreach($_SESSION['kurv'] as $vare_id => $antal){
  //Her skal du lave dit database udtræk baseret på $vare_id...
  echo "Du har $antal af vare(r) i din kurv: $vare_id" . '<br>';
}
Avatar billede Morten Professor
17. februar 2015 - 12:56 #23
Hmm hvorfor deler den id og pris fra hinanden?

<?php

session_start();

// Dine kald til database m.m. skal ind her
include('../admin/thevalue/GetSQLValueString.php');

$colname_rsVare_Salg = "-1";
if (isset($_GET['id'])) {
  $colname_rsVare_Salg = $_GET['id'];
}
mysql_select_db($database_hellestrik, $hellestrik);
$query_rsVare_Salg = sprintf("SELECT * FROM vare WHERE id = %s", GetSQLValueString($colname_rsVare_Salg, "int"));
$rsVare_Salg = mysql_query($query_rsVare_Salg, $hellestrik) or die(mysql_error());
$row_rsVare_Salg = mysql_fetch_assoc($rsVare_Salg);
$totalRows_rsVare_Salg = mysql_num_rows($rsVare_Salg);

if(isset($row_rsVare_Salg['id'])){
  if(!isset($_SESSION['indkoeb'])){
    $_SESSION['indkoeb']=array($row_rsVare_Salg['id'],$row_rsVare_Salg['antal'],$row_rsVare_Salg['pris']);
  }
  if(isset($_SESSION['id'][$row_rsVare_Salg['id']]))
  {
    $_SESSION['id'][$row_rsVare_Salg['id']]++;
  } else {
    $_SESSION['id'][$row_rsVare_Salg['id']]=1;
  }
} else {
  echo "Fejl: Ingen vareid";
}


$tilbage = $_SERVER['HTTP_REFERER'];
header("location: $tilbage");

?>
Avatar billede jakobdo Ekspert
17. februar 2015 - 13:10 #24
hvad mener du med deler pris og id ?
Avatar billede Morten Professor
17. februar 2015 - 13:14 #25
Det er fordi hvis du ser på www.em-deko.dk og trykke på de forskellige test vare kommer den med samme pris på begge vare. selvom hver id har en pris for sig.
Avatar billede jakobdo Ekspert
17. februar 2015 - 13:23 #26
Gør evt. dig sel den tjeneste at opret en "debug" side.

<?php
session_start();
echo '<h1>Min session indeholder</h1>';
echo '<pre>';
print_r($_SESSION);
echo '</pre>';
?>

indeholder din session hvad du forventer?
Avatar billede Morten Professor
17. februar 2015 - 13:27 #27
Array
(
    [vare] => Test2
    [pris] => 300
    [indkoeb] => Array
        (
            [0] => 11
            [1] => 1
            [2] => 500
        )

    [id] => Array
        (
            [11] => 1
            [12] => 1
        )

)
Avatar billede jakobdo Ekspert
17. februar 2015 - 13:35 #28
Men jeg tror desværre ikke du forstår nogle af de inputs du får.
Du BØR nøjes med at gemme ID og antal i din kurv.
Du kan til en hver tid hente resten fra din database.
Avatar billede Morten Professor
17. februar 2015 - 13:37 #29
Er der en mere ren måde jeg kan gøre det her på?
Avatar billede jakobdo Ekspert
17. februar 2015 - 13:42 #30
Jeg tror jeg har givet dig en masse inputs.
Så du kunne starte med at læse min inputs igen.
Avatar billede Morten Professor
17. februar 2015 - 13:46 #31
Det vil jeg prøve :-)
Avatar billede Morten Professor
17. februar 2015 - 14:18 #32
Tusinde tak for din hjælp, jeg bruger din måde med data udtrækning.

Du kan prøve det og se hvad jeg har gjort. Håber du vil syntes det er en god ide for købere.
Avatar billede Morten Professor
17. februar 2015 - 14:19 #33
hvordan giver jeg dig point jakobdo :o)
Avatar billede jakobdo Ekspert
17. februar 2015 - 14:22 #34
Sådan her! :o)
Avatar billede Morten Professor
17. februar 2015 - 14:40 #35
Lige en sidste ting hvordan for jeg lagt de to ids prisers sammen :o)
Avatar billede jakobdo Ekspert
17. februar 2015 - 14:43 #36
takker for point.

$total = 0;
foreach($indkobs_kurv as $vare => $antal){
//træk fra db...
$vare_pris = $pris_fra_db * $antal;
$total += $vare_pris;
}

echo "Kurvens pris er: " . $total;
Avatar billede Morten Professor
17. februar 2015 - 14:45 #37
Ja selv tak, du har været meget toldmodig med mig.
Avatar billede jakobdo Ekspert
17. februar 2015 - 14:51 #38
Det synes du alligevel. :o)
Selv tak.
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

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