poolscript (voetbal)
Ik heb nu 3 tabellen:
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
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
CREATE TABLE wedstrijden (
id int(8) NOT NULL auto_increment,
thuis varchar(255) NOT NULL default '',
uit varchar(255) NOT NULL default '',
datum datetime NOT NULL default '0000-00-00 00:00:00',
thuis_pt int(2) default NULL,
uit_pt int(2) default NULL,
PRIMARY KEY (id)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
CREATE TABLE users (
id int(8) NOT NULL auto_increment,
user varchar(64) NOT NULL default '',
pass varchar(64) NOT NULL default '',
email varchar(255) NOT NULL default '',
PRIMARY KEY (id)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
CREATE TABLE gokjes (
id int(8) NOT NULL auto_increment,
wedstrijd_id int(8) NOT NULL default '0',
user_id int(8) NOT NULL default '0',
thuis_pt int(2) NOT NULL default '0',
uit_pt int(2) NOT NULL default '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
id int(8) NOT NULL auto_increment,
thuis varchar(255) NOT NULL default '',
uit varchar(255) NOT NULL default '',
datum datetime NOT NULL default '0000-00-00 00:00:00',
thuis_pt int(2) default NULL,
uit_pt int(2) default NULL,
PRIMARY KEY (id)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
CREATE TABLE users (
id int(8) NOT NULL auto_increment,
user varchar(64) NOT NULL default '',
pass varchar(64) NOT NULL default '',
email varchar(255) NOT NULL default '',
PRIMARY KEY (id)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
CREATE TABLE gokjes (
id int(8) NOT NULL auto_increment,
wedstrijd_id int(8) NOT NULL default '0',
user_id int(8) NOT NULL default '0',
thuis_pt int(2) NOT NULL default '0',
uit_pt int(2) NOT NULL default '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
De tabel users is dus voor gebruikers.
De tabel gokjes is voor je voorspellingen. Hier komt het dus in te staan als je een voorspelling post.
De tabel wedstrijden is om alle wedstrijden op te slaan. De administrator kan hier wedstrijden in invoeren en later de uitslag erbij zetten. De standaard van die uitslag is NULL (als er nog niets is ingevuld).
Een user (zou op deze manier moeten gaan...) krijgt op deze manier punten
•3 Punten als het helemaal goed is ge'gokt'
•1 Punt als alleen goed is ge'gokt' welke partij wint. (Bijvoorbeeld je voorspelt 3-2 maar het wordt 1-0 of 5-2. Of je voorspelt 2-2 en het wordt 5-5)
•0 Punten als het gewoon totaal fout is.
Nu moet ik dus een SQL opstellen die al deze gegevens verwerkt en het aantal punten van een user eruit laat rollen. Ik heb een klein stappenplan of zo gemaakt voor een functie die het aantal punten ophaalt:
•Krijg het id van de user binnen
•Zoek de voorspellingen op van de user
•Nu heb je dus een rijtje met id's van de voorspellingen, bijvoorbeeld : 3,6,32,56 (user heeft in totaal 4 voorspellingen geplaatst)
•Per gokjes.id (voorspelling-id) gaan we na of deze 3, 1, of 0 punten verdiend:
SELECT FROM wedstrijden WHERE gokjes.id = ja huh? Snap niet meer :-(
•Aantal punten optellen, en returnen.
Nu heb ik 2 vragen:
•Is dit stappenplan goed? Zo wordt het dus niet in 1 query gedaan.
•Waar kan ik zo'n SQL leren, om de punten per user op te halen?
Alvast bedankt :-)
Groet, Boris
Misschien iets met joins ofzo?
1) welke club gewonnen heeft, of dat het gelijkspel was
2) of de user dit goed gegokt heeft of niet (zo ja: 1 punt)
3) of de user ook nog de letterlijke uitslag goed heeft (zo ja: 3 punten)
Een beginnetje voor je query:
THEN 'uit'
Wat is dan 'uit'? Ik snap het idee wel, maar niet wát nu 'uit', 'thuis', of 'gelijkspel' wordt.
Zelf heb ik natuurlijk ook al wat geprobeerd. Minder met SQL, en meer met PHP, omdat ik dit nu nog beter snap:
Jan bedankt voor je reactie in ieder geval!
Groet,
Boris
Edit:
Bedankt Mark (voor post hieronder)
Gewijzigd op 01/01/1970 01:00:00 door K i p
moet zijn
Code (php)
1
$sql_gokjes = "SELECT wedstrijd_id,thuis_pt,uit_pt FROM gokjes WHERE user_id = '".$id . "'";
heb nog even enkele quotes om je te selecteren waarde heen gezet
Gewijzigd op 01/01/1970 01:00:00 door Mark D
Ga nu even de SQL diepte in.
Edit:
@Mark: Om een INT waarde hoeven toch geen enkele quotes?
Gewijzigd op 01/01/1970 01:00:00 door K i p
@boris, dat weet ik niet. Ik doe het wel altijd en het werkt ook altijd. Ik zal wel ff kijken of ik het kan vinden. Iig in een if hoeven er om een int geen quotes
Boris schreef op 02.12.2006 11:38:
Zo krijg je inderdaad een best ingewikkelde query... Maar dit snap ik er niet helemaal aan:
THEN 'uit'
Wat is dan 'uit'? Ik snap het idee wel, maar niet wát nu 'uit', 'thuis', of 'gelijkspel' wordt.
THEN 'uit'
Wat is dan 'uit'? Ik snap het idee wel, maar niet wát nu 'uit', 'thuis', of 'gelijkspel' wordt.
'uit' is een string die aan de variabele uitslag wordt gekoppeld als uit wint.
Na een dergelijke query kun je $row['uitslag'] fetchen, die drie waarden kan hebben: 'uit', 'thuis', of 'gelijkspel. Misschien is het beschrijvender als je 'uit_wint' en 'thuis_wint' gebruikt.