18. oktober 2005 - 09:49Der er
21 kommentarer og 1 løsning
Webshop (igen igen)
Efter at have søgt længe herinde uden held, har jeg nu besluttet mig at oprette et spørgsmål som følger.
- Jeg har oprettet en lille hjemmeside (meget simpel) i PHP med MySQL og ønsker at de varer jeg har på siden skal kunne købes pr. efterkrav (evt. senere pr. dankort). Jeg ønsker ikke at oprette en helt ny webshop, men mangler noget info om hvilke ting der kræves i min database for at lave f.eks. en indkøbskurv osv.
@ Puppetmaster - har kigget lidt på dit link - men det ligner for mig et færdigt system?
@ drbean - Jeg har pt. følgende i min database: user -ID (primary) -Username -Fistname -Surname -Email osv. osv... Varer -ID (primary) -Pris -Billede location osv. osv...
Siden fungerer sådan, at nogle bestemte brugere (bestemt af mig ;-) ) har adgang til at uploade billeder af varer som er til salg. Ved upload specificeres typen af vare, pris, beskrivelse, vægt osv. Og dette gemmes så i databasen sammen med brugerens id (styret via sessions) og stien til billedet. Hver "godkendt til upload - bruger" har sit eget directory til billederne, så jeg kan se hvad hver enkel bruger uploader.
På siden findes så en "varer/galleri" sektion, hvor man har mulighed for at vise "alle varer" "enkelte varekategorier" osv. alle baseret på forskellige kald til databasen. Alle varer vises på en visvare.php?vareid=xx. Det er HER, jeg gerne vil have noget a'la' "tilføj til indkøbskurven".
Jeg ved ikke hvordan jeg laver en indkøbskurv som "et array i en session", men hvis du har links til en beskrivelse er det super. Jeg har overkommet at lave login-systemet på siden via sessions, men ved ikke mere om sessions end det jeg har lært derigennem.
Håber det formulerer mit spørgsmål lidt mere fyldestgørende ;-)
Det er meget simpelt. En session gør bare at så længe sessionen fra browseren er åben kan du bruge de variabler der ligger i sessionen. Hvis du laver et array:
$aKurv = array(); //laver et array... dette skal kun gøres på første side
session_start(); //Starter session... dette skal gøres på alle sider hvor du ønsker at kunne hente din kurv
$_SESSION['kurv'] = $aKurv; // sætter $kurv som session
$aVarer = array( 'id' => 'xxx', 'pris' => 'xx', 'antal' => 'xx'); //laver et array med varer oplysninger.
array_push($_SESSION['kurv'], $aVarer); //sætter varen ind i slutningen af arrayet.
Når brugeren så vælger en vare at købe, kører du bare den sidste linje med array_push. Husk inden da, at definere din $aVarer. Til sidst kan du løbe dit array igennem enten med en for løkke eller en foreach løkke.
Nej. En session gælder kun den browser som har vinduet åben. Når browseren bliver lukket ned, dør sessionen også. Så der er mange der kan købe på engang, uden at kunne se hiandens ordre
$sql = "SELECT u.userfirst, u.userlast, u.username, f.* FROM user AS u INNER JOIN filer AS f ON u.id = f.userid where f.id = '$id'"; $result = mysql_query($sql) or die(mysql_error()); $number = mysql_num_rows($result); luk_forbindelse();
while ( $row = mysql_fetch_array($result) ) {
.. her præsenteres varen sammen med info om brugeren ... } ?> (kun et uddrag af filen..)
Jeg skal vel bruge en <form> til min køb knap som laver den der array_push som du snakker om? Og hvor skal de forskellige variabler/arrays sættes ind?
Håber du har tålmodighed mht. mine manglende evner ;-)
Jeg har indsat session_start(); i visvare.php helt i toppen, men har endnu ikke fundet ud af hvordan jeg indsætter resten af koden deri (altså det med $aKurv osv.)
Desuden skal jeg jo have addbasket.php til at sende mig tilbage til visvare.php - formodentlig via "header location: viskurv.php..."
<?php if(isset($_SESSION['Basket'])) { foreach ($_SESSION['Basket'] as $aArray) { foreach($aArray as $sValue) { echo $sValue; //Tilføj data til DB eller udskriv } } }
?> </table>
Men jeg kan simpelthen ikke greje hvor jeg skal sætte mine tr og td ind, for at få det til at stå på hver sin linje - sådan her:
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.