Bied systeem
Ik wil een bied systeem maken en als iemand 2 keer heeft geboden op 1 artikel dat in zijn lijst met biedingen het artikel maar 1 keer wordt weergegeven degene met het hoogste bod.
Weet iemand hoe ik dit het beste kan doen?
Alvast bedankt
Met PHP.
Nee, je meent het. Waarom denk je dat ik het op PHPhulp zet !!
En ga dan eens zoeken naar beginnershandleidingen en kom dan terug met gerichte vragen met voorbeelden.
Matthew Keller op 08/06/2011 22:49:58:
Met PHP.
Sorry, maar ik vind deze reacties echt iets te kort door de bocht. Inderdaad mag de topicstarter zijn vraag misschien wat concreter formuleren, maar als ik dan 2 van dit soort NIETSZEGGENDE antwoorden lees dan zakt mijn broek daar van af. We zitten op dit forum om elkaar te helpen!!!
@Nick: als iemand op een product biedt dan sla je deze bieding op in een database. Als iemand nog een keer op hetzelfde product biedt dan kijk je in de database of hij / zij al eerder op dit product heeft geboden. Zo ja, dan pas je de prijs aan in de database. Dat is ongeveer de basis waar je mee aan de slag zult moeten.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
CREATE TABLE "artikelen" (
"id" int(11) unsigned NOT NULL AUTO_INCREMENT,
"naam" varchar(255) NOT NULL DEFAULT '',
"gesloten_op" datetime DEFAULT NULL,
PRIMARY KEY ("id")
);
CREATE TABLE "biedingen" (
"id" int(11) unsigned NOT NULL AUTO_INCREMENT,
"artikel_id" int(11) NOT NULL,
"user_id" int(11) NOT NULL,
"bod" decimal(6,2) NOT NULL,
PRIMARY KEY ("id")
);
"id" int(11) unsigned NOT NULL AUTO_INCREMENT,
"naam" varchar(255) NOT NULL DEFAULT '',
"gesloten_op" datetime DEFAULT NULL,
PRIMARY KEY ("id")
);
CREATE TABLE "biedingen" (
"id" int(11) unsigned NOT NULL AUTO_INCREMENT,
"artikel_id" int(11) NOT NULL,
"user_id" int(11) NOT NULL,
"bod" decimal(6,2) NOT NULL,
PRIMARY KEY ("id")
);
Een lijst met artikelen waarop je kan bieden is dan simpelweg:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
SELECT
a.id,
a.naam,
MAX(b.bod) as hoogste_bod
FROM
artikelen a
LEFT JOIN biedingen b ON
b.artikel_id = a.id
WHERE
a.gesloten_op > NOW()
GROUP BY
a.id,
a.naam
a.id,
a.naam,
MAX(b.bod) as hoogste_bod
FROM
artikelen a
LEFT JOIN biedingen b ON
b.artikel_id = a.id
WHERE
a.gesloten_op > NOW()
GROUP BY
a.id,
a.naam
Een lijst van winnaars kan je ook met één (okee, en een subquery) genereren:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
SELECT
a.id,
a.naam,
b.user_id,
b.bod
FROM
artikelen a
INNER JOIN biedingen b ON
b.id = (SELECT b.id FROM biedingen b WHERE b.artikel_id = a.id ORDER BY b.bod DESC LIMIT 1)
WHERE
a.gesloten_op < NOW()
a.id,
a.naam,
b.user_id,
b.bod
FROM
artikelen a
INNER JOIN biedingen b ON
b.id = (SELECT b.id FROM biedingen b WHERE b.artikel_id = a.id ORDER BY b.bod DESC LIMIT 1)
WHERE
a.gesloten_op < NOW()
Die laatste query kan je ook aanpassen om voor één gebruiker te kijken voor welke artikelen hij allemaal heeft gewonnen. In je PHP script kan je dan nog bouwen dat je nooit op gesloten artikelen kan bieden en dat je alleen biedingen hoger dan het hoogste bod kan uitbrengen etc.
Het is een opzetje, het kan vast ook anders, maar je moet je wel verdiepen in SQL en PHP formulieren wil je op gang komen.
Je maakt een tabel met een unieke naam of code en daar haal je de laatste hoge waarde (qua bedrag) uit die door die persoon is gemaakt.
Bedankt Jelmer ;) Aan jou antwoord heb ik wat. Het werkt!