Avatar billede dk-andersson Nybegynder
05. juni 2008 - 11:15 Der er 9 kommentarer og
1 løsning

indkøbskurv

Er ved at lave en indkøbs kurv, men er løbt ind i et lille problem. Jeg kan ikke finde ud af at lave et script som kan lægge antal var sammen i kurven.

Min kurv reg. knd. på deres ip adr. det vil sige at hver enkelt var ligger i en table for sige selv. men med samme ip adr.

Det jeg så gerne vil nu er at ligge antalet af vare sammen som knd har bestilt. Det er tal værdi og den skal hente alle sammen som har den samme ip_adr

Hvordan kan jeg lave det.. har prøvet med while men det gik ikke.
Avatar billede dk-andersson Nybegynder
05. juni 2008 - 11:57 #1
Mit script

$ip_adr = USER_IP;
$date = time();



//Tjekker om antal_vare_kurv har en værdi eller giver vi den værdien 0
if($antal_vare_kurv == '') {
  $antal_vare_kurv = '0';
}

//Tjekker om ip_adr. er reg. i db kurv
$result = dbquery("SELECT * FROM ".$db_prefix."kurv WHERE `ip_adr` = '".USER_IP."'");
                  if (dbrows($result) != 0) {
                    print $antal_vare_kurv." vare(r) i kurven";
                      for ($i=0;$i<sizeof($row['antal_vare']);$i++) {
                          $sum += $tal;
                          print $sum;
                        }
                  }

if($_POST['basket'] ) {
        $menu = "INSERT INTO ".$db_prefix."kurv (`id`, `vare_nummer`, `antal_vare`, `time`, `ip_adr`) VALUES ('', '$_POST[vare_nummer]', '$_POST[antal_vare]', '$date', '$ip_adr')";
        $result_menu = dbquery($menu);

}
Avatar billede showsource Seniormester
05. juni 2008 - 11:58 #2
Det er bedre hvis du bruger sessions, og så referer til session_id() i stedet for en ip adresse.
Der kan jo sagtens komme flere fra samme ip.

Du kan jo bruge SUM() i mysql, til at lægge et eller flere felter/kolonner sammen.
Avatar billede dk-andersson Nybegynder
05. juni 2008 - 12:12 #3
okay hvordan gøre man så det.? Ikke så hård til session();
Avatar billede showsource Seniormester
05. juni 2008 - 12:24 #4
session_start()
starter session.
Men du må IKKE kalde den før du laver noget output til skærmen.
Linieskift, mellemrum FØR
<?php
session_start();

duer heller ikke!

Når du bruger session_start() kan du få fat i id'et med
session_id()

<?php
session_start();

echo session_id();

?>

Pr. default er php sat op til at sætte en cookie hos brugeren, som netop indeholder session_id()
Med andre ord, vil en bruger som ikke tillader cookies, så ikke kunne bruge siden, med mindre du sørger for at session_id() medsendes ved hvert link/post.
Hvilket vist også er default i phpopsætning, indtil cookien "bliver fundet"

Men langt de fleste brugere tillader jo cookies, og det virker vel også logisk nok hvis man er på en "indkøbsside".

Umiddelbart ville jeg ikke lægge noget i DB førend brugeren selv vælger at lægge noget i kurven.
Avatar billede showsource Seniormester
05. juni 2008 - 12:25 #5
Linieskift, mellemrum FØR startende php tag,
<?php
duer heller ikke
Avatar billede dk-andersson Nybegynder
05. juni 2008 - 12:36 #6
Fandt dette script her ind, men problemet er at være gang man klikker på noget på siden printer den teksten ud. hvad kan jeg gøre for at lave det om

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


Hvad skal man bruge dette til?
if(empty($_SESSION[user_session])){
  $user_session = substr(md5(uniqid(rand())), 0, rand(10, 20));
  $_SESSION[user_session] = $user_session;
}

if ( !isset( $_SESSION['kurv'] )) {
      $_SESSION['kurv'] = array();
}

$_SESSION['kurv'][] = array( "Vare_nummer" => $_POST['vare_nummer'], "Vare_pris" => $_POST['pris'], "Antal_vare" => $_POST['antal_vare']);


foreach ( $_SESSION['kurv'] as $vare )
{
  echo "Vare nummer: " . $vare['Vare_nummer'] . " Vare Pris: " . $vare['Vare_pris'] .  "Antal vare:" . $vare['Antal_vare'] . "<br>";
}




?>
Avatar billede showsource Seniormester
05. juni 2008 - 12:49 #7
Ændre denne:
  echo "Vare nummer: " . $vare['Vare_nummer'] . " Vare Pris: " . $vare['Vare_pris'] .  "Antal vare:" . $vare['Antal_vare'] . "<br>";

Evt. spørge om count($_SESSION['kurv']) > 0 og hvis den er, udskriv

Selv ville jeg sætte en session, og alt efter om den var sat eller ej, lave udregning/hente fra DB eller vise "ingen vare i din kurv"

Pr. default gemmes sessions i en fil på serveren, som jo skal "åbnes og læses" af php.
Og jo større fil, jo langsommere side.
Så hellere gemme i DB.
Avatar billede showsource Seniormester
05. juni 2008 - 12:54 #8
Dette
if(empty($_SESSION[user_session])){
  $user_session = substr(md5(uniqid(rand())), 0, rand(10, 20));
  $_SESSION[user_session] = $user_session;
}

er nok for at ha' et id at refere til.
Avatar billede dk-andersson Nybegynder
23. juli 2009 - 20:44 #9
lukker
Avatar billede dk-andersson Nybegynder
23. juli 2009 - 20:44 #10
lukker
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