Avatar billede stieper Nybegynder
18. oktober 2005 - 09:49 Der 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.

Er der evt. nogle links til guides el. lign.?

På forhånd tak for hjælpen.
Avatar billede puppetmaster Nybegynder
18. oktober 2005 - 09:56 #1
Avatar billede drbean Nybegynder
18. oktober 2005 - 10:09 #2
Din indkøbskurv ville jeg nok lave som et array i en session.

Din database ville jeg lave på følgende måde:

Du skal bruge en tabel til de varer kunden har købt. Det kunne være:

kundeid      varerid      antal

På den måde opretter du et entry per vare en kunde køber. Du skal så også have en tabel til dine kunder.
Avatar billede stieper Nybegynder
18. oktober 2005 - 10:21 #3
@ 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 ;-)
Avatar billede drbean Nybegynder
18. oktober 2005 - 10:47 #4
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.
Avatar billede stieper Nybegynder
18. oktober 2005 - 11:10 #5
Kræver dette ikke at hver enkelt bruger er logget ind? Ellers vil indkøbskurven vel vise de varer der er lagt deri af andre brugere på samme tid?
Avatar billede drbean Nybegynder
18. oktober 2005 - 11:16 #6
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
Avatar billede drbean Nybegynder
18. oktober 2005 - 11:23 #7
Men er gået igang med at skrive en artikel ang. webshop, indkøbskurv og database design. Håber på jeg kan ligge den online i aften
Avatar billede stieper Nybegynder
18. oktober 2005 - 11:30 #8
Ok - lyder spændende!
min "visvare.php" er bygget op nogenlunde sådan her:

<?php include("./includes/metatags.inc");

require("./includes/mysql-funktioner.php");
      if(!empty($id) ) {

        aabn_forbindelse_og_vaelgdb();

$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 ;-)
Avatar billede drbean Nybegynder
18. oktober 2005 - 12:08 #9
Det er helt fint. Vi har jo alle startet et sted.

Jeg ville have nogen link i stil med <a href="<?php echo $_server['php_self']; ?>.php?action=tilfoj&vareid=3"><img src="lig i kurv.jpg">

Og i starten af din side lave en kontrol på din action. Hvis action er tilfoj, så ville jeg køre array_push.

Det eneste der er her, er at du få kun en vare i din indkøbskurv. Hvis du vil have flere vare, er du nød til at lave en form.
Avatar billede drbean Nybegynder
18. oktober 2005 - 13:10 #10
Jeg har skrevet en lille artikel som du kan læse igennem:
http://eksperten.dk/artikler/809
Avatar billede stieper Nybegynder
18. oktober 2005 - 13:17 #11
Ok - jeg vil gerne have muligheden for at oprette flere varer.

Hvis jeg på min visvare.php side har følgende:

<td valign="bottom"><form action="addbasket.php" type="post">
                        <input TYPE="hidden" VALUE="<?=$id?>" NAME='billedid'>
                        <input TYPE="hidden" VALUE=" <?=$row['pris']?>" NAME='pris'>
                        <input TYPE="hidden" VALUE=" <?=$row['realname']?>" NAME='navn'>
                        <small><small>Læg i kurv:</small></small><BUTTON name="submit" type="submit">
                        <IMG width="30" heigth="30" src="./pics/front/shoppingCart.jpg"></BUTTON>
                        </form></td>

Så sender den informationer over i addbasket om varens pris, id og navn.

Disse informationer skal bruges til at tilføje varen til en indkøbskurv som vises på visvare.php

så i addbasket skal jeg vel have noget a'la':

<?
session_start();
if(!empty($billedid) ) {
  array_push($_SESSION['kurv'], $aVarer);
}
?>

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..."

Er jeg helt forkert på den her?
Avatar billede stieper Nybegynder
18. oktober 2005 - 13:18 #12
undskyld - header location: visvare.php selvf ;-)
Avatar billede drbean Nybegynder
18. oktober 2005 - 13:38 #13
Jeg ville gøre sådan at i toppen af hver side har dette her:
<?php
session_start();
if(!isset($_SESSION['Basket'])
{
$_SESSION['Basket'] = $aBasket;
}

if($_GET['sAction'] == "AddProduct")
{
$aProduct = array(
'Id' => $_GET['iId'],
'Price' => $_GET['iPrice'],
'Number' => $_GET$['iNumber']);

array_push($_SESSION['Basket'], $aProduct);
}
?>

Så din form kommer til at hedde:
<form action="<?php echo $_Server['php_self']; ?>" type="get">

På den måde så når man står på en vare og trykker "Køb", så er man samme sted bagefter.
Avatar billede stieper Nybegynder
18. oktober 2005 - 15:02 #14
Roder lige lidt med min egen version - kunne dog godt bruge din artikel til noget af det... endnu et spørgsmål:

Jeg har i min addbasket.php nu følgende: (som test)

<?
session_start();
if(!isset($_SESSION['Basket']))
{
$aBasket = Array();
$_SESSION['Basket'] = $aBasket;
}

if(!empty($billedid))
{
$aProduct = array(
'Id' => $billedid,
'Price' => $pris,
'Navn' => $navn);

array_push($_SESSION['Basket'], $aProduct);


print_r($aProduct);
}
?>

Men hvorfor tilføjer den ikke data til arrayet hver gang jeg trykker "opdater/f5"??
Avatar billede stieper Nybegynder
18. oktober 2005 - 15:08 #15
Doh... det var jo fordi jeg printede det forkerte array.. sorry.
Avatar billede stieper Nybegynder
18. oktober 2005 - 15:09 #16
drbean - tak for hjælpen - smid svar for point! Er sikker på at jeg nok skal få det til at virke nu :-)

Igen takker!
Avatar billede drbean Nybegynder
18. oktober 2005 - 15:16 #17
Np. Jeg samler ikke på point, så behold dem bare selv.

Håber du kunne bruge det til noget
Avatar billede stieper Nybegynder
18. oktober 2005 - 15:44 #18
Jamen så siger jeg da 1000 tak.

Forresten virker det nu "næsten".... Men mit data i min "indkøbskurv" som vises på siden står helt uordnet - jeg har:

<p>
<img width="137" src="pics/front/rightnav_cartheader.gif">
</p>
<table border="1" cellspacing="0" cellpadding="0">
<colgroup span="2">
          <col width="95" span="1" align="left">
          <col width="37" span="1" align="left">
        </colgroup>

<?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:

Varenavn  | Pris
Varenavn2 | Pris2

Kan du greje den?
Avatar billede spiri Nybegynder
18. oktober 2005 - 15:45 #19
Med på en lytter...
Avatar billede puppetmaster Nybegynder
18. oktober 2005 - 15:46 #20
:)
Avatar billede stieper Nybegynder
18. oktober 2005 - 16:03 #21
Fandt ud af det...

HEre goes... til dem der lytter med ;-)


<p>
<img width="137" src="pics/front/rightnav_cartheader.gif">
</p>
<table border="1" cellspacing="0" cellpadding="0">
<colgroup span="2">
          <col width="95" span="1" align="left">
          <col width="37" span="1" align="left">
        </colgroup>

<?php
if(isset($_SESSION['Basket']))
{
foreach ($_SESSION['Basket'] as $aArray)
{
?>
<tr>
<?
foreach($aArray as $sValue)
{
?>
<td>
<?
echo "$sValue";
?>
</td>
<?
}
?>
</tr>
<?
}
}

?>
</table>
Avatar billede stieper Nybegynder
19. oktober 2005 - 19:44 #22
Haps.
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