JSON
Voor de mobiele apps is er een JSON data feed opgezet. Het voordeel van JSON is dat het veel compacter is dan XML, dus minder dataverkeer veroorzaakt. Het nadeel is dat het voor mensen wat minder makkelijke te lezen is.
Hieronder staat per soort gegevens vanaf welk URL je die op kunt halen en hoe je de lijst van gegevens met extra parameters kunt filteren. Die parameters zijn hoofdletter gevoelig en ik ben niet echt consequent geweest. Je zult dus dingen als org_id een org_ID door elkaar gebruikt zien worden.
clubs
http://db.basketball.nl/db/json/club.pl
element 'clubs' bevat een array van clubs
iedere club heeft deze elementen:
id = clb_ID van de database (uniek ID van een club) org_id = org_ID organisatie ID van database waar deze club onder valt (bijv 2 voor rayon west) nr = ISS nummer van de club naam = naam van de club shirt = shirt kleur adres = contact adres postcode = contact postcode plaats = contact plaats web = website vestpl = vestigings plaats
logo = link naar het logo van een club
Door extra parameters in te sturen kun je lijst filteren en beperken:
org_id : alleen de clubs van deze organisatie tonen (bijv. org_id=3 voor rayon oost) date : alleen clubs ophalen die bijgewerkt zijn na deze datum. datum moet in formaat yyyy-mm-dd HH:MM:SS zijn origin : zie jQuery
standen
http://db.basketball.nl/db/json/stand.pl
cmp_ID : verplicht, dit is het ID van de competitie waarvan je de stand wilt ophalen seizoen : gegevens van ander seizoen dan het huidige ophalen, in formaat jaar-jaar, bijv. 2010-2012 szn_Naam : als alternatief om seizoen door te geven datum : stand per andere datum dan vandaag ophalen, datum in formaat yyyy-mm-dd , bijv. 2012-03-21 origin : zie jQuery
schema / uitslagen
http://db.basketball.nl/db/json/wedstrijd.pl
Manieren om te filteren:
cmp_ID : id van de competitie clb_ID : id van de club loc_ID : id van de locatie (sporthal) date : alleen wedstrijden ophalen die bijgewerkt zijn na deze datum. datum moet in formaat yyyy-mm-dd HH:MM:SS zijn seizoen : gegevens van ander seizoen dan het huidige ophalen, in formaat jaar-jaar, bijv. 2010-2012 szn_Naam : als alternatief om seizoen door te geven plg_ID : alleen de wedstrijden van dit ene team ophalen wed_ID : alleen de gegevens van deze ene wedstrijd ophalen dagen_terug : beperk de lijst tot de wedstrijden die op of na vandaag - dagen_terug in het schema staan. bijv dagen_terug=3 dagen_vooruit : beperk de lijst tot de wedstrijden die op of tot vandaag + dagen_vooruit in het schema staan. bijv dagen_vooruit=4 origin : zie jQuery
sporthallen
http://db.basketball.nl/db/json/locatie.pl
Door extra parameters in te sturen kun je lijst filteren en beperken:
org_id : alleen de sporthallen van deze organisatie tonen (bijv. org_id=3 voor rayon oost) date : alleen sporthallen ophalen die bijgewerkt zijn na deze datum. datum moet in formaat yyyy-mm-dd HH:MM:SS zijn
club_id : alleen de sporthallen tonen waar deze club thuis speelt.
uitwedstrijden : in combinatie met een club_id toont het ook de sporthallen van de tegenstanders van een club,
zet deze op 1, dus uitwedstrijden=1
loc_id : info van 1 specifieke sporthal op basis van id in de database, bijv loc_id=555
sportlink : info van 1 specifieke sporthal op basis van sportlink id van die hal, bijv sportlink=D3R3R5M origin : zie jQuery
competities
http://db.basketball.nl/db/json/competities.pl
org_ID : alleen de competities van deze organisatie tonen (bijv. org_id=3 voor rayon oost) date : alleen competities ophalen die bijgewerkt zijn na deze datum. datum moet in formaat yyyy-mm-dd HH:MM:SS zijn seizoen : gegevens van ander seizoen dan het huidige ophalen, in formaat jaar-jaar, bijv. 2010-2012 clb_ID : alleen competities tonen waar deze club in speelt clb_ISSnum : met ISS nummer van de club de lijst filteren tot competities waar deze club in speelt origin : zie jQuery
teams per club
http://db.basketball.nl/db/json/team.pl
Door extra parameters in te sturen kun je lijst filteren en beperken:
clb_ID : verplicht, dit is het ID van de club waar je de teams van wilt ophalen date : alleen teams ophalen die bijgewerkt zijn na deze datum. datum moet in formaat yyyy-mm-dd HH:MM:SS zijn seizoen : gegevens van ander seizoen dan het huidige ophalen, in formaat jaar-jaar, bijv. 2010-2012 origin : zie jQuery
statistieken
Als er statistieken / scouting per wedstrijd is ingevoerd in de database, dan kun je deze opvragen via:
http://db.basketball.nl/db/json/stats.pl
Stats zijn er in eenvoudige en uitgebreide vorm. De eenvoudige vorm bevat alleen de gegevens die je uit een wedstrijdsheet kunt halen, zoals fouten, punten, vrije worpen en 3 punters. De uitgebreide vorm bevat alle gegevens die scouts aanleveren
Je moet daarbij wel het juiste wedstrijd ID opgeven:
wed_ID : verplicht, dit is het ID van de wedstrijd, zoals je in het schema / uitslagen overzicht kunt vinden origin : zie jQuery
Voor bijv. de wedstrijd Weert - Den Bosch, LHSE-DH:
jQuery
Als je jQuery gebruikt in combinatie met de JSON feeds dan loop je heel snel tegen een beveiligings issue aan. Moderne browsers staan niet toe dat je data ophaalt met javascript vanaf een ander domein. De oplossing is door CORS (Cross-origin resource sharing) aan te zetten. Nu kan ik op de server onmogelijk bijhouden welke sites allemaal json in jquery willen gebruiken. Je zult dat dus zelf door moeten geven aan de server via een variabele origin. In die variabele zet je het domein van je eigen website waarop je jQuery gebruikt, bijv.
origin=www.ebbc.nl
Hiermee geef je aan dat jouw script op de site met domein www.ebbc.nl draait, de server stuurt dan de juiste header terug waardoor je geen foutmeldingen in je browser krijgt.
Een klein voorbeeld van een jquery script om wedstrijd info op te halen:
<!doctype html> <html> <head> <meta charset="utf-8"> <title>Demo</title> </head> <body> Test van json <script src="https://code.jquery.com/jquery-1.11.2.js"></script> <script> var _baseURL = "http://db.basketball.nl/db/json/wedstrijd.pl"; $(document).ready(function () { $.getJSON( _baseURL + "?origin=www.ebbc.nl&clb_ID=65", function(json, textStatus, jqXHR ) { console.log(json); alert('server zegt: ' + textStatus); alert(' er zijn ' + json.aantal_wedstrijden + ' wedstrijden in de lijst'); wedstrijd = json.wedstrijden[0]; alert('de 1e wedstrijd is tussen ploeg ' + wedstrijd.thuis_ploeg + ' en ' + wedstrijd.uit_ploeg); } ) }); </script> </body> </html>