Avatar billede cen Nybegynder
29. januar 2002 - 16:43 Der er 19 kommentarer og
2 løsninger

Indkøbssystem

Jeg ville bare vide hvordan man laver den del af et indkøbssystem, hvor man gemmer varene og senere hender dem frem i f.eks. en "indkødskurv".

Håber at der er nogle der vil hjælpe mig for jeg kan ikke lige gennemskue det :)

- CEN
Avatar billede jensgram Nybegynder
29. januar 2002 - 16:53 #1
Du kunne jo gemme nogle vare-id i en cookie !?
Avatar billede cen Nybegynder
29. januar 2002 - 17:07 #2
ja, det er jeg klar over, men hvordan gør jeg det sådan at den ikke skal tjekke 117 cokkies igennem, når man skal hente dem ??
Avatar billede jensgram Nybegynder
29. januar 2002 - 17:30 #3
Gem id-erne i et array:
$varer[] = $det_id_der_lige_er_blevet_valgt . "|" . $antal;

setcookie('varer', $varer[]);

Så kan du bruge explode() til at dele id og antal.
Avatar billede cen Nybegynder
29. januar 2002 - 17:40 #4
explode() ??, hvordan henter jeg så dataerne igen ??
while($id = "0", $vare[$id], $id++){
Og hva så ??
}
Avatar billede cen Nybegynder
29. januar 2002 - 17:42 #5
nå ja...
while($id = "0", $noget = $vare[$id], $id++){
echo "$noget";
}

er det helt forkert ??

- CEN
Avatar billede tcr480 Nybegynder
30. januar 2002 - 00:16 #6
Det kan give problemet ved butikker hvor man køber meget. Den maximale antal cookies man kan sætte hos en klient (fra en server) er 20 stk (så vidt jeg husker).

En anden mulighed kunne være at lave lidt samme system blot kun med en cookie og kalde den

VareID_antal|VareID_antal osv osv...

Men der er selvfølgelig også en maximum længde af en cookie... så det er lidt svært at svare 100 % på :o)

Sidste løsning er at køre det via en database, hvilket er en del tungere... :o(
Eller tjekke på længden af cookies, og lade f.eks. 10 vare ligge i hver. Dermed er man oppe på 200 vare.. :o))
Avatar billede cen Nybegynder
07. februar 2002 - 15:13 #7
undskyld jeg ikke har fået givet point men har ikke rigtig været herinde på det sidste...

mr_noname kan jeg ikke få et svar fra dig ??

- CEN
Avatar billede jensgram Nybegynder
08. februar 2002 - 13:18 #8
Jeg laver lige et nyt forslag. Det andet kan du vist ikke bruge til noget, men personligt ville jeg sætte en cookie med adskillelse af vare-id og antal som også tcr480 skriver:

ID|antal|ID|antal ...

Og så dele vha explode ( http://dk.php.net/explode ). Det skulle ikke være så svært. Du kunne jo sætte strengen $varer i en cookie (på normal vis). Når folk smider en vare i kurven udfører du:
$varer = $varer . '|' . $nyt_ID . '|' . $nyt_antal;
Og sætter på ny cookien. Når kunden bestiller varerne kører du en explode på strengen:
$var_arr = explode($varer, '|');
Nu kan du køre en for ()-løkke, der springer to ad gangen:
for ($i = 0; $i < sizeof($varer); $i += 2) {
    min_bestille_funktion($var_arr[$i], $var_arr[$i + 1]); // vare, antal
}

Det skulle du nok kunne lave.

Håber du kunne bruge det.

Jens Gram - www.jensgram.dk
Avatar billede jensgram Nybegynder
08. februar 2002 - 13:21 #9
UPS:

$var_arr = explode($varer, '|');

=>

$var_arr = explode('|', $varer);
Avatar billede cen Nybegynder
08. februar 2002 - 15:49 #10
Jamen, hva med maximun længden af cookies ???
Avatar billede jensgram Nybegynder
08. februar 2002 - 17:01 #11
Ja det er jo lige det :)
Avatar billede jensgram Nybegynder
08. februar 2002 - 17:02 #12
Mon ikke det går - hvor stort skal systemet være?
Avatar billede cen Nybegynder
08. februar 2002 - 17:06 #13
egentlig er der ikke noget system (endnu), spørsmålet blev egentlig lavet, for at jeg skulle finde ud af hvordan man gør, og så lave et, så jeg når jeg skal bruge det bare lige kan hive det frem.... :D

men hvor mange vare tror du systemet kan klare ??

- CEN
Avatar billede cen Nybegynder
08. februar 2002 - 17:25 #14
kan man ikke lave noget lignende dette:

if (strlen($vare) < 50){
$varer = $varer . '|' . $nyt_ID . '|' . $nyt_antal;
set cokkie med $vare
} elseif (strlen($vare2) < 50){
$varer2 = $varer2 . '|' . $nyt_ID . '|' . $nyt_antal;
set cokkie med $vare2
} elseif (strlen($vare3) < 50){
$varer3 = $varer3 . '|' . $nyt_ID . '|' . $nyt_antal;
set cokkie med $vare3
} else (strlen($vare4) < 50){
$varer4 = $varer4 . '|' . $nyt_ID . '|' . $nyt_antal;
set cokkie med $vare4
}

så er man da oppe på en 40 - 50 vare...

- CEN
Avatar billede cen Nybegynder
08. februar 2002 - 17:29 #15
eller:

for ($i = 1;, $i++;) {
if (strlen($vare . $i) < 50){
$varer . $i = $varer . '|' . $nyt_ID . '|' . $nyt_antal;
set cokkie med $vare . $i;
}}

- CEN
Avatar billede jensgram Nybegynder
08. februar 2002 - 17:43 #16
Jo og så sæt alle cookies sammen til én streng.
Avatar billede cen Nybegynder
09. februar 2002 - 17:53 #17
nu har jeg endelig fået taget mig sammen til at prøve om det virker, og det gør det altså ikke :(

varene bliver gemt fint nok, men problemet er når jeg skal hive dem ud igen... jeg kan kun få den til at køre igennem én gang...

her kan du se hvordan scriptet ser ud:

$var_arr = explode('|', $varer);

for($i=0;$i<count($varer);$i++) {
  echo "$var_arr[$i];
$i++;
  echo $var_arr[$i];
}

- CEN
Avatar billede jensgram Nybegynder
10. februar 2002 - 10:00 #18
prøv:

$var_arr = explode('|', $varer);

for($i=0;$i<count($varer);$i+=2) {
  echo "$var_arr[$i];
$j = $i + 1;
  echo $var_arr[$j];
}
Avatar billede cen Nybegynder
10. februar 2002 - 11:06 #19
kører stadig kun igennem én gang...
Avatar billede jensgram Nybegynder
10. februar 2002 - 13:24 #20
nå! prøv at erstatte count() med sizeof()
Avatar billede jensgram Nybegynder
10. februar 2002 - 13:25 #21
ihhhhh!

$var_arr = explode('|', $varer);

for($i=0;$i<sizeof($var_arr);$i+=2) { // det skal være array'et
  echo "$var_arr[$i];
$j = $i + 1;
  echo $var_arr[$j];
}
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