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


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
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
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:

http://db.basketball.nl/db/json/stats.pl?wed_ID=665262

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>