Webshop maken
Voor mijn bedrijfje zou ik graag een webshop willen opzetten. De webshop hoeft niet groot te zijn want er komen maar rond de tien producten in. Ook de betalingswijze hoeft niet modern te zijn.
Ik heb niet heel veel ervaring met PHP, ik heb weleens een mailform gemaakt maar dat is ook alles. Wel kan ik HTML.
Ik heb wat rond gezocht voor informatie en heb wel wat scripts en tutorials gevonden alleen ik weet niet goed wat ik ermee moet.
Kortom, kan iemand mij uitleggen hoe een webwinkel precies werkt. Ik snap dat de html alleen voor de layout is maar hoe werkt bijvoorbeeld PHP samen met de database in mysql. Ik snap dat dit misschien een nogal ruime vraag is, maar ik zoek een duidelijke uitleg zodat ik zelf verder kan leren van de tutorials die in overvloed op internet staan.
mvg Alex
Wat wil je:
- Een maandje uittrekken om PHP eens goed te kennen, om vervolgens een webshop te bouwen.
- Een kant en klaar pakket als Magento gebruiken, en in 10 minuten je webshop online hebben?
- Of uitbesteden...
Quote:
Ook de betalingswijze hoeft niet modern te zijn.
Ga je dan kralen ruilen?
Ik heb hier een voorbeeld gevonden en uitgewerkt en dat is goed gelukt. Ik heb één webshopje gebouwd voor een kleine ondernemer en dat was goed te doen. Was wel wat uitzoekwerk maar het draait al twee jaar goed. Er zit helemaal geen betaalsysteem in, (@Ger: er worden geen kralen geruild maar pdf facturen gestuurd). Ik ben wel een aantal jaren developer (geweest) maar absoluut niet in php. Ik heb ook geen ambitie om meer dan die ene webshop te doen maar nogmaals het lukt leuk met het voorbeeld hier. Vragen kan je hier stellen en dat werkt heel fijn.
@Aad: Over welk voorbeeld heb je het?
Goede vraag hoor maar ik zou me niet te veel met de techniek bezig houden want dat is tegenwoordig voor een groot deel te ondervangen door het gebruik van de webwinkel software zelf. Als je naast Magento, welke toch wat zwaarder is, een zeker zo goed alternatief wilt bekijken dan kan ik Prestashop adviseren.
Wil je hulp bij het maken van de webshop neem gerust even contact met me op.
Groet,
Robert-Jan Smid
http://www.smid-it.nl
http://youtu.be/Ntov_fY39Bk.
Dit is mijn script wat ik nu heb:
Ik weet niet of dit duidelijk genoeg is, maar ik heb dus dit bovenstaande php bestand waarnaar ik verwijs in me andere pagina's door middel van "function cart()"voor de winkelwagen en "function products ()" voor de producten.
Maar nu loop ik tegen een probleem aan. Bij "function products ()" staan alle producten onder elkaar. Ik wil graag op me webshop verschillende product pagina's en ook pagina's waar meer informatie over één bepaald product te vinden is. Op de pagina van één bepaald product wil ik ook de knop "voeg aan winkelwagen toe".
Zou iemand mij hierbij kunnen helpen? Aangezien er maar weinig producten in me webshop komen vind ik een omslachtige oplossing ook prima, zoals voor elk product een eigen database of iets dergelijks.
Het zou heel fijn zijn als iemand zou willen helpen!
mvg Alex van Dijk
Bedankt voor alle reacties. Toch heb ik er voor gekozen om zelf een webwinkel te maken en ik ben al aardig op weg. Ik heb hierbij gebruik gemaakt van de volgende video tutorials van phpacademy:Dit is mijn script wat ik nu heb:
Quote:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
<?php
session_start();
$page = 'winkelwagen.php';
mysql_connect('localhost','root','') or die(mysql_error());
mysql_select_db('cart') or die(mysql_error());
if (isset($_GET['add'])) {
if(!isset($_SESSION['cart_'.(int)$_GET['add']]))
{$_SESSION['cart_'.(int)$_GET['add']] = 0;}
$quantity = mysql_query('SELECT id, quantity FROM products WHERE id='.mysql_real_escape_string((int)$_GET['add']));
while($quantity_row = mysql_fetch_assoc($quantity)) {
if ($quantity_row['quantity']!=$_SESSION['cart_'.(int)$_GET['add']]) {
$_SESSION['cart_'.(int)$_GET['add']]+='1';
}
}
header('Location: '.$page);
}
if (isset($_GET['remove'])) {
$_SESSION['cart_'.(int)$_GET['remove']]--;
header('Location: '.$page);
}
if (isset($_GET['delete'])) {
$_SESSION['cart_'.(int)$_GET['delete']]='0';
header('Location: '.$page);
}
function products() {
$get = mysql_query('SELECT id, name, description, price FROM products WHERE quantity > 0 ORDER BY id DESC');
if (mysql_num_rows($get)==0) {
echo"there are no products to display!";
}
else {
while ($get_row = mysql_fetch_assoc($get)) {
echo '<p>'.$get_row['name'].'<br />'.$get_row['description'].'<br />€'.number_format($get_row['price'], 2).'<a href="cart.php?add='.$get_row['id'].'">In winkelwagentje</a></p>';
}
}
}
function cart() {
$sub = "";
$total="";
foreach($_SESSION as $name => $value){
if ($value>0){
if(substr($name, 0, 5)=='cart_'){
$id = substr($name, 5, (strlen($name)-5));
$get = mysql_query('SELECT id, name, price FROM products WHERE id='.mysql_real_escape_string((int)$id));
while ($get_row = mysql_fetch_assoc($get)) {
$sub = $get_row['price']*$value;
echo $get_row['name'].' '.$value.' stuk(s) prijs €'.number_format($get_row['price'], 2).' = €'.number_format($sub, 2). ' <a href="cart.php?remove='.$id.'">[-]</a> <a href="cart.php?add='.$id.'">[+]</a> <a href="cart.php?delete='.$id.'">[Delete]</a><br />';
}
}
$total += $sub;
}
}
if ($total==0) {
echo"Uw winkelwagen is leeg." ;
}
else {
echo '<div class="style1" style="margin:34px 39px 20px 39px">';
echo 'Subtotaal: €'.number_format($total, 2);
}
}
?>
session_start();
$page = 'winkelwagen.php';
mysql_connect('localhost','root','') or die(mysql_error());
mysql_select_db('cart') or die(mysql_error());
if (isset($_GET['add'])) {
if(!isset($_SESSION['cart_'.(int)$_GET['add']]))
{$_SESSION['cart_'.(int)$_GET['add']] = 0;}
$quantity = mysql_query('SELECT id, quantity FROM products WHERE id='.mysql_real_escape_string((int)$_GET['add']));
while($quantity_row = mysql_fetch_assoc($quantity)) {
if ($quantity_row['quantity']!=$_SESSION['cart_'.(int)$_GET['add']]) {
$_SESSION['cart_'.(int)$_GET['add']]+='1';
}
}
header('Location: '.$page);
}
if (isset($_GET['remove'])) {
$_SESSION['cart_'.(int)$_GET['remove']]--;
header('Location: '.$page);
}
if (isset($_GET['delete'])) {
$_SESSION['cart_'.(int)$_GET['delete']]='0';
header('Location: '.$page);
}
function products() {
$get = mysql_query('SELECT id, name, description, price FROM products WHERE quantity > 0 ORDER BY id DESC');
if (mysql_num_rows($get)==0) {
echo"there are no products to display!";
}
else {
while ($get_row = mysql_fetch_assoc($get)) {
echo '<p>'.$get_row['name'].'<br />'.$get_row['description'].'<br />€'.number_format($get_row['price'], 2).'<a href="cart.php?add='.$get_row['id'].'">In winkelwagentje</a></p>';
}
}
}
function cart() {
$sub = "";
$total="";
foreach($_SESSION as $name => $value){
if ($value>0){
if(substr($name, 0, 5)=='cart_'){
$id = substr($name, 5, (strlen($name)-5));
$get = mysql_query('SELECT id, name, price FROM products WHERE id='.mysql_real_escape_string((int)$id));
while ($get_row = mysql_fetch_assoc($get)) {
$sub = $get_row['price']*$value;
echo $get_row['name'].' '.$value.' stuk(s) prijs €'.number_format($get_row['price'], 2).' = €'.number_format($sub, 2). ' <a href="cart.php?remove='.$id.'">[-]</a> <a href="cart.php?add='.$id.'">[+]</a> <a href="cart.php?delete='.$id.'">[Delete]</a><br />';
}
}
$total += $sub;
}
}
if ($total==0) {
echo"Uw winkelwagen is leeg." ;
}
else {
echo '<div class="style1" style="margin:34px 39px 20px 39px">';
echo 'Subtotaal: €'.number_format($total, 2);
}
}
?>
Ik weet niet of dit duidelijk genoeg is, maar ik heb dus dit bovenstaande php bestand waarnaar ik verwijs in me andere pagina's door middel van "function cart()"voor de winkelwagen en "function products ()" voor de producten.
Maar nu loop ik tegen een probleem aan. Bij "function products ()" staan alle producten onder elkaar. Ik wil graag op me webshop verschillende product pagina's en ook pagina's waar meer informatie over één bepaald product te vinden is. Op de pagina van één bepaald product wil ik ook de knop "voeg aan winkelwagen toe".
Zou iemand mij hierbij kunnen helpen? Aangezien er maar weinig producten in me webshop komen vind ik een omslachtige oplossing ook prima, zoals voor elk product een eigen database of iets dergelijks.
Het zou heel fijn zijn als iemand zou willen helpen!
mvg Alex van Dijk
Gewijzigd op 03/04/2012 18:12:16 door Alex van Dijk
klik hier voor een tutorial. ik heb het even globaal bekeken, en je scripting ziet er wel netjes uit. spatiebalk en de enterknop bijten overigens niet. die mag je wel wat vaker aanraken om wat meer overzicht te krijgen
om meteen maar even je wat goed aan te leren: foutafhandeling ontbreekt. Code (php)
1
2
3
2
3
<?php
$get = mysql_query('SELECT id, name, description, price, categorie FROM products WHERE quantity > 0 AND categorie='.mysql_real_escape_string($_GET['categorie']).' ORDER BY id DESC');
?>
$get = mysql_query('SELECT id, name, description, price, categorie FROM products WHERE quantity > 0 AND categorie='.mysql_real_escape_string($_GET['categorie']).' ORDER BY id DESC');
?>
En voor een aparte product pagina kan je van de naam van het product een link maken en die een parameter "product" laten meegeven, bijv: ?product=[product_id] en dan kan je deze query gebruiken:
Code (php)
1
2
3
2
3
<?php
$get = mysql_query('SELECT id, name, description, price, categorie FROM products WHERE id='.mysql_real_escape_string($_GET['product']));
?>
$get = mysql_query('SELECT id, name, description, price, categorie FROM products WHERE id='.mysql_real_escape_string($_GET['product']));
?>
Gewijzigd op 03/04/2012 20:36:35 door Nick Dijkstra
there are no products to display!. Dit komt denk ik omdat onder de query staat het volgende staat:
Quote:
Code (php)
1
2
3
4
5
2
3
4
5
<?php
$get = mysql_query('SELECT id, name, description, price, categorie FROM products WHERE quantity > 0 AND categorie='.mysql_real_escape_string($_GET['categorie']).' ORDER BY id DESC');
if (mysql_num_rows($get)==0) {
echo"there are no products to display!";
?>
$get = mysql_query('SELECT id, name, description, price, categorie FROM products WHERE quantity > 0 AND categorie='.mysql_real_escape_string($_GET['categorie']).' ORDER BY id DESC');
if (mysql_num_rows($get)==0) {
echo"there are no products to display!";
?>
Klopt het dat dan de $get een combinatie wordt van de quantity en de categorie waardoor "if (mysql_num_rows($get)==0)" raar doet?
Gewijzigd op 08/04/2012 14:29:25 door Alex van Dijk
Volgens zit er ergens anders wat fout.
echo eens de variabele $get..
Code (php)
1
2
3
4
5
2
3
4
5
<?php
$get = mysql_query("SELECT id, name, description, price, categorie FROM products WHERE quantity > 0 AND categorie='".mysql_real_escape_string($_GET['categorie'])."' ORDER BY id DESC");
if (mysql_num_rows($get)==0) {
echo"there are no products to display!";
?>
$get = mysql_query("SELECT id, name, description, price, categorie FROM products WHERE quantity > 0 AND categorie='".mysql_real_escape_string($_GET['categorie'])."' ORDER BY id DESC");
if (mysql_num_rows($get)==0) {
echo"there are no products to display!";
?>
Gewijzigd op 08/04/2012 14:36:29 door Bart V B
Een oplossing kan zijn:
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php
$get = mysql_query(jouw_ding);
if ($get && mysql_num_rows($get) > 0) {
// doe wat je wil bij "goed"
} else {
// doe wat je wil bij "fout"
}
?>
$get = mysql_query(jouw_ding);
if ($get && mysql_num_rows($get) > 0) {
// doe wat je wil bij "goed"
} else {
// doe wat je wil bij "fout"
}
?>
Heb je in je database in de tabel products ook de rij categorie toegevoegd?
"rij"? Gebruikelijke termen die ik ken zijn "veld" of "kolom" (of, als je relationele algebra als achtergrond hebt, "attribuut". Never mind :) )
Eeh, ja die bedoel ik :P kwam er zo snel niet op xD bedankt
Het heeft eventjes geduurd maar het werkt nu allemaal heel goed. Bedankt voor alle reacties!
Hey Alex zou je misschien het hele script nog ins kunnen posten nu die werkt. Ik ben met ongeveer hetzelfde bezig en zit een beetje klem. Zou een uitkomst zijn voor mensen zoals ik die er nog mee aan het oefenen zijn!
hey max, ik ben nog bezig met het aanpassen van het script maar ik zal zo snel mogelijk (ongeveer deze week) het hele script posten. Als je vragen hebt kan je me pm'en
een late reactie, maar ik vroeg me af, zou je mij het script van webshop maken ook kunnen toesturen.
Ik ben namelijk bezig met de cursus PHP maar webshop zit er niet en en dat ik wel
leren.
alvast bedankt
Het topic is verouderd. Meestal worden scripts requests niet gewaardeerd, daarnaast betwijfel ik of de TS zelf hierop zal gaan reageren. Wat je wel kan doen is:
- De TS een PM sturen met dezelfde vraag (grote kans dat hij/zij dit niet gaat doen, overigens als jij ergens veel tijd hebt in gestoken geef je dit niet gratis. Dan nog te bedenken dat je de veiligheid van je eigen webshop vrijgeeft...)
- Een eigen topic starten met een vergelijkbare vraag, maar dan specifiek naar jou situatie.
- Er rekening mee houden dat er na een jaar veel veranderd is: nieuwe hackers, veranderingen in programeer talen etc.
- Eventueel kijken naar een online oplossing als https://www.targetpay.com/ (LET OP: ik KEN dit NIET! dus ik geef hierbij geen garanties of wat dan ook, maar even googlen kan helpen. De webshop van magento is iets wat ik ook vaak voorbij hoor komen.
Leuk dat je interesse hebt in mijn webshop. Sinds oktober staat mijn webshop online (www.lets-led.nl) en ben er erg blij mee. Ik ben er erg lang mee bezig geweest en zoals Bas IJzelendoorn hierboven al zegt geef ik liever niet mijn hele code af. Zeker voor de veiligheid lijkt me dit niet handig. Wat mij veel heeft geholpen zijn de videotutorials van php academy http://youtu.be/Ntov_fY39Bk. Hiermee kan je goed de basis van je webshop opbouwen. Als je nog specifieke vragen hebt kan je me altijd een PM sturen.
Gewijzigd op 16/05/2013 09:47:54 door Alex van Dijk