Avatar billede krk Nybegynder
14. september 2005 - 08:08 Der er 34 kommentarer og
1 løsning

tæller i session

Hej
Hvordan laver jeg en tæller i en session?
Jeg skal brugen den så jeg ksn skrive: "Du har 5 ting i kurven"
Avatar billede jakobdo Ekspert
14. september 2005 - 08:11 #1
$_SESSION['count'] += 1;
Avatar billede jakobdo Ekspert
14. september 2005 - 08:12 #2
og den lange version:

<?php
session_start();
$_SESSION['count'] += 1;
if($_SESSION['count'] >= 5)
{
echo "Du har 5 ting i kurven";
}
Avatar billede krk Nybegynder
14. september 2005 - 08:56 #3
fint, tak for hjælpen
Avatar billede jakobdo Ekspert
14. september 2005 - 08:57 #4
NP!
Avatar billede krk Nybegynder
14. september 2005 - 11:11 #5
når jeg bruger count, går den så ned i session og tæller hvor mange elementer der er?
Jeg har lidt problemer når jeg har slettet nogle vare fra min indkøbskurv så står min 'counter' stadig på det samme antal
Avatar billede jakobdo Ekspert
14. september 2005 - 11:15 #6
Når du sletter skal du hsuke at tælle count ned: $_SESSION['count'] -= 1;
Avatar billede krk Nybegynder
14. september 2005 - 12:38 #7
min "slet" ser sådan ud:
if (isset($slet)) {
  $ialt -= $pris;
  unset($_SESSION["varer"][$slet]);
}

men den sletter alle vare med det samme id.
Selv om alle varerne med den samme id er vær fra sessions, så ændre det ikke på min $count.
Avatar billede krk Nybegynder
14. september 2005 - 12:39 #8
vil det være nemmer/mere praktisk hvis man kun slettede 1 vare af gangen og ikke alle vare med samme id?
Avatar billede krk Nybegynder
14. september 2005 - 12:41 #9
Er det muligt at jeg  kan sende dig koden og du så evt kan kigge det igennem. Der skal selvfølgelig nok kommer flere point :-)
Avatar billede jakobdo Ekspert
14. september 2005 - 12:58 #10
Du må gerne sende mig koden ja!
jakobdo (at) hotmail (dot) com
Avatar billede krk Nybegynder
14. september 2005 - 13:10 #11
Jeg har sendt en mail til dig, men hvis det er nemmer for dig kan vi sagtens fortsætte forklaringen her, så der evt. også er andre der kan få gavn af det :-)
Avatar billede jakobdo Ekspert
14. september 2005 - 13:17 #12
Lad os evt vise svaret her til sidst!
Men jeg har ikke modtaget noget!
Prøv evt at send til: jakobols (at) tiscali (dot) dk
Avatar billede krk Nybegynder
14. september 2005 - 13:21 #13
Det er på vej, sorry :-)
Avatar billede jakobdo Ekspert
14. september 2005 - 13:28 #14
Jeg modtager intet!
Smid evt din kode herind.
Avatar billede krk Nybegynder
14. september 2005 - 13:36 #15
Index.php:
<?
  session_start();

  $id     = $_REQUEST['id'];
  $slet = $_REQUEST['slet'];


// Tildele pris og navn på baggrund af ID

if ($id =$id) {
      $tilkurv     = $hf_foder_navn;
      $pris         = $hf_foder_pris;
      $maengde    = $hf_foder_maengde;

}

if (isset($tilkurv)) {
  $_SESSION["varer"]["id".$tilkurv]["antal"]++;
  $_SESSION["varer"]["id".$tilkurv]["navn"] = $tilkurv;
  $_SESSION["varer"]["id".$tilkurv]["pris"] = $pris ;
  $_SESSION["varer"]["id".$tilkurv]["maengde"] = $maengde;
  $_SESSION['count'] += 1;
}


?>

<Html>

<Head>
<Title>Indkøbskurv</Title>
</Head>

<Body>
<?
if (count($_SESSION["varer"])==0) {
    echo "Du har 0 ting i kurven";
}elseif(count($_SESSION["varer"])==1){
    echo "Du har 1 ting i kurven";
}elseif(count($_SESSION["varer"])>1){
    echo "Du har $count ting i kurven";
}


print"<br><br><a href='kurv.php'>Kurv</a><br><br>";
?>


<?php

require("req/db_connect.php");

$query        ="SELECT * FROM akvarie_hf_foder  ;";
$result    = mysql_db_query ($database, $query, $link );


print"<table  border='1' cellspacing='0' cellpadding='0'>
          <tr valign='top'>
          <td><b>Vare nummer</b></td>
          <td><b>Navn</b></td>
          <td><b>Beskrivelse</b>
          </td><td><b>Mængde</b></td>
          <td><b>Pris</b></td>
          <td><b>Tilføj til kurv</b></td></tr> ";
        while($row = mysql_fetch_array($result)){
            $id                        = $row[id];
            $hf_foder_varenr        = $row[hf_foder_varenr];
            $hf_foder_navn             = $row[hf_foder_navn];
            $hf_foder_beskrivelse     = $row[hf_foder_beskrivelse];
            $hf_foder_maengde         = $row[hf_foder_maengde];
            $hf_foder_pris             = $row[hf_foder_pris];
            print"    <tr><td>$hf_foder_varenr</td>
                    <td>$hf_foder_navn </td>
                    <td width='300'>$hf_foder_beskrivelse </td>
                    <td>$hf_foder_maengde kg </td>
                    <td>$hf_foder_pris kr </td>
                    <td align='center'><a href='index.php?id=$id&hf_foder_navn=$hf_foder_navn&hf_foder_beskrivelse=$hf_foder_beskrivelse&hf_foder_pris=$hf_foder_pris&hf_foder_maengde=$hf_foder_maengde'>Kurv </a>    </td>
                    </tr>";
        }   

?>
         
</Body>

</html>


kurv.php:
<?
session_start();
  $id     = $_REQUEST['id'];
  $slet = $_REQUEST['slet'];

// Tildele pris og navn på baggrund af ID

if (count($_SESSION["varer"])>=0) {
    print"Antal i kurven: $count <br>";

}

if (isset($slet)) {
  $ialt -= $pris;
  unset($_SESSION["varer"][$slet]);
}

print"<Font face=verdana, arial, helvetica size=2>";

 
if (count($_SESSION["varer"])>0) {
  while (list ($key, $val) = each ($_SESSION["varer"])) {
    $navn            =$_SESSION["varer"]["$key"]["navn"];
    $antal            =$_SESSION["varer"]["$key"]["antal"];
    $pris            =$_SESSION["varer"]["$key"]["pris"] * $antal ;
    $maengde        =$_SESSION["varer"]["$key"]["maengde"]; 
    $ialt             += $pris;
    echo "$antal x $navn DKK  " . number_format($pris,2);
    echo " Antal kg: $maengde ";
    printf("<A HREF=\"kurv.php?slet=%s&\"> Slet</A></Td></Tr>", urlencode($key) );
    echo "<br>";
  }
}

if ($ialt>0) {
  echo "<B> I alt DKK ". number_format($ialt,2)."</b>";
}

/* Hvis indkøbsvognen er tom */
if (count($_SESSION["varer"])==0) {
      echo "Din indkøbskurv er tom";
  $count = 0;

}

print"<br><br><a href='index.php'>Tilbage </a>til shop";
?>
Avatar billede jakobdo Ekspert
14. september 2005 - 13:47 #16
Hvorfor bruger du ikke "bare": $_SESSION["varer"]["id".$tilkurv]["antal"]
Den indeholder jo antal vare!
Avatar billede krk Nybegynder
14. september 2005 - 13:49 #17
Det har jeg prøvet, men den printer jo kun antallet ud for den vare jeg lige har lagt i kurven.
Hvordan får jeg alle "antal" lagt sammen?
Avatar billede krk Nybegynder
14. september 2005 - 13:52 #18
Jeg kan selvfølgelig køre den i en løkke
Avatar billede jakobdo Ekspert
14. september 2005 - 14:11 #19
Prøv evt at test:
echo "Antal varer: " . array_sum($_SESSION['varer']);
Avatar billede krk Nybegynder
14. september 2005 - 14:16 #20
Det kunne jeg ikke få til at virke, men jeg har løst det ved at lave en løkke
Avatar billede jakobdo Ekspert
14. september 2005 - 14:19 #21
Jeg tror også jeg misforstod din array-struktur!
Du kan evt teste på følgende måde:

echo "<pre>";
print_r($_SESSION['varer']);
echo "</pre>";

Så kan vi se hvordan du bygger det hele op!
Avatar billede krk Nybegynder
14. september 2005 - 14:30 #22
den printer dette retur:
Array
(
    [idPremium Lamb Meal ] => Array
        (
            [antal] => 2
            [navn] => Premium Lamb Meal
            [pris] => 369
            [maengde] => 15
            [antal_kurv] =>
        )

)
Avatar billede krk Nybegynder
14. september 2005 - 14:31 #23
[antal_kurv] =>
Skal du lige se bort fra. det er mig der er ved at forsøge noget
Avatar billede jakobdo Ekspert
14. september 2005 - 14:33 #24
Du undgår nok ikke en løkke nej!
Nu ved jeg ikke hvordan din løkke ser ud!
Men denne burde også kunne gøre det:
$antal = 0;
foreach($_SESSION['varer'] as $vare)
{
$antal += $vare['antal']
}
echo "Antal: " . $antal;
Avatar billede krk Nybegynder
14. september 2005 - 14:43 #25
når jeg sætter din kode ind, får jeg følgende fejæ:
Parse error: parse error, unexpected '}' in /hsphere/local/home/boris/kryt.dk/akvariehulen/req/basket_counter.php on line 6

Jeg kan ikke se hvad der er galt
Avatar billede krk Nybegynder
14. september 2005 - 14:46 #26
vent lidt, det er hvis  noget andet der er galt
Avatar billede jakobdo Ekspert
14. september 2005 - 14:47 #27
Der er en lille fejl i min kode!
$antal += $vare['antal']
skal være:
$antal += $vare['antal']; //<----- Havde glemt ;
Avatar billede krk Nybegynder
14. september 2005 - 14:53 #28
nej, jeg får stadig fejl
Jeg har sat din kode ind på et selvstændigt dokument og så skrevet " require("req/basket_counter.php"); " hvor det skal sættes ind, men jeg får stadig ovenstående fejl.
Min kode ser sådan ud:
<?php
$antal = 0;
foreach($_SESSION['varer'] as $vare)
{
$antal += $vare['antal']
}
echo "Antal: " . $antal;
?>
Avatar billede krk Nybegynder
14. september 2005 - 14:54 #29
jep, nu passer det :-)
Avatar billede jakobdo Ekspert
14. september 2005 - 14:54 #30
<?php
$antal = 0;
foreach($_SESSION['varer'] as $vare)
{
$antal += $vare['antal'];
}
echo "Antal: " . $antal;
?>
Avatar billede jakobdo Ekspert
14. september 2005 - 14:54 #31
Du glemte ; igen! :o)
Avatar billede krk Nybegynder
14. september 2005 - 15:02 #32
jeg havde ikke fået set dit svar inden jeg skrev, sorry
Fejlen er rettet og nu virker det.
Vil du ikke gerne snart have nogle point.
Smid et svar og fortæl mig hvordan jeg giver ekstra point :-)
Avatar billede jakobdo Ekspert
14. september 2005 - 15:06 #33
Et svar!
Ekstra point tror jeg du gør i toppen!
Men ved det faktisk ikke!
Avatar billede krk Nybegynder
14. september 2005 - 15:11 #34
Jeg kan ikke se hvor jeg giver dig ekstra point, men jeg opretter et ekstra spørgsmål. Så kan du få point den vej
Avatar billede jakobdo Ekspert
14. september 2005 - 15:13 #35
Jeg takker!
Husk at lav en reference til denne tråd så!
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