Avatar billede krk Nybegynder
14. september 2005 - 15:28 Der er 40 kommentarer og
1 løsning

counter i session

Ref. fra tidligere spørgsmål http://www.eksperten.dk/spm/647855

Når jeg require min side med kurv-counter (basket_counter1.php) så "glemmer" den at skrive hvad der er i kurven, den udskriver kun antallet. Dette gølder for dokument kurv.php
Min kode se nu sådan ud. (der er 3 dokumenter)

index.php:
<?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["varer"]["id".$tilkurv]["antal_kurv"] = $antal_kurv;
  $_SESSION['count'] += 1;
}

?>

<Html>

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

<Body>
<?php
//henter counter i kurv
require("req/basket_counter1.php");

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:
<?php
session_start();
  $id     = $_REQUEST['id'];
  $slet = $_REQUEST['slet'];



require("req/basket_counter1.php");


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";
?>

basket_counter1.php:
<?php
$antal = 0;
foreach($_SESSION['varer'] as $vare)
{
$antal += $vare['antal'];
}
echo "Antal: " . $antal;
?>
Avatar billede krk Nybegynder
14. september 2005 - 15:31 #1
Jeg har lige fundet ud af at når jeg flytter require("req/basket_counter1.php");
ned i bunden af dokument kurv.php så virker det fint, men ikke når det står i toppen... og jeg vil gerne have det i toppen
Avatar billede jakobdo Ekspert
14. september 2005 - 15:38 #2
Hvad indeholder selve: req/basket_counter1.php file?
Avatar billede krk Nybegynder
14. september 2005 - 15:42 #3
Den indeholder kun dette:

<?php
$antal = 0;
foreach($_SESSION['varer'] as $vare)
{
$antal += $vare['antal'];
}
echo "Antal: " . $antal;
?>
Avatar billede jakobdo Ekspert
14. september 2005 - 15:47 #4
Du burde godt kunne kalde den øverst!
Hvad siger den af fejl?
Avatar billede krk Nybegynder
14. september 2005 - 15:49 #5
den giver mig inden fejl. Der bliver bare ikke udskrevet hvad der er i kurven - altså varerens navn og pris
Avatar billede krk Nybegynder
14. september 2005 - 15:50 #6
du kan se det på: http://kryt.dk/akvariehulen
Lig en vare i kurven og klik på kurv
Avatar billede jakobdo Ekspert
14. september 2005 - 15:54 #7
Altså den tæller jo fint nok?
Skal den ikek det?
Avatar billede krk Nybegynder
14. september 2005 - 15:58 #8
Jo den tæller fint nok, men hvis jeg ikke requier basket_counter.php så ud skriver hvilke vare der er i kurven.
Hvis du kigger på det link jeg nævnte før og så lige siger til når du har set det, så skal jeg vise dig forskellen
Avatar billede krk Nybegynder
14. september 2005 - 16:00 #9
ud skriver hvilke vare der er i kurven= udskrives hvilke vare der er i kurven.

Undskyld de mange slå/stave fejl
Avatar billede jakobdo Ekspert
14. september 2005 - 16:02 #10
Når jeg trykker kurv, får jeg kun antal vare i kurven ja!
Er det fejlen?
Avatar billede krk Nybegynder
14. september 2005 - 16:04 #11
ja, prøv og F5, så skulle der gerne komme nogle vare frem
Avatar billede jakobdo Ekspert
14. september 2005 - 16:05 #12
nu kommer varene ja!
men ingen count!
Jeg må lige kigge på det senere!
Smutter nemlig hjem nu! :o)
Den hotmail du fik før, kan du evt også fange mig på MSN med.
Avatar billede krk Nybegynder
14. september 2005 - 16:06 #13
Gør der det?
Jeg har udkommenteret require("req/basket_counter1.php");
Nu har jeg godt nok ingen antal vare i kurv, men hvilke vare jeg har bestilt. Jeg vil nu gerne at man kan se begge dele.
Det der undre mig er at hvis jeg sætter require("req/basket_counter1.php"); ned i bunden af kurv.php så virker det fint
Avatar billede krk Nybegynder
14. september 2005 - 16:08 #14
Det lyder fint.
Jeg stopper også snart for idag, men det kan være vi kan tage tråden op igen i morgen :-)
Avatar billede jakobdo Ekspert
14. september 2005 - 16:55 #15
På den sige man får når man klikke kurv!
Prøv lige i toppen af den at skriv:
echo "<pre>";
print_r($_SESSION['varer']);
echo "</pre>";
Avatar billede krk Nybegynder
14. september 2005 - 17:22 #16
ja, nu er det gjort
Avatar billede jakobdo Ekspert
14. september 2005 - 20:43 #17
Prøv at test denne kurv.php

<?php
session_start();
$id  = $_GET['id'];
$slet = $_GET['slet'];

require("req/basket_counter1.php");

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 ";
        echo "<A HREF=\"kurv.php?slet=" . urlencode($key) . "\"> Slet</A></Td></Tr>";
        echo "<br>";
    }
}
else
{
    echo "Ingen vare i kurven";
}

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";
}

print"<br><br><a href='index.php'>Tilbage </a>til shop";
?>
Avatar billede krk Nybegynder
14. september 2005 - 22:55 #18
Nej, det virker desværre ikke. Eller sagt på en anden måde. det virker på sammen måde som det foregående.
Avatar billede krk Nybegynder
14. september 2005 - 23:19 #19
Har du nogen som helst forklaring på hvorfor koden ikke går ind i while løkken når det er at der skrives require("req/basket_counter1.php");
Kan du se hvad det er der arbejder i mod hinanden?
Avatar billede jakobdo Ekspert
15. september 2005 - 08:04 #20
Prøv under kurv.php og skriv i bunden:

echo "<hr>";
show_source(__FILE__);
Avatar billede krk Nybegynder
15. september 2005 - 08:31 #21
det skulle være uploaded nu
Avatar billede jakobdo Ekspert
15. september 2005 - 08:34 #22
Prøv lige i toppen af din kurv.php at lav:
echo "<pre>";
print_r($_SESSION['varer']);
echo "</pre>";
Avatar billede krk Nybegynder
15. september 2005 - 08:36 #23
er gjort
Avatar billede jakobdo Ekspert
15. september 2005 - 08:42 #24
Der er noget helt galt!
Prøv lige at smid koden: req/basket_counter1.php herind igen!
Avatar billede krk Nybegynder
15. september 2005 - 08:43 #25
<?php

$antal1 = 0;
foreach($_SESSION['varer'] as $vare)
{
$antal1 += $vare['antal'];
}
echo "Antal: " . $antal1;
?>
Avatar billede jakobdo Ekspert
15. september 2005 - 08:50 #26
Det er mærkeligt!
Din session indeholder fint alle ting.
Prøv at skriv: echo "Antal vare: " . count($_SESSION['varer']);
Avatar billede krk Nybegynder
15. september 2005 - 08:53 #27
jeg gik ud fra at det var i kurv.php
Avatar billede jakobdo Ekspert
15. september 2005 - 08:56 #28
Ok, den ser også ok ud!
Prøv efter:
if (count($_SESSION['varer'])>0)
{
at indsæt: echo "Vi har vare i kurven :o)";
Avatar billede krk Nybegynder
15. september 2005 - 08:59 #29
den går godt nok ind i if-sætningen, men vil ikke fortsætte ind i while-løkken
Avatar billede jakobdo Ekspert
15. september 2005 - 09:14 #30
Husk nu at gem alt koden!
men prøv at ret while(..... til og med dens }
og sæt denne ind:

foreach ($_SESSION['varer'] as $key => $vare)
{
    echo "Navn: " . $vare['navn'] . "<br>";
    echo "Antal: " . $vare['antal'] . "<br>";
    echo "Pris: " . $vare['pris'] . "<br>";
    echo "Mængde: " . $vare['maengde'] . "<br>";
    $ialt += $vare['pris'];
    echo "<A HREF=\"kurv.php?slet=" . urlencode($key) . "\"> Slet</A></Td></Tr>";
    echo "<br>";
}
Avatar billede krk Nybegynder
15. september 2005 - 09:16 #31
okay
Avatar billede krk Nybegynder
15. september 2005 - 09:19 #32
nu ser det jo lige fremt ud til det virker. Kan du give en forklaring på hvorfor det andet ikke virkede
Avatar billede krk Nybegynder
15. september 2005 - 09:30 #33
min "ialt" pris regner ikke rigtig længere
Avatar billede jakobdo Ekspert
15. september 2005 - 09:37 #34
Hvad er problemet med ialt?
Og hvorfor det virker og ikke det andet, har jeg ikke den fjerneste ide om! :o(
Avatar billede jakobdo Ekspert
15. september 2005 - 09:38 #35
Pris mangler at blive ganget med antal! :o)
Avatar billede krk Nybegynder
15. september 2005 - 09:39 #36
når jeg har bestilt 3 antal af den samme vare til ex 69,00 så bliver ialt = 69.00 og ikke 207.00
Avatar billede jakobdo Ekspert
15. september 2005 - 09:44 #37
Dette skulle gøre det:

foreach ($_SESSION['varer'] as $key => $vare)
{
    echo "Navn: " . $vare['navn'] . "<br>";
    echo "Antal: " . $vare['antal'] . "<br>";
    echo "Pris: " . $vare['pris'] * $vare['antal'] . "<br>";
    echo "Mængde: " . $vare['maengde'] . "<br>";
    $ialt += $vare['pris'] * $vare['antal'];
    echo "<A HREF=\"kurv.php?slet=" . urlencode($key) . "\"> Slet</A></Td></Tr>";
    echo "<br>";
}
Avatar billede krk Nybegynder
15. september 2005 - 09:47 #38
tak, jeg manglede bare et "+". :-|
Vil du ikke gerne have point, så prøver jeg selv at arbejde lidt videre
Avatar billede jakobdo Ekspert
15. september 2005 - 09:51 #39
Jo tak! :o)
Avatar billede krk Nybegynder
15. september 2005 - 09:52 #40
Tak for hjælpen, det har været lærerigt
Avatar billede jakobdo Ekspert
15. september 2005 - 09:57 #41
Jeg takker for point!
Det var sgu også noget af en hård nyser! :o)
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