Avatar billede neess Nybegynder
12. oktober 2004 - 22:08 Der er 8 kommentarer og
1 løsning

Indkøbs kurv der ikke helt virker

Jeg har lavet 2 objekter.
<?
class Indkoebskurv {
  var $vareArr;  // et array der indeholder dine vare

  function Indkoebskurv (){
  //$this -> vareArr = $vareArr;

  }
 
  // tilfoejer en vare
  function tilfoejVare($vare) {
    $vareArr[] = $vare;
  }

  // fjerner en vare
  function fjernVare($id) {
    $laengde = sizeof($vareArr);
   
    // varen bliver fjernet, hvis den findes
    for($i = 0; $i < $laengde; $i++) {
      if($id == $vareArr[$i] -> hentId())
        $vareArr[$i] == "";
    }
  }

 
    // udskriver varene
  function udskrivVare() {
    $laengde = sizeof($vareArr);

    echo $laengde;
    for($i = 0; $i < $laengde; $i++) {
      $id = $vareArr[$i] -> hentId();
      echo $id;
     
    }
  }

  // lav flere funktioner her...
}

?>

<?
class Vare {
  var $id;      // varens id
  var $navn;  // varens navn
  var $pris;    // varens pris
  // tilfoej selv flere her

  function Vare($id, $navn, $pris) {
    $this -> id = $id;
    $this -> navn = $navn;
    $this -> pris = $pris;
  }

  // returnere varens id
  function hentId() {
    return $this -> id;
  }

  // returnere varens pris
  function hentPris() {
    return $this -> pris;
  }

  // returnere varens navn
  function hentNavn() {
    return $this -> navn;
  }
}
?>
Som jeg henter ind. Når jeg så prøver at smide nogle ind i arrayt med følgende metode kommer der ikke nogen.
<?
require("top.php");
// når kurven skal laves
$enVare = new Vare(11,"computer med det hele",11000);
$_SESSION['kurv'] = new Indkoebskurv();

// når du skal tilføje en vare:

$_SESSION['kurv'] -> tilfoejVare($enVare);
$_SESSION['kurv'] -> udskrivVare();

?>

Nogen der kan hjælpe mig med at komme videre, eller har en anden smart løsning i baghånden ??
Avatar billede neess Nybegynder
12. oktober 2004 - 22:10 #1
Jeg for inge fejl, men der bliver bare udskrevet 0 i forbindelse med
echo $laengde;
Avatar billede baitianlong Nybegynder
12. oktober 2004 - 22:15 #2
Jeg vil tro, der skal stå noget andet her:

function tilfoejVare($vare) {
  $vareArr[] = $vare;
}


nemlig:
function tilfoejVare($vare) {
  array_push($vareArr, $vare);
}

:)
Avatar billede erikjacobsen Ekspert
12. oktober 2004 - 22:20 #3
function tilfoejVare($vare) {
  $this->vareArr[] = $vare;
}
Avatar billede jakoba Nybegynder
12. oktober 2004 - 22:28 #4
Du har indkøbskurven gemt som session variabel, og jeg tvivler meget på at php gemmer en dyb kopi af objekterne i $_SESSION når den gemmer sessionfilen imellem scripts, dvs at varekurvens array 'varearr' blot indeholder null værdier når du fortsætter i næste script.

derudover bør du søge for at php ved  'varaarr'  er et array:
  var $vareArr = array();  // et array der indeholder dine vare
før du begynder at lægge ting ind i det med linien
    $vareArr[] = $vare;

det er lidt det samme legende gør, bare på en anden måde ( jeg synes min måde er bedst :-))
Avatar billede jakoba Nybegynder
12. oktober 2004 - 22:53 #5
Ups.

Det ser ud til at php4 slet ikke suppoterer objekter som session variable medmindre du selv laver negen krumspring for at få det til at virke:
    http://dk.php.net/manual/en/language.oop.serialization.php
Avatar billede neess Nybegynder
13. oktober 2004 - 14:11 #6
class Indkoebskurv {
  var $vareArr = array();  // et array der indeholder dine vare
er nu ændret.¨
Har så prøvet at ændre tilfoejVare til Jeres forslag, men ingen af dem giver noget resultat.
Avatar billede neess Nybegynder
13. oktober 2004 - 14:38 #7
Jeg har prøvet at gemme opbjekctet Vare i en cookie og gik meget fint
Avatar billede neess Nybegynder
13. oktober 2004 - 14:41 #8
Hmm ser ud til cookies og objekter ikke spiller så godt sammen, nogen der har en ide til hvordan man ellers smart kunne lave en enkøbs kurv
Avatar billede neess Nybegynder
28. december 2004 - 11:02 #9
fik det ikke til at virke, men fiksede det på en anden måde
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