Avatar billede Morten Professor
09. april 2015 - 21:52 Der er 27 kommentarer og
1 løsning

Fjern et antal varer igen i session

Hej

Jeg vil høre om hvordan jeg fjerner et antal varer feks.
2 af samme varer til 1 vare.

Håber der er en der kan hjælpe mig med det.


Sætter ind:   

//så skal vi lige vide hvilken vare kunden vil have og hvor mange han skal have
   
    $id = $row_rsVarer['id'];
    $_SESSION['pris'][$id] = $row_rsVarer['pris']."\n".
    $_SESSION['vare'][$id] = "<br>"."Vare: ".$row_rsVarer['vare']."\n".
    $_SESSION['vare'][$id] = "<br>"."Pris: ".$row_rsVarer['pris']."\n".
    $_SESSION['vare'][$id] = "<br>"."Oplysning: ".$row_rsVarer['tekst'];"<br>".
    $_SESSION['samletantal'] += $row_rsVarer['antal'];
    $_SESSION['samletpris'] += $row_rsVarer['pris'] * $row_rsVarer['antal'];        $antal = $row_rsVarer['antal'];
   
    //her kontrolleres det om kunden allerede har varen og hvis det er tilfældet tillægges antallet til den eksisterende værdi.
    //ellers oprettes varelinien blot med værdien af antal
    if(isset($_SESSION["kurv"][$id]))
        $_SESSION["kurv"][$id] += $antal;
    else
        $_SESSION["kurv"][$id] = $antal;   


Printer ud:
foreach($_SESSION["kurv"] as $id => $antal){ 
    echo '<br /><a href="slet_en_vare.php?id='.$id.'">Slet</a><br />';
    echo $id;
    echo "<br />";
    echo $_SESSION['vare'][$id];
    echo "<br />";
    echo "Antal: ".$antal;
    echo "<br />";
    echo "Pris i alt: ".$antal * $_SESSION['pris'][$id];
    echo "<br />";
   
};   
?><br />

<?php
echo "Samlet antal: ".$_SESSION['samletantal'];
echo "<br />";
echo "Samlet pris: ".$_SESSION['samletpris'];
?>
Avatar billede olsensweb.dk Ekspert
10. april 2015 - 11:26 #1
dette må du lige forklarer mig!!
$_SESSION['vare'][$id] = "<br>"."Vare: ".$row_rsVarer['vare']."\n".
$_SESSION['vare'][$id] = "<br>"."Pris: ".$row_rsVarer['pris']."\n".
$_SESSION['vare'][$id] = "<br>"."Oplysning: ".$row_rsVarer['tekst'];"<br>".
for mig at se overskriver du pladsen $_SESSION['vare'][$id] hver gang, så der ender med at stå "<br>"."Oplysning:....

læg 3-4 vare i din kurv
hvad visser denne kommando ??
print_r($_SESSION["kurv"]);

>Jeg vil høre om hvordan jeg fjerner et antal varer feks.
det kommer an på hvordan dit kurv array ser ud:

men jeg ser 2 løsninger
1: du overskriver hele positionen i session med de nye værdier
$_SESSION['kurv']['42']=array("id"=>42, "antal"=>5);

2: du opdaterer feltet antal, enten ved + eller -
$_SESSION['kurv'][$id]['antal']++; // lægger 1 til antal
$_SESSION['kurv'][$id]['antal']--; // trækker 1 fra antal

eller
$_SESSION['kurv'][$id]['antal']-= 1; // trækker 1 fra antal
$_SESSION['kurv'][$id]['antal']+= 1; // lægger 1 til antal
Avatar billede Morten Professor
10. april 2015 - 12:12 #2
Slet
10
Vare: Skrivebord i teak Pris: 950 Oplysning:
Er i god stand

Antal: 9
Pris i alt: 8550

Slet
11

Vare: Skrivebord i teak, OMANN JR.
Pris: 3800
Oplysning:
Er i god stand.

Antal: 4
Pris i alt: 15200

Her er det den viser:
Array ( [10] => 9 [11] => 4 )

Samlet antal: 13 stk.
Samlet pris: 23750 kr.
Avatar billede Morten Professor
10. april 2015 - 12:14 #3
Min session indeholder
Array
(
    [vare] => Array
        (
            [10] =>
Vare: Skrivebord i teak
Pris: 950
Oplysning: Er i god stand


            [11] =>
Vare: Skrivebord i teak, OMANN JR.

Pris: 3800

Oplysning: Er i god stand.


        )

    [pris] => Array
        (
            [10] => 950

Vare: Skrivebord i teak
Pris: 950
Oplysning: Er i god stand


            [11] => 3800

Vare: Skrivebord i teak, OMANN JR.

Pris: 3800

Oplysning: Er i god stand.


        )

    [samletantal] => 13
    [samletpris] => 23750
    [kurv] => Array
        (
            [10] => 9
            [11] => 4
        )

)
Avatar billede Morten Professor
10. april 2015 - 12:17 #4
2: du opdaterer feltet antal, enten ved + eller -
$_SESSION['kurv'][$id]['antal']++; // lægger 1 til antal
$_SESSION['kurv'][$id]['antal']--; // trækker 1 fra antal

Skal det stå på en side for sig, hvor jeg opdater til.
Avatar billede Morten Professor
10. april 2015 - 12:51 #5
Så virker det mange tak for hjælpen :o)

Vil du gøre så du kan få point.
Avatar billede Morten Professor
10. april 2015 - 12:52 #6
$id = $row_rsVarer['id'];
        $_SESSION['kurv'][$id]-= 1; // trækker 1 fra antal
        $_SESSION['samletantal']--;
        $_SESSION['samletpris'] -= $row_rsVarer['pris'];
Avatar billede Morten Professor
10. april 2015 - 12:52 #7
Det var lige den løsning jeg brugte
Avatar billede olsensweb.dk Ekspert
10. april 2015 - 13:09 #8
#3
dvs når du vil slette id 10, skal du slette det 3 steder :( det er da torske dumt
du skal slette den følgende steder:
[vare][10]
[pris][10]
[kurv][10]
du har en masse redundant data i din session.
du giver dig selv flere problemer end højst nødvendigt.
husk KISS

hvis du gør som du fik at vide allerede i http://www.eksperten.dk/spm/1001765 #1, #6
og viste i http://www.eksperten.dk/spm/1002919 #2 ville du kunne nøjes med at rette 1 sted, om det er at slette en item eller ændre antallet

dit session array skal kun se så dan ud
$_SESSION['kurv']=array(
    "4"=>array("id"=>4, "antal"=>2),
    "2"=>array("id"=>2, "antal"=>2),
    "1"=>array("id"=>1, "antal"=>2),
    "7"=>array("id"=>7, "antal"=>2)
);


hvilke giver denne udskrift
Array
(
    [4] => Array
        (
            [id] => 4
            [antal] => 2
        )

    [2] => Array
        (
            [id] => 2
            [antal] => 2
        )

    [1] => Array
        (
            [id] => 1
            [antal] => 2
        )

    [7] => Array
        (
            [id] => 7
            [antal] => 2
        )

)
resten af vare oplysningerne henter du fra databasen
Avatar billede Morten Professor
10. april 2015 - 13:15 #9
Jamen hvordan henter jeg de oplysninger fra databasen, har prøvet lidt forskelligt.
Men har ikke fået det til at virke :o/
Avatar billede Morten Professor
10. april 2015 - 13:31 #10
Jeg ved godt jeg ikke er god til session men jeg prøver. :o/
Avatar billede olsensweb.dk Ekspert
10. april 2015 - 14:40 #11
#9
>Jamen hvordan henter jeg de oplysninger fra databasen, har prøvet lidt forskelligt.
hvis du vil gøre det nemt for dig selv, så lav 2 functioner, en der retunerer 1 vare, angivet med dens id, og en der retunerer alla vare.


du skal ikke tage dig af designet, det er kun for at vise brugen af de 2 functioner


<?php

function vare_Read($conn, $id) {
    $sql = "SELECT * FROM vare WHERE id = " . $id;
    // $rs = $conn->query($sql);
    // $ar = $rs->fetch_assoc();
    $rs = mysqli_query($conn, $sql);
    $ar = mysqli_fetch_assoc($rs);
    return $ar;
}

function vare_ReadAll($conn) {
    $sql = "SELECT * FROM vare";
    //$rs = mysqli_query($conn, $sql);
    $rs = $conn->query($sql);
    $ar = array();
    //while ($row = mysqli_fetch_assoc($rs) ){
    while ($row = $rs->fetch_assoc()) {
        $ar[] = $row;
    }
    return $ar;
}
?>


<table style="width:100%">
    <tr>
        <th>navn</th>
        <th>antal</th>
        <th>pris</th>
    </tr>

    <?php
// udskrivning af kurven
    $pris_total = 0;
    $antal_vare = 0;
    $str = "";
    foreach ($_SESSION['kurv'] as $varer => $vare) {
        $item = vare_Read($conn, $vare['id']);
        $varepris = $item['pris'] * $vare['antal'];
        $pris_total += $varepris;
        $antal_vare += $vare['antal'];
        $str.= "<tr>";
        $str.= "<td>" . $item['name'] . "</td>";
        $str.= "<td>" . $vare['antal'] . "</td>";
        $str.= "<td>" . $varepris . "</td>";
        $str.= "</tr>";
    }
    $str.= "<tr>";
    $str.= "<td>.</td>";
    $str.= "<td>.</td>";
    $str.= "<td>.</td>";
    $str.= "</tr>";


    $str.= "<tr>";
    $str.= "<td>total pris</td>";
    $str.= "<td></td>";
    $str.= "<td>" . $pris_total . "</td>";
    $str.= "</tr>";


    $str.= "<tr>";
    $str.= "<td>total antal  vare</td>";
    $str.= "<td></td>";
    $str.= "<td>" . $antal_vare . "</td>";
    $str.= "</tr>";
    echo $str;
    ?>
</table>

alle vare
<div>
    <span>navn</span>
    <span>beskrivelse</span>
    <span>antal</span>
    <span>pris</span>
    <span>tilføj</span>
</div>

<?php
$str = "";
$liste = vare_ReadAll($conn);
for ($i = 0, $lng = count($liste); $i < $lng; $i++) {
    $str.="\n";
    $str.='<div>';
    $str.='<form action="' . $_SERVER['PHP_SELF'] . '" method="post">';
    $id = $liste[$i]['id'];
    $str.='<input type="hidden" name="id" value="' . $id . '" >';
    $str.='<span>' . $liste[$i]['name'] . '</span>';
    $str.='<span>' . $liste[$i]['beskrivelse'] . '</span>';
    $str.='<span><input type="number" name="quantity" min="1" max="5"></span>';
    $str.='<span>' . $liste[$i]['pris'] . '</span>';
    $str.='<span><input type="submit" name="action" value="add"></span>';
    $str.="</form>";
    $str.='</div>';
}

echo $str;
?>

rediger kurven
<table style="width:100%">
    <tr>
        <th>navn</th>
        <th>beskrivelse</th>
        <th>antal</th>
        <th>pris</th>
        <th>1 mere</th>
        <th>1 mindre</th>
        <th>slet</th>
    </tr>
    <?php
    $str = "";
    foreach ($_SESSION['kurv'] as $varer => $vare) {
        $id = $vare['id'];
        $item = vare_Read($conn, $id);
        $str.='<tr>';
        $str.='<td>' . $item['name'] . '</td>';
        $str.='<td>' . $item['beskrivelse'] . '</td>';
        $str.='<td>' . $vare['antal'] . '</td>';
        $str.='<td>' . $vare['antal'] * $item['pris'] . '</td>';
        $str.='<td><a href="' . $_SERVER['PHP_SELF'] . '?id=' . $id . '&amp;action=up">mere</a></td>';
        $str.='<td><a href="' . $_SERVER['PHP_SELF'] . '?id=' . $id . '&amp;action=down">mindre</a></td>';
        $str.='<td><a href="' . $_SERVER['PHP_SELF'] . '?id=' . $id . '&amp;action=delete">Slet</a></td>';
        $str.='</tr>';
    }
    echo $str;
    ?>
</table>


alle filer incl database ligger i http://experten.olsensweb.dk/1002993.zip
Avatar billede olsensweb.dk Ekspert
10. april 2015 - 14:40 #12
og et svar
Avatar billede Morten Professor
10. april 2015 - 18:06 #13
Mange tak så vil jeg lege med det.
Tak for hjælpen.

Dit svar kan ikke modtages, den giver ikke mulighed for at give dig dem.
Kan du prøve igen?
Avatar billede Morten Professor
10. april 2015 - 18:08 #14
Hov sådan :-D
Avatar billede Morten Professor
10. april 2015 - 20:14 #15
Jeg har et problem med
foreach ($_SESSION["kurv"] as $varer => $vare)
Den fejler hmm har prøvet lidt af hvert.
Avatar billede Morten Professor
10. april 2015 - 20:21 #16
Men ellers virker resten :o)
Avatar billede Morten Professor
10. april 2015 - 20:37 #17
Nu virker den.
Kan bare ikke få
Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in C:\wamp\www\odderloppetorv_webshop\indkoeb\test_data_session.php on line 50

til at virke.
Avatar billede Morten Professor
10. april 2015 - 20:42 #18
$rs = mysql_query($sql, $kurv);
    $ar = mysql_fetch_assoc($rs);
Avatar billede olsensweb.dk Ekspert
10. april 2015 - 20:53 #19
>Warning: mysql_fetch_assoc() expects parameter 1 to be resource,
du lagde vel mærke til at jeg anvender mysqli, og ikke det gamle API
den connection jeg har lavet er til mysqli, og kan ikke bruges til mysql

så du kan ikke få den fejl du visser i den code jeg har lagt ud, du har selv lavet noget om.


#18
ligger denne code einde i en function ??
er din connection(kurv) med inde i functionen
Avatar billede Morten Professor
10. april 2015 - 22:44 #20
function vare_Read($kurv, $id) {
    $sql = "SELECT * FROM vare WHERE id = " . $id;
    // $rs = $conn->query($sql);
    // $ar = $rs->fetch_assoc();
    $rs = mysql_query($sql, $kurv);
    $ar = mysql_fetch_assoc($rs);
    return $ar;

$kurv er min connect.

Jeg var bare nød til at lave det om for at test min database om det virkede på den og det gør det. men jeg får den fejll der, jeg må have glemt noget et sted.

Giver lige det to funktioner her jeg har lavet lidt om for at nå ind til min database:

function vare_Read($kurv, $id) {
    $sql = "SELECT * FROM vare WHERE id = " . $id;
    // $rs = $conn->query($sql);
    // $ar = $rs->fetch_assoc();
    $rs = mysql_query($sql, $kurv);
    $ar = mysql_fetch_assoc($rs);
    return $ar;
}

function vare_ReadAll($kurv) {
    $sql = "SELECT * FROM vare";
    //$rs = mysqli_query($conn, $sql);
    $rs = mysql_query($sql, $kurv);
    $ar = array();
    //while ($row = mysqli_fetch_assoc($rs) ){
    while ($row = mysql_fetch_assoc($rs)) {
        $ar[] = $row;
    }
    return $ar;
}
Avatar billede Morten Professor
10. april 2015 - 23:08 #21
Så fik jeg lavet det i mysqli.
Men den sidste fejl er
Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given in C:\wamp\www\odderloppetorv_webshop\indkoeb\test_data_session.php on line 51
$ar = mysqli_fetch_assoc($rs);
Avatar billede olsensweb.dk Ekspert
11. april 2015 - 13:03 #22
>Warning: mysqli_fetch_assoc() expects parameter 1 to
din sql retunerer ikke noget, formindelig er din connection ikke korrekt.
prøv at sætte en "or die" på din query

function vare_Read($conn, $id) {
    $sql = "SELECT * FROM vare WHERE id = " . $id;
    // $rs = $conn->query($sql);
    // $ar = $rs->fetch_assoc();   
    $rs = mysqli_query($conn, $sql) or die ('Unable to execute query. '. mysqli_error($conn));
    $ar = mysqli_fetch_assoc($rs);
    return $ar;
}


nb dine variable inde i functionen og uden for functionen behøver ikke hedde det sammen.
normalt kalder jeg altid min connection for con inde  functioner.
Avatar billede Morten Professor
11. april 2015 - 15:01 #23
Jeg får fejlen.

Hvor går det mon galt.

<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
    global $kurv;
  if (PHP_VERSION < 6) {
    $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
  }

  $theValue = function_exists("mysqli_real_escape_string") ? mysqli_real_escape_string($kurv, $theValue) : mysqli_escape_string($kurv, $theValue);

  switch ($theType) {
    case "text":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;   
    case "long":
    case "int":
      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case "double":
      $theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
      break;
    case "date":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
  }
  return $theValue;
}
}
$kurv = mysqli_connect("localhost","root","","t65463_webshop");
// Check connection
if (mysqli_connect_errno())
{
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
// mysqli_select_db($mysqli, $database_mysqli ); // gøres i mysqli_connect
$colname_rsVarer = "-1";
if (isset($_GET['id'])) {
  $colname_rsVarer = $_GET['id'];
}
mysqli_select_db($kurv, "SELECT * FROM vare WHERE id = %s");
$query_rsVarer = sprintf("SELECT * FROM vare WHERE id = %s", GetSQLValueString($colname_rsVarer, "int"));
$rsVarer = mysqli_query($kurv, $query_rsVarer) or die(mysqli_error($kurv));
$row_rsVarer = mysqli_fetch_assoc($rsVarer);
$totalRows_rsVarer = mysqli_num_rows($rsVarer);
session_start();

function vare_Read($kurv, $id) {
    $sql = "SELECT * FROM vare WHERE id = " . $id;
    // $rs = $conn->query($sql);
    // $ar = $rs->fetch_assoc();
$rs = mysqli_query($kurv, $sql) or die ('Unable to execute query. '. mysqli_error($kurv));
}

function vare_ReadAll($kurv) {
    $sql = "SELECT * FROM vare";
    //$rs = mysqli_query($conn, $sql);
    $rs = $kurv->query($sql);
    $ar = array();
    //while ($row = mysqli_fetch_assoc($rs) ){
    while ($row = $rs->fetch_assoc()) {
        $ar[] = $row;
    }
    return $ar;
}
?>


<table style="width:100%">
    <tr>
        <th>navn</th>
        <th>antal</th>
        <th>pris</th>
    </tr>

    <?php
// udskrivning af kurven
    $pris_total = 0;
    $antal_vare = 0;
    $str = "";
    foreach ($_SESSION['kurv'] as $varer => $vare) {
        $item = vare_Read($kurv, $vare['id']);
        $varepris = $item['pris'] * $vare['antal'];
        $pris_total += $varepris;
        $antal_vare += $vare['antal'];
        $str.= "<tr>";
        $str.= "<td>" . $item['vare'] . "</td>";
        $str.= "<td>" . $vare['antal'] . "</td>";
        $str.= "<td>" . $varepris . "</td>";
        $str.= "</tr>";
    }
    $str.= "<tr>";
    $str.= "<td>.</td>";
    $str.= "<td>.</td>";
    $str.= "<td>.</td>";
    $str.= "</tr>";


    $str.= "<tr>";
    $str.= "<td>total pris</td>";
    $str.= "<td></td>";
    $str.= "<td>" . $pris_total . "</td>";
    $str.= "</tr>";


    $str.= "<tr>";
    $str.= "<td>total antal  vare</td>";
    $str.= "<td></td>";
    $str.= "<td>" . $antal_vare . "</td>";
    $str.= "</tr>";
    echo $str;
    ?>
</table>

alle vare
<div>
    <span>navn</span>
    <span>beskrivelse</span>
    <span>antal</span>
    <span>pris</span>
    <span>tilføj</span>
</div>

<?php
$str = "";
$liste = vare_ReadAll($kurv);
for ($i = 0, $lng = count($liste); $i < $lng; $i++) {
    $str.="\n";
    $str.='<div>';
    $str.='<form action="' . $_SERVER['PHP_SELF'] . '" method="post">';
    $id = $liste[$i]['id'];
    $str.='<input type="hidden" name="id" value="' . $id . '" >';
    $str.='<span>' . $liste[$i]['vare'] . '</span>';
    $str.='<span>' . $liste[$i]['tekst'] . '</span>';
    $str.='<span><input type="number" name="quantity" min="1" max="5"></span>';
    $str.='<span>' . $liste[$i]['pris'] . '</span>';
    $str.='<span><input type="submit" name="action" value="add"></span>';
    $str.="</form>";
    $str.='</div>';
}

echo $str;
?>

rediger kurven
<table style="width:100%">
    <tr>
        <th>navn</th>
        <th>beskrivelse</th>
        <th>antal</th>
        <th>pris</th>
        <th>1 mere</th>
        <th>1 mindre</th>
        <th>slet</th>
    </tr>
    <?php
    $str = "";
    foreach ($_SESSION['kurv'] as $varer => $vare) {
        $id = $vare['id'];
        $item = vare_Read($kurv, $id);
        $str.='<tr>';
        $str.='<td>' . $item['vare'] . '</td>';
        $str.='<td>' . $item['tekst'] . '</td>';
        $str.='<td>' . $vare['antal'] . '</td>';
        $str.='<td>' . $vare['antal'] * $item['pris'] . '</td>';
        $str.='<td><a href="' . $_SERVER['PHP_SELF'] . '?id=' . $id . '&amp;action=up">mere</a></td>';
        $str.='<td><a href="' . $_SERVER['PHP_SELF'] . '?id=' . $id . '&amp;action=down">mindre</a></td>';
        $str.='<td><a href="' . $_SERVER['PHP_SELF'] . '?id=' . $id . '&amp;action=delete">Slet</a></td>';
        $str.='</tr>';
    }
    echo $str;
    ?>
</table>
<?php
mysqli_free_result($rsVarer);
?>
Avatar billede olsensweb.dk Ekspert
11. april 2015 - 17:16 #24
>function GetSQLValueString(
her mangler du at tage din connection med ind
nb: hvis du kigger i mysqli_toolbox.php, vil du se jeg har retted den, og iøvrigt byttet om på parameter rækkefølgen
function GetSQLValueString($mysqli, $theType, $theValue = NULL, $theDefinedValue = "", $theNotDefinedValue = ""){
}
mysqli_toolbox.php bliver includeret fra model.php


>$kurv = mysqli_connect("localhost","root","","t65463_webshop");
er lavet som function, og hedder
MySqlIConnProceduralStyle();
eller
MySqlIConnOOP();
og ligger i mysqli_toolbox.php

function vare_Read(), og function vare_ReadAll($kurv)
ligger i model.php


>$query_rsVarer = sprintf("SELECT * FROM vare WHERE id = %s", GetSQLValueString($kurv, "int", $colname_rsVarer));
hvad bruges denne del til ??


>mysqli_free_result($rsVarer);
dette kan slettes da det er sidst på siden

du mangler hele den del der ligger noget i session

hurtigt tilretted vertion

<?php
session_start();
require_once("model.php");

// lig dette over i model.php, istedet for
$kurv = MySqlIConnOOP("t65463_webshop");
// $conn = MySqlIConnProceduralStyle("test"); // mysqli eller PDO connection

// laver en tom kurv, hvis der ikke er oprettet en kurv
if (!isset($_SESSION['kurv'])) {
    $_SESSION['kurv'] = array();
}

if (isset($_POST['action'])) {
    $action = $_POST['action'];
    $id = $_POST['id'];
    switch ($action) {
        case 'add':
            $quantity = $_POST['quantity'];
            $_SESSION['kurv'][$id] = array("id" => $id, "antal" => $quantity);
            break;
        default: break;
    }
}

if (isset($_GET['action'])) {
    $action = $_GET['action'];
    $id = $_GET['id'];
    switch ($action) {
        case 'delete':
            unset($_SESSION['kurv'][$id]);
            break;
        case 'up':
            // læg til antal, der skal sikres mod at $antal bliver negativ, eller ihvetfald $SESSION['kurv'][$id]['antal'] bliver negativ
            // $SESSION['kurv'][$id]['antal']+=$antal;
            //$_SESSION['kurv'][$id]['antal']++;
            $_SESSION['kurv'][$id]['antal']+=1;
            break;
        case 'down':
            //$_SESSION['kurv'][$id]['antal']--;
            $_SESSION['kurv'][$id]['antal']-=1;
            break;
        default: break;
    }
}



// hvad bruger du dette til ??
/*
$colname_rsVarer = "-1";
if (isset($_GET['id'])) {
  $colname_rsVarer = $_GET['id'];
}

$query_rsVarer = sprintf("SELECT * FROM vare WHERE id = %s", GetSQLValueString($kurv, "int", $colname_rsVarer));
$rsVarer = mysqli_query($kurv, $query_rsVarer) or die(mysqli_error($kurv));
$row_rsVarer = mysqli_fetch_assoc($rsVarer);
$totalRows_rsVarer = mysqli_num_rows($rsVarer);
*/


?>


<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
    <title>demo</title>   
</head>
<body>


<table style="width:100%">
    <tr>
        <th>navn</th>
        <th>antal</th>
        <th>pris</th>
    </tr>

    <?php
// udskrivning af kurven
    $pris_total = 0;
    $antal_vare = 0;
    $str = "";
    foreach ($_SESSION['kurv'] as $varer => $vare) {
        $item = vare_Read($kurv, $vare['id']);
        $varepris = $item['pris'] * $vare['antal'];
        $pris_total += $varepris;
        $antal_vare += $vare['antal'];
        $str.= "<tr>";
        $str.= "<td>" . $item['vare'] . "</td>";
        $str.= "<td>" . $vare['antal'] . "</td>";
        $str.= "<td>" . $varepris . "</td>";
        $str.= "</tr>";
    }
    $str.= "<tr>";
    $str.= "<td>.</td>";
    $str.= "<td>.</td>";
    $str.= "<td>.</td>";
    $str.= "</tr>";


    $str.= "<tr>";
    $str.= "<td>total pris</td>";
    $str.= "<td></td>";
    $str.= "<td>" . $pris_total . "</td>";
    $str.= "</tr>";


    $str.= "<tr>";
    $str.= "<td>total antal  vare</td>";
    $str.= "<td></td>";
    $str.= "<td>" . $antal_vare . "</td>";
    $str.= "</tr>";
    echo $str;
    ?>
</table>

alle vare
<div>
    <span>navn</span>
    <span>beskrivelse</span>
    <span>antal</span>
    <span>pris</span>
    <span>tilføj</span>
</div>

<?php
$str = "";
$liste = vare_ReadAll($kurv);
for ($i = 0, $lng = count($liste); $i < $lng; $i++) {
    $str.="\n";
    $str.='<div>';
    $str.='<form action="' . $_SERVER['PHP_SELF'] . '" method="post">';
    $id = $liste[$i]['id'];
    $str.='<input type="hidden" name="id" value="' . $id . '" >';
    $str.='<span>' . $liste[$i]['vare'] . '</span>';
    $str.='<span>' . $liste[$i]['tekst'] . '</span>';
    $str.='<span><input type="number" name="quantity" min="1" max="5"></span>';
    $str.='<span>' . $liste[$i]['pris'] . '</span>';
    $str.='<span><input type="submit" name="action" value="add"></span>';
    $str.="</form>";
    $str.='</div>';
}

echo $str;
?>

rediger kurven
<table style="width:100%">
    <tr>
        <th>navn</th>
        <th>beskrivelse</th>
        <th>antal</th>
        <th>pris</th>
        <th>1 mere</th>
        <th>1 mindre</th>
        <th>slet</th>
    </tr>
    <?php
    $str = "";
    foreach ($_SESSION['kurv'] as $varer => $vare) {
        $id = $vare['id'];
        $item = vare_Read($kurv, $id);
        $str.='<tr>';
        $str.='<td>' . $item['vare'] . '</td>';
        $str.='<td>' . $item['tekst'] . '</td>';
        $str.='<td>' . $vare['antal'] . '</td>';
        $str.='<td>' . $vare['antal'] * $item['pris'] . '</td>';
        $str.='<td><a href="' . $_SERVER['PHP_SELF'] . '?id=' . $id . '&amp;action=up">mere</a></td>';
        $str.='<td><a href="' . $_SERVER['PHP_SELF'] . '?id=' . $id . '&amp;action=down">mindre</a></td>';
        $str.='<td><a href="' . $_SERVER['PHP_SELF'] . '?id=' . $id . '&amp;action=delete">Slet</a></td>';
        $str.='</tr>';
    }
    echo $str;
    ?>
</table>
</body>
</html>
Avatar billede olsensweb.dk Ekspert
11. april 2015 - 17:29 #25
så i korte træk:
du kunne have nøjes med bare at tage min code og rette i model.php
fra
$conn = MySqlIConnProceduralStyle("test"); // mysqli eller PDO connection
til
$conn = MySqlIConnProceduralStyle("t65463_webshop"); // mysqli eller PDO connection

så ville du være oppe at køre
Avatar billede Morten Professor
11. april 2015 - 19:56 #26
Så har jeg taget alle dine koder uden at ændre noget :o)

men får fejl i model.php

Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given in C:\wamp\www\odderloppetorv_webshop\indkoeb\model.php on line 10

Fatal error: Call to a member function fetch_assoc() on a non-object in C:\wamp\www\odderloppetorv_webshop\indkoeb\model.php on line 20
Avatar billede olsensweb.dk Ekspert
12. april 2015 - 09:16 #27
>Så har jeg taget alle dine koder uden at ændre noget :o)
>men får fejl i model.php

har du lagt din vare tabel ind i databasen ??
hvad hedder din database ??

i mit tilfælde hedder databasen test
$conn = MySqlIConnProceduralStyle("test");

ret test til det du har kaldt din database
du kalder den vidst t65463_webshop

altså skal der stå
$conn = MySqlIConnProceduralStyle("t65463_webshop");

som jeg skrev i #22
prøv at sætte en "or die" på din query

lad være med at ændre variable navne

Lad være med at indsætte andet code (du blander tilsyneladende bare noget code sammen fra det gamle mysql).

når du har noget der virker, kan du lave noget om (leg), så ved du selv hvor fejlen ligger

nb husk backup af din code, så du kan finde tilbage
Avatar billede Morten Professor
12. april 2015 - 19:41 #28
Hej ronols

Hvor er du bare så god til det her.
Så virker det helt perfekt :o)
Tusinde tak, så vil jeg lege med det.
Tak for du hjælper mig så meget.

Med venlig hilsen
Morten
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