Versio

poolscript (voetbal)

Overzicht Reageren

K i p

K i p

01/12/2006 23:28:00
Quote Anchor link
Poolscript is dus dat je van te voren zegt wat je denkt dat de uitslag van een voetbalwedstrijd wordt. (Ik weet niet hoe je het schrijft...)

Ik heb nu 3 tabellen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
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 ;


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
 
PHP hulp

PHP hulp

25/05/2012 11:26:47
Gesponsorde koppelingen:
BHosted Hosting al vanaf € 1,- per maand

Controleer nu gratis jouw domeinnaam:

  
 

02/12/2006 10:59:00
Quote Anchor link
Misschien iets met joins ofzo?
 
Jan Koehoorn

Jan Koehoorn

02/12/2006 11:20:00
Quote Anchor link
Dat wordt nog best lastig. Je moet namelijk in je query uitrekenen hoeveel punten iemand krijgt. Daarvoor moet je weten:

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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
SELECT
CASE
    WHEN thuis_pt < uit_pt THEN 'uit'
    WHEN thuis_pt > uit_pt THEN 'thuis'
    WHEN thuis_pt = uit_pt THEN 'gelijkspel'
END CASE AS uitslag
 
K i p

K i p

02/12/2006 11:38:00
Quote Anchor link
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.


Zelf heb ik natuurlijk ook al wat geprobeerd. Minder met SQL, en meer met PHP, omdat ik dit nu nog beter snap:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<? /* weggeknipt, te lange parsetijd en te veel fouten */ ?>


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
 
Mark D

Mark D

02/12/2006 11:40:00
Quote Anchor link
@Boris, je bent een dubbele quote vergeten na je query, highlight ziet er vaag uit

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$sql_gokjes = "SELECT wedstrijd_id,thuis_pt,uit_pt FROM gokjes WHERE user_id = ".$id;


moet zijn

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
 
K i p

K i p

02/12/2006 11:53:00
Quote Anchor link
Ja ik heb dat nu gedaan, maar nu is er een ongelooflijk lange parse-tijd. Zal dus de SQL kant op moeten gaan.

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
 
Mark D

Mark D

02/12/2006 12:00:00
Quote Anchor link
@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
 
Jan Koehoorn

Jan Koehoorn

02/12/2006 12:23:00
Quote Anchor link
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.

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



Overzicht Reageren

Get Adobe Flash player