/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
indkøbskurv med sessions
Fra : Lasse Vestergaard


Dato : 12-02-06 18:07

Hej!

Jeg har det problem at jeg vil lave en indkøbskurv vha. sessions.
Jeg har været uendelig mange steder henne for at se hvordan man
gør, men ingen har endnu kunne vise mig nøjagtigt hvad jeg leder
efter.

Hver gang jeg ser eksempler med sessions, så sætter man kun en
session($_SESSION['halloj']). Jeg har i mit tilfæld brug for to
session-arrays. Da jeg i min indkøbskurv vil vise varernes navne
og hvor mange brugeren har valgt af hver.

Jeg har læst mig til at session_register ikke længere skal
bruges, da der er sikkerhedsmæssig problemer.

Jeg håber der er nogen der kan hjælpe.

vh

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

 
 
Johan Holst Nielsen (12-02-2006)
Kommentar
Fra : Johan Holst Nielsen


Dato : 12-02-06 19:03

Lasse Vestergaard wrote:
> Hej!
>
> Jeg har det problem at jeg vil lave en indkøbskurv vha. sessions.
> Jeg har været uendelig mange steder henne for at se hvordan man
> gør, men ingen har endnu kunne vise mig nøjagtigt hvad jeg leder
> efter.
>
> Hver gang jeg ser eksempler med sessions, så sætter man kun en
> session($_SESSION['halloj']). Jeg har i mit tilfæld brug for to
> session-arrays. Da jeg i min indkøbskurv vil vise varernes navne
> og hvor mange brugeren har valgt af hver.
>
> Jeg har læst mig til at session_register ikke længere skal
> bruges, da der er sikkerhedsmæssig problemer.

Det nemmeste må være noget ala..
<?
session_start();
//tilføj 2 stk. af varenummer 238 til indkøbskurven
$_SESSION['shoppingCart']['238'] = 2;
?>

Ovenstående er selvfølgelig forsimplet - men bør lede dig på rette vej.

Altså - din session shoppingCart er et array.

Array'et består af key = varenummer, value = antal af varenummeret :)

Der er ingen grund til 2 array ud fra ovenstående beskrivelse :)

Mvh
Johan

Lasse Vestergaard (12-02-2006)
Kommentar
Fra : Lasse Vestergaard


Dato : 12-02-06 21:39


> Det nemmeste må være noget ala..
> <?
> session_start();
> //tilføj 2 stk. af varenummer 238 til indkøbskurven
> $_SESSION['shoppingCart']['238'] = 2;
> ?>
>
> Ovenstående er selvfølgelig forsimplet - men bør lede dig på rette vej.
>
> Altså - din session shoppingCart er et array.
>
> Array'et består af key = varenummer, value = antal af varenummeret :)
>
> Der er ingen grund til 2 array ud fra ovenstående beskrivelse :)
>
> Mvh
> Johan

Det havde jeg faktisk slet ikke tænkt på... Det er godt at få nye øjne på
sagen

Tak for det!

Men så må mit næste spørgsmål jo så være:
Hvad gør man så hvis man vil have tre sessionarray's?(Ikke at jeg skal
bruge det, men bare interesse)

vh

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Lasse Vestergaard (12-02-2006)
Kommentar
Fra : Lasse Vestergaard


Dato : 12-02-06 22:38

Johan Holst Nielsen wrote in dk.edb.internet.webdesign.serverside.php:
> Det nemmeste må være noget ala..
> <?
> session_start();
> //tilføj 2 stk. af varenummer 238 til indkøbskurven
> $_SESSION['shoppingCart']['238'] = 2;
> ?>
>
> Ovenstående er selvfølgelig forsimplet - men bør lede dig på rette vej.
>
> Altså - din session shoppingCart er et array.
>
> Array'et består af key = varenummer, value = antal af varenummeret :)
>
> Der er ingen grund til 2 array ud fra ovenstående beskrivelse :)
>
> Mvh
> Johan


Det er også rigtigt. Det havde jeg ikke engang selv set. Det er godt at få
nogle andre øjne på.
Tak for det!

Men så må mit næste spørgsmål jo være:
Hvad så hvis jeg skal bruge tre sessionarray's?

vh

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Lasse Vestergaard (13-02-2006)
Kommentar
Fra : Lasse Vestergaard


Dato : 13-02-06 10:07

Johan Holst Nielsen wrote in dk.edb.internet.webdesign.serverside.php:
> Det nemmeste må være noget ala..
> <?
> session_start();
> //tilføj 2 stk. af varenummer 238 til indkøbskurven
> $_SESSION['shoppingCart']['238'] = 2;
> ?>
>
> Ovenstående er selvfølgelig forsimplet - men bør lede dig på rette vej.
>
> Altså - din session shoppingCart er et array.
>
> Array'et består af key = varenummer, value = antal af varenummeret :)
>
> Der er ingen grund til 2 array ud fra ovenstående beskrivelse :)
>
> Mvh
> Johan

Nu har jeg lavet noget ala det ovenstående, men der er bare det problem at
hver gang jeg vil tilføje noget til min session så bliver den nulstillet,
så der hele tiden kun er en ting i min session.
Koden ses nedenfor:

Jeg har selvfølgelig i toppen af koden skrevet session_start();

if(isset($_POST['tti'])){
   $_SESSION[$_POST['id']]=$_POST['stk'];
}
reset($_SESSION);
$stk=current($_SESSION);
$id=key($_SESSION);
if($id){
   $kurv=mysql_query("select navn from varer where vid='$id'");
      while($row=mysql_fetch_row($kurv))
         echo $row[0].' '.$stk;
}else
   echo "Indkøbskurven er tom!";
while($stk=next($_SESSION)){
   $id=key($_SESSION);
   $kurv=mysql_query("select navn from varer where vid='$id'");
   while($row=mysql_fetch_row($kurv))
      echo $row[0].' '.$stk;
}

Jeg ved ikke om det har noget at sige at $_POST['tti'] kommer fra en side
der er blevet included i denne side?

vh

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Johan Holst Nielsen (13-02-2006)
Kommentar
Fra : Johan Holst Nielsen


Dato : 13-02-06 12:28

Lasse Vestergaard wrote:
> Johan Holst Nielsen wrote in dk.edb.internet.webdesign.serverside.php:
>
>>Det nemmeste må være noget ala..
>><?
>>session_start();
>>//tilføj 2 stk. af varenummer 238 til indkøbskurven
>>$_SESSION['shoppingCart']['238'] = 2;
>>?>
>>
>>Ovenstående er selvfølgelig forsimplet - men bør lede dig på rette vej.
>>
>>Altså - din session shoppingCart er et array.
>>
>>Array'et består af key = varenummer, value = antal af varenummeret :)
>>
>>Der er ingen grund til 2 array ud fra ovenstående beskrivelse :)
>>
>>Mvh
>>Johan
>
>
> Nu har jeg lavet noget ala det ovenstående, men der er bare det problem at
> hver gang jeg vil tilføje noget til min session så bliver den nulstillet,
> så der hele tiden kun er en ting i min session.
> Koden ses nedenfor:
>
> Jeg har selvfølgelig i toppen af koden skrevet session_start();
>
> if(isset($_POST['tti'])){
>    $_SESSION[$_POST['id']]=$_POST['stk'];
> }
> reset($_SESSION);
> $stk=current($_SESSION);
> $id=key($_SESSION);
> if($id){
>    $kurv=mysql_query("select navn from varer where vid='$id'");
>       while($row=mysql_fetch_row($kurv))
>          echo $row[0].' '.$stk;
> }else
>    echo "Indkøbskurven er tom!";
> while($stk=next($_SESSION)){
>    $id=key($_SESSION);
>    $kurv=mysql_query("select navn from varer where vid='$id'");
>    while($row=mysql_fetch_row($kurv))
>       echo $row[0].' '.$stk;
> }
>
> Jeg ved ikke om det har noget at sige at $_POST['tti'] kommer fra en side
> der er blevet included i denne side?

well - :) Jeg ville vøre det sådan:

if(isset($_POST['tti'])) {
//Bør valideres ;)
$_SESSION['shoppingCart'][$_POST['id']] = $_POST['stk'];
}

if(size($_SESSION['shoppingCart'])<=0) {
echo "Indkøbskurven er tom!";
}
else {
foreach($_SESSION['shoppingCart'] as $vareid=>$quantity) {
$query = "SELECT navn FROM varer WHERE vid = '".$vareid."'";
$result = mysql_query($query) OR DIE("Hva' skete der lige der?");
echo mysql_result($result,0,'navn')." ".$quantity." stk.";
}
}


mvh
johan

Lasse Vestergaard (13-02-2006)
Kommentar
Fra : Lasse Vestergaard


Dato : 13-02-06 19:15

Johan Holst Nielsen wrote in dk.edb.internet.webdesign.serverside.php:
> well - :) Jeg ville vøre det sådan:
>
> if(isset($_POST['tti'])) {
> //Bør valideres ;)
> $_SESSION['shoppingCart'][$_POST['id']] = $_POST['stk'];
> }
>
> if(size($_SESSION['shoppingCart'])<=0) {
> echo "Indkøbskurven er tom!";
> }
> else {
> foreach($_SESSION['shoppingCart'] as $vareid=>$quantity) {
> $query = "SELECT navn FROM varer WHERE vid = '".$vareid."'";
> $result = mysql_query($query) OR DIE("Hva' skete der lige der?");
> echo mysql_result($result,0,'navn')." ".$quantity." stk.";
> }
> }
>
>
> mvh
> johan

Hej!

Nu virker det sgu
Tak for det.

Jeg synes godt nok der er en del mere til sessions end der omtales i div.
tutorials!!!

vh

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Erlend Klakegg Bergh~ (12-02-2006)
Kommentar
Fra : Erlend Klakegg Bergh~


Dato : 12-02-06 22:02

Lasse Vestergaard skrev:
> Hej!
>
> Jeg har det problem at jeg vil lave en indkøbskurv vha. sessions.
> Jeg har været uendelig mange steder henne for at se hvordan man
> gør, men ingen har endnu kunne vise mig nøjagtigt hvad jeg leder
> efter.
>
> Hver gang jeg ser eksempler med sessions, så sætter man kun en
> session($_SESSION['halloj']). Jeg har i mit tilfæld brug for to
> session-arrays. Da jeg i min indkøbskurv vil vise varernes navne
> og hvor mange brugeren har valgt af hver.
>
> Jeg har læst mig til at session_register ikke længere skal
> bruges, da der er sikkerhedsmæssig problemer.
>
> Jeg håber der er nogen der kan hjælpe.

Det var et lignende spørsmål på no.it.programmering.php for en liten
stund siden. Du kan jo evt. ta en titt.

<URL:
http://groups.google.com/group/no.it.programmering.php/browse_thread/thread/cbd5cf106bbac927/#dbcbcd02d4970b08
>

--

Vennlig hilsen

Erlend Klakegg Bergheim

Dan Storm (13-02-2006)
Kommentar
Fra : Dan Storm


Dato : 13-02-06 19:57

Lasse Vestergaard skrev:
> Hej!
[snip]

En mulig løsning på dit forespørgsel ville være at du laver en
tilføjelses fil der ganske enkelt tjekker om den valgte vare er korrekt!
F.eks:
den form der poster til addtobasket.php indeholder felterne
itemno (vareid) og pcs (antal)


addtobasket.php
<?
   require('databaseting.php');

   if( isset($_GET['itemno']) )
   {
      $query = mysql_query("SELECT * FROM items WHERE
itemno='".mysql_real_escape_string($_POST['itemno'])."'");
      if( mysql_num_rows($query) < 1 )
      {
         
         echo "<h3>FEJL</h3>   Varen eksisterer ikke.";
         exit;
         
      }
      else
      {
         if(($_POST['pcs']/$_POST['pcs']) != 1)
         {
            echo "<h3>FEJL</h3>    Antal skal være et tal";
            exit;
         }
         $_SESSION['basket'][$_GET['itemno']] =
$_SESSION['basket'][$_POST['itemno']] + $_POST['pcs'];
         header('Location: basket.php');
         exit;
      }
   }

   header('Location: basket.php');
?>


Og så har jeg jo gjort et stort nummer ud af at få min præsentation af
indkøbskurven nem og overskuelig og her er så mit bud:

basket.php
<?php
echo '
<h2>Indkøbskurven</h2>
<table class="basket">
<tr><th>Fjern</th><th>Varenavn</th><th>Varenummer</th><th>Antal</th><th>Pris
pr. stk.</th><th>Ialt</th></tr>
';


foreach($_SESSION['basket'] as $varenr => $antal)
{
   
   $query = mysql_query("SELECT * FROM items WHERE itemno='".$varenr."'");
      
                        $ialt = 0;
                        if(mysql_result($query, 0, "offer") == '')
                        {
                              $ialt = $ialt + (mysql_result($query, 0, "price") * $antal);
                        }
                        else
                        {
                            $ialt = $ialt + (mysql_result($query, 0, "offer") * $antal);
                        }

      if(mysql_result($query, 0, "offer") == '')
      {
          $price = substr(mysql_result($query, 0, "price"), 0,
-2).','.substr(mysql_result($query, 0, "price"), -2);
       }
       else
       {
          $price = substr(mysql_result($query, 0, "offer"), 0,
-2).','.substr(mysql_result($query, 0, "offer"), -2);
       }





   
   echo '<tr>
            <td><a href="addtobasket.php?remove='.mysql_result($query, 0,
"itemno").'" class="remove" title="Fjern vare">[x]</a></td>
            <td>'.stripslashes(mysql_result($query, 0, "name")).'</td>
            <td>'.mysql_result($query, 0, "itemno").'</td>
            <td>'.$antal.'</td><td>'.$price.'</td><td>'.substr($ialt, 0,
-2).','.substr($ialt, -2).'</td>
            </tr>
            ';
}

            if(isset($_SESSION['basket']))
            {
               $total = 0;
               foreach($_SESSION['basket'] as $varenr => $antal)
               {
                     $query = mysql_query("SELECT price, offer FROM items WHERE
itemno='".$varenr."'");
                        if(mysql_result($query, 0, "offer") == '')
                        {
                              $total = $total + (mysql_result($query, 0, "price") * $antal);
                        }
                        else
                        {
                            $total = $total + (mysql_result($query, 0, "offer") * $antal);
                        }
               }
               
               $moms = (20 * ($total / 100)) / 100;      
               $total = substr($total, 0, -2).','.substr($total, -2);
               if($total == ',0') { $total = '0,00'; }
            }
            else
            {
               $total = '0,00';
            }

         


echo '
<tr>
<td class="total"></td>
<td class="total"></td>
<td class="total"></td>
<td class="total"></td>
<td class="total">Samlet pris: </td>
<td class="total">'.$total.'</td>
</tr>
<tr>
<td class="moms"></td>
<td class="moms"></td>
<td class="moms"></td>
<td class="moms"></td>
<td class="moms">Heraf moms (25%)</td>
<td class="moms">'.number_format($moms, 2, ',', '.').'</td>
</tr>
</table>';
?>

Så kan du jo kigge koden igennem. Den burde være til at overskue.

--
Dan Storm - storm at err0r dot dk / http://err0r.dk

Tro ikke brugerne vil gøre noget for at undgå dit killfilter
- Så vigtig er du heller ikke!

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408926
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste