abonnement Unibet Coolblue Bitvavo
pi_47117927
quote:
Op vrijdag 9 maart 2007 19:32 schreef Stijn1983 het volgende:

[..]

Het moet weer ingewikkeld hoor, voor onze mister Splendor. Je moet gewoon een tweede subquery maken, je kan namlijk niet meerdere resultaten in 1 subquery terug krijgen. Lees dit namelijk maar eens:
[..]
Jij ook hier.
Maar waarom kan het dan wel met een subquery in een WHERE? Of is dit gewoon iets wat in SQL eventueel wel kan maar in MySQL (nog) niet?

Overigens is het niet zo'n ramp.. ik wilde in 1 script alle topics lezen, post optellen van dat topic, laatste post de datum weergeven en ook nog de topicstarter van de laatste post uit de user tabel lezen.
Nu laat ik de user gewoon weg, heb alleen de datum
-
  zaterdag 10 maart 2007 @ 13:59:11 #77
65471 SkaterSam
Lurking Galore
pi_47122807
Ik ben een database class aan het schrijven, om te kijken in hoeverre ik database gerelateerde code efficienter kan inzetten in mijn code. Nu heb ik daarbij de volgende vraag: hoeveel functies heb je minimaal nodig eigenlijk ? Ik heb nu de volgende:

1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
class DBclass {
  function 
dbConnect($host$user$pass) {}
  function 
dbSelect($selectedDB) {}
  function 
checkConnection() {} // Controleer de opgezette verbinding met de DB
  
function query($query) {}
  function 
checkQueryResource($resource) {} // Controleer de result van de query
  
function fetch($resource) {} // mysql_fetch_assoc()
  
function result($this->queryResource) {} // mysql_result()
  
function dbClose() {}
  function 
checkError() {} // Controleer en output de gegeven errors
}
?>

Ben ik nog belangrijke functies vergeten, of ben ik juist te ver doorgeschoten ?

edit [18.27]: Nevermind de tweede vraag...

[ Bericht 6% gewijzigd door SkaterSam op 10-03-2007 18:27:25 ]
Let's make life easy
Typo's are the demon spawn from hell !
  zaterdag 10 maart 2007 @ 16:56:29 #78
65471 SkaterSam
Lurking Galore
pi_47127163
edit: laat maar... ik was een beetje dom
Let's make life easy
Typo's are the demon spawn from hell !
  zaterdag 10 maart 2007 @ 16:58:09 #79
46383 Tiemie
sowieso wel!
pi_47127201
haal je de hele query door mysql_real_escape_string?

je kunt beter iedere variabele apart door mysql_real_escape_string halen

dus

1
2
3
4
5
6
7
8
$query = "
  SELECT 
    u.name, 
    u.id
  FROM user AS u
  WHERE 
    u.id = ".mysql_real_escape_string($id)."
";
  zaterdag 10 maart 2007 @ 17:00:03 #80
65471 SkaterSam
Lurking Galore
pi_47127249
quote:
Op zaterdag 10 maart 2007 16:58 schreef Tiemie het volgende:
je kunt beter iedere variabele apart door mysql_real_escape_string halen
Ja, ik besefte het net pas... Een beetje dom...

Nu even kijken of ik iets kan schrijven die dat soort dingen in de query automatisch escaped...

edit [18.29]: een beetje van mijzelf en een beetje van Maggi...

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
  
function escapeQuery($query) {
  
    
// Haal de argumenten op
    
$this->arguments = func_get_args();
    
    
// Het eerste resultaat is de query
    
$this->query = array_shift($this->arguments);
    
    
// Loop door de resterende elementen en geef ze een corresponderend nummer
    
foreach ($this->arguments as $index => $name) {
      
$this->arguments[$index+1] = $name;
    }

    
// Loop nogmaals door de resultaten en vervang de nummers met de escaped waarden
    
foreach ($this->arguments as $number => $value) {
      
$this->query = str_replace(":$number", "'" . mysql_real_escape_string($value) . "'", $this->query);
    }
    
    
// Return de schoongemaakte query
    
return $this->query;
    
  }
?>

Die spreek je dus alsvolgt aan, je maakt een query, waarbij je alle escaped waarden in numerieke volgorde zet (:1, :2, etc...) en vervolgens doe je met $this->prepareQuery($query, $arg1, $arg2) en dan heeft die hem geescaped. Alleen jammer dat het niet werkt voor dingen als Tabel namen (als je die al buiten de query heb gedefinieerd in een variabele en deze variabele gebruikt in plaats van de naam (eg. SELECT * FROM $tabel)...

Ik zit trouwens wel een beetje een monoloog te houden

[ Bericht 21% gewijzigd door SkaterSam op 10-03-2007 18:29:12 ]
Let's make life easy
Typo's are the demon spawn from hell !
  zaterdag 10 maart 2007 @ 20:10:28 #81
85514 ralfie
!Yvan eht nioj
pi_47132790
quote:
Op zaterdag 10 maart 2007 09:47 schreef mschol het volgende:
klein vraagje:
ik heb een kleine template parser:
[ code verwijderd ]

die roep ik alsvolgt aan:
[ code verwijderd ]

nu woerdt er in navGlobalBar.php de variable $nums aangemaakt, echter heb ik die variable ook nodig in navSubBar.php
is het mogelijk om die variable beschikbaar te maken voor dat 2de bestand?

anders moet ik een rits querie's opnieuw uitvoeren in het 2de bestand, das performance techniesch niet echt handig
je zou in ParseFile() die variabele aan $GLOBALS toe kunnen voegen, dan in het tweede bestand eerst kijken of die bestaat, voordat die hem zelf probeert aan te maken.

@skaterSam: Wat ik altijd handig vind in een db class is een functie die een simpele query uitvoert en alleen de eerste regel teruggeeft/danwel MYSQL_NUM_ROWS in het geval van een SELECT, of een MYSQL_AFFECTED_ROWS in het geval van een andere soort query, danwel false als de query mislukt is. Iets in de richting van
1
2
3
4
5
6
7
8
9
10
11
<?php
function simple_query$query$returnfirstrow=false) {
   if (
strpos($query"SELECT")!==false)) $is_select=true;
   if( 
$res=mysql_query($query) ) {
      if (
$returnfirstrow && $is_select) return ( mysql_fetch_assoc($res) );
      else if(
$is_select) return ( $x=mysql_num_rows($res) == false $x );
      else return  ( 
$x=mysql_affected_rows($res) == false $x );
   }
   return 
false;
}
?>
Niet getest overigens, maar je begrijpt de bedoeling wel denk ik. Niets is zaliger dan een DELETE query, of een SELECT query met LIMIT 1 uit te kunnen voeren door één simpele functie aan te roepen

[ Bericht 72% gewijzigd door ralfie op 10-03-2007 20:22:44 ]
pi_47133495
quote:
Op zaterdag 10 maart 2007 17:00 schreef SkaterSam het volgende:

[..]

Ja, ik besefte het net pas... Een beetje dom...

Nu even kijken of ik iets kan schrijven die dat soort dingen in de query automatisch escaped...

edit [18.29]: een beetje van mijzelf en een beetje van Maggi...
[ code verwijderd ]
Het feit dat je $this gebruikt betekent niet dat het automatisch ook OOP is en jouw code is daar weer een mooi voorbeeld van. Je gebruikt properties voor acties binnen een method die buiten de scope van de method niet meer gebruikt worden.

Een voorbeeld daarvan is: $this->arguments = func_get_args();
Die $arguments property heb je buiten deze method helemaal niet nodig, dus logischer was:
$arguments = func_get_args();

Idem met met de parameter $query, deze wordt meegegeven bij de aanroep maar verder nergens meer gebruikt.

Handiger was denk ik dat je een $query property maakt binnen die class zodat je niet die $query hoeft over te gooien (via return bijv) binnen je class. Nu is het gewoon functioneel programmeren en is het toevallig een class omdat er class voor staat en niet omdat het iets met OO te maken heeft.
  zaterdag 10 maart 2007 @ 21:34:18 #83
65471 SkaterSam
Lurking Galore
pi_47135980
quote:
Op zaterdag 10 maart 2007 20:30 schreef smesjz het volgende:
Handiger was denk ik dat je een $query property maakt binnen die class zodat je niet die $query hoeft over te gooien (via return bijv) binnen je class.
Huh, hoe bedoel je "een query property binnen je class" ? Wat ik nu doe is het volgende, eerst escape ik die query met de functie, dan return ik hem in een variabele, die ik weer gebruik in de echte query. Maar als je het kan verhelderen, graag
quote:
Nu is het gewoon functioneel programmeren en is het toevallig een class omdat er class voor staat en niet omdat het iets met OO te maken heeft.
Ja dat klopt denk ik ook wel. Ik denk dat het meeste in die class ook "gewoon" functies zijn. Ik ben er ook nog mee aan het experimenteren. Maar als je ook hier meer informatie over hebt (hoe zou dit er in OO hebben uitgezien ?) dan lees ik het graag.

O, en ik wilde nog vragen of het nadelig was dat ik $this-> gebruikte ? Is het trouwens zo dat variabelen die je alleen binnen de scope van één functie (zoals $arguments dus) dus geen $this-> krijgen ?
Let's make life easy
Typo's are the demon spawn from hell !
pi_47147281
quote:
Op zaterdag 10 maart 2007 21:34 schreef SkaterSam het volgende:

Huh, hoe bedoel je "een query property binnen je class" ? Wat ik nu doe is het volgende, eerst escape ik die query met de functie, dan return ik hem in een variabele, die ik weer gebruik in de echte query. Maar als je het kan verhelderen, graag :)
Ik bedoelde meer zoiets: (ff quick&dirty voor PHP5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
class Database {
    
private $query null

    
private function prepareQuery() 
    {
       
blabla();
       
$query escpape_meuk_hier();
       
$this->query $query;
    }

    
public function execQuery($query
   {
    
// Eerst escapen.
     
$this->query $query;
     
$this->prepareQuery();
     
mysql_query($this->query);
   }


}
?>


Het kan natuurlijk ook nog op tig andere manieren, dit voorbeeldje laat alleen zien dat je door het gebruik van die query property (private $query) je niet meer 'return' hoeft te gebruiken.

Verder is een database class al 100 keer in OO gemaakt voor PHP en met een beetje Google werk kan je daar genoeg voorbeelden van vinden.

Als je error reporting aanze
Ja dat klopt denk ik ook wel. Ik denk dat het meeste in die class ook "gewoon" functies zijn. Ik ben er ook nog mee aan het experimenteren. Maar als je ook hier meer informatie over hebt (hoe zou dit er in OO hebben uitgezien ?) dan lees ik het graag.

O, en ik wilde nog vragen of het nadelig was dat ik $this-> gebruikte ? Is het trouwens zo dat variabelen die je alleen binnen de scope van één functie (zoals $arguments dus) dus geen $this-> krijgen ?
[/quote]

BIj het ontwikkelen van je code kan ik je aanraden om error_reporting(E_ALL); aan te zetten zodat PHP je zelf waarschuwt bij misbruik van $this .

Je hebt zelf alle vrijheid om $this te gebruiken binnen je class, maar alles wat binnen de scope van een functie mag blijven (en dus nergens anders nodig is) hoeft geen $this er bij.

Het beste kan je de OOP pagina's op php.net lezen, daar is het vrij goed uitgelegd: http://www.php.net/manual/en/language.oop5.php
pi_47147500
quote:
Op zaterdag 10 maart 2007 20:10 schreef ralfie het volgende:

[..]

je zou in ParseFile() die variabele aan $GLOBALS toe kunnen voegen, dan in het tweede bestand eerst kijken of die bestaat, voordat die hem zelf probeert aan te maken.
ik heb in het eerste bestand, navGlobalBar.php, 2 globals toegewezen die ik nodig had, en die kon ik vervolgens aanroepen in het 2de bestand,
Thnx voor het meedenk werk

ik zelf zat eerst te klooien met global $var;
pi_47149061
*bookmarked*
pi_47149445
Ik heb een vraagje over de RewriteRules.. fok bijvoorbeeld heeft continue nieuwe topics, hoe blijven de rewrite rules up to date dan met de nieuwe topic nrs? wordt elke keer de .htaccess opnieuw geschreven of is er een trucje voor?
As a rule, I never touch anything more sophisticated and delicate than myself.
pi_47149705
er is een truukje voor, er word een regex gebruikt :)
1
2
RewriteEngine On
RewriteRule ^/?([A-Za-z]+)$ http://www.danielpunt.nl/?p=$1.php

Deze gebruik ik op mijn website.
pi_47149861
aaah tof! merci
As a rule, I never touch anything more sophisticated and delicate than myself.
  zondag 11 maart 2007 @ 13:28:35 #90
65471 SkaterSam
Lurking Galore
pi_47151774
quote:
Op zondag 11 maart 2007 10:00 schreef smesjz het volgende:
Ik bedoelde meer zoiets: (ff quick&dirty voor PHP5)
[ code verwijderd ]

Het kan natuurlijk ook nog op tig andere manieren, dit voorbeeldje laat alleen zien dat je door het gebruik van die query property (private $query) je niet meer 'return' hoeft te gebruiken.
Ja, dat zou natuurlijk ideaal zijn! Ik had het echter op deze manier gedaan, omdat ik ook argumenten moet opgeven die vervangen moeten worden in de query (dus een :1 wordt bijvoorbeeld $obj_id), maar ik vond het handiger dat dit in twee stappen ging. Ik neem aan dat ik het bijvoorbeeld ook gewoon in de execQuery had kunnen zetten ($db->execQuery($query, $enkele_argumenten_ter_vervanging)), ik geloof dat jij iets dergelijks bedoelt. Want mijn vraag was hoe ik die vervangende argumenten in de prepareQuery function kreeg.

edit [13.52]: Hmm, ik kan natuurlijk gewoon een statische array maken ofzo $db->replaceArguments = array($etc, $etc...) en die aanroepen...
quote:
Verder is een database class al 100 keer in OO gemaakt voor PHP en met een beetje Google werk kan je daar genoeg voorbeelden van vinden.
Ja dat heb ik gezien, en hoewel ik daar ook naar kijk, probeer ik liever zelf een in elkaar te zetten natuurlijk, leerervaring enzo
quote:
BIj het ontwikkelen van je code kan ik je aanraden om error_reporting(E_ALL); aan te zetten zodat PHP je zelf waarschuwt bij misbruik van $this.
Hmmm, ja dat kan, ik werk echter met een script die de Errorlog uitleest van Apache2. Dan krijg ik op mijn browserscherm altijd de laatste errors die Apache2 ontdekt. Maar ik weet niet zeker of de Errorlog alle errors die error_reporting(E_ALL) oppikt, ook pakt.

[ Bericht 2% gewijzigd door SkaterSam op 11-03-2007 13:51:51 ]
Let's make life easy
Typo's are the demon spawn from hell !
pi_47152288
Ik wil graag de volledige inhoud van alle bestanden op mijn webserver inlezen in een array.
Dit wil ik gebruiken om een sitemap te maken. De pagina's/directory's worden vervolgens weergegeven op een pagina om ge(de)selecteerd te worden en wat overige opties.

Maar hoe lees ik de volledige inhoud van de root uit en stop deze in een array?
Ik dacht aan het volgende, maar dat werkt mooi niet! Sterker nog, als ik de functie aanroep wordt een bestand ter download aangeboden.
Kan iemand me op weg helpen?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function readfilelist($dir)
 {
  if ($handle = opendir($dir)) 
   {
    // Dit is de juiste manier om door een directory te wandelen. 
    while (false !== ($file = readdir($handle))) 
     { if(is_dir($file))
      {
       readfilelist($file);
      }
      $file_arr[]= $file;
     }
    closedir($handle);
   }
  }
pi_47152746
quote:
Op zondag 11 maart 2007 13:28 schreef SkaterSam het volgende:

[..]

Ja, dat zou natuurlijk ideaal zijn! Ik had het echter op deze manier gedaan, omdat ik ook argumenten moet opgeven die vervangen moeten worden in de query (dus een :1 wordt bijvoorbeeld $obj_id), maar ik vond het handiger dat dit in twee stappen ging. Ik neem aan dat ik het bijvoorbeeld ook gewoon in de execQuery had kunnen zetten ($db->execQuery($query, $enkele_argumenten_ter_vervanging)), ik geloof dat jij iets dergelijks bedoelt. Want mijn vraag was hoe ik die vervangende argumenten in de prepareQuery function kreeg.
Je kan ook eens kijken naar de aanpak in PDO (>= php5.1): http://nl2.php.net/manual/en/ref.pdo.php

Bijv:

1
2
3
4
5
6
<?php
$sth
= $dbh->prepare('SELECT name, colour, calories
   FROM fruit
   WHERE calories < ? AND colour = ?'
);
$sth->execute(array(150, 'red'));
?>
quote:
Hmmm, ja dat kan, ik werk echter met een script die de Errorlog uitleest van Apache2. Dan krijg ik op mijn browserscherm altijd de laatste errors die Apache2 ontdekt. Maar ik weet niet zeker of de Errorlog alle errors die error_reporting(E_ALL) oppikt, ook pakt.
Tijdens het ontwikkelen kan je het beste gewoon errors op je scherm weergeven ipv alleen een error log te gebruiken.
Ik zou wel Apache errors (404s, 403s) scheiden van PHP logs. Die hebben niks met elkaar te maken.

[ Bericht 3% gewijzigd door smesjz op 11-03-2007 13:56:53 (quote tag fix) ]
  zondag 11 maart 2007 @ 14:20:49 #93
65471 SkaterSam
Lurking Galore
pi_47153676
Thanks smesjz! Ik ben misschien gewoon nog te veel bezig met functioneel programmeren en overgooien van waardes, terwijl dat dus ook anders kan. Het vergt even een andere manier van denken. Ik zal eens even kijken hoe ik mijn code nu kan aanpassen om het beter OO te maken, en beter te laten werken.

edit [14.25]: Ik zie nu pas dat het volgende gebeurt: $dbh->prepare() wordt opgeslagen in $stmt en deze wordt vervolgens gebruikt voor de rest. Hoe werkt dit dan ? Neemt $stmt de class eigenschappen over ofzo ?

[ Bericht 12% gewijzigd door SkaterSam op 11-03-2007 14:33:44 ]
Let's make life easy
Typo's are the demon spawn from hell !
  zondag 11 maart 2007 @ 14:21:29 #94
85514 ralfie
!Yvan eht nioj
pi_47153713
quote:
Op zondag 11 maart 2007 13:45 schreef beerten het volgende:
Ik wil graag de volledige inhoud van alle bestanden op mijn webserver inlezen in een array.
Dit wil ik gebruiken om een sitemap te maken. De pagina's/directory's worden vervolgens weergegeven op een pagina om ge(de)selecteerd te worden en wat overige opties.

Maar hoe lees ik de volledige inhoud van de root uit en stop deze in een array?
Ik dacht aan het volgende, maar dat werkt mooi niet! Sterker nog, als ik de functie aanroep wordt een bestand ter download aangeboden.
Kan iemand me op weg helpen?
[ code verwijderd ]
deze functie werkt niet omdat hij in een oneindige lus raakt. Deze manier van directories uitlezen retourneert namelijk in elke directory ook een handle naar zijn parent directory (. en ..) waardoor php van parent naar child directory en vice versa blijft gaan tot hij ergens vast loopt. Daarnaast is het voor grote directories mogelijk dat php crashed omdat hij in een te diepe recursiviteit raakt (of hoe je dat ook zegt )

Anyway, een paar van deze threads terug heeft iemand een functie gemaakt die zonder recursiviteit werkt gepost, dit kwam neer op het volgende:
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$dirstack
=array('C:\\program files\\Apache group\\Apache2\htdocs');
while(
sizeof($dirstack)!=0) {
   
$dir=array_shift($dirstack);
   if (
$handle=opendir($dir)) {
      while(
false!==($file=readdir($handle))) {
        if (
$file=='.' || $file=='..') continue;
        if (
is_dir($dir.'\\'.$file)) $dirstack[]=$dir.'\\'.$file;
        else
$files[]=$dir.'\\'.$file;
      }
   }
}
?>
of zoiets
pi_47153833
bestaat er een programma dat realtime kan refreshen zodra er een melding in bijvoorbeeld je errorlog bij komt (in linux kan je dit doen) echter onder windows zou ik het ook wel handig vinden als ik bijvoorbeeld de laatste 5 meldingen kan zien (in realtime)
  zondag 11 maart 2007 @ 14:33:15 #96
65471 SkaterSam
Lurking Galore
pi_47154147
quote:
Op zondag 11 maart 2007 14:24 schreef mschol het volgende:
bestaat er een programma dat realtime kan refreshen zodra er een melding in bijvoorbeeld je errorlog bij komt (in linux kan je dit doen) echter onder windows zou ik het ook wel handig vinden als ik bijvoorbeeld de laatste 5 meldingen kan zien (in realtime)
Die errorlog zit een file, misschien zou je iets met filemtime() kunnen doen, en dan vergelijken met de huidige datum ofzo ? Ik weet niet of je het echt realtime kan maken, want dan zou je in een constante stream moeten staan toch ? Ik heb zelf een script voor de Apache Errorlog die om de 60 seconden de errorlog uitleest en vervolgens de laatste 20 rijen pakt.
Let's make life easy
Typo's are the demon spawn from hell !
pi_47159059
quote:
Op zondag 11 maart 2007 14:33 schreef SkaterSam het volgende:

[..]

Die errorlog zit een file, misschien zou je iets met filemtime() kunnen doen, en dan vergelijken met de huidige datum ofzo ? Ik weet niet of je het echt realtime kan maken, want dan zou je in een constante stream moeten staan toch ? Ik heb zelf een script voor de Apache Errorlog die om de 60 seconden de errorlog uitleest en vervolgens de laatste 20 rijen pakt.
volgens mij zoekt ie gewoon een editor die de file gewoon bijwerkt als deze gewijzigd wordt. ConTEXT is een editor die dit doet onder windows (moet je wel eerst minimizen, dan restoren, en dan geeft ie een melding dat de file gewijzigd is). Het is dus niet helemaal gelijk aan tail -f onder linux, maar het werkt wel
pi_47160426
quote:
Op zondag 11 maart 2007 16:40 schreef Floxxx het volgende:

[..]

volgens mij zoekt ie gewoon een editor die de file gewoon bijwerkt als deze gewijzigd wordt. ConTEXT is een editor die dit doet onder windows (moet je wel eerst minimizen, dan restoren, en dan geeft ie een melding dat de file gewijzigd is). Het is dus niet helemaal gelijk aan tail -f onder linux, maar het werkt wel
ik ben dus eigenlijk opzoek naar een windows equivalent van tail -f (thnx, kwam eff niet meer op de naam )

dat minimize en restore kan ik e.v.t. met dreamweaver ook doen

--edit--

doordat ik nu de naam weet, kon ik googlen:

http://sourceforge.net/projects/tailforwin32/
eens kijken of dat iets is..
pi_47169978
shit mijn template parser vind de punten in domein namen niet leuk:
zie [PHP/(My)SQL] voor dummies - Deel 40 daar mijn template parser..

zodra ik http://home.mschol.eu/pagina.php intik als een url stikt mijn template parser met de volgende melding:
1
2
3
Warning: parsefile( | About Us | Site Map | Privacy Policy | Contact Us | ©2003 Company Name): failed to open stream: No error in d:wwwanime_argewebtemplatetemplateparser.php on line 29

Warning: parsefile(): Failed opening '<a href='http://home.mschol.eu/pagina.php' target='_blank' ><img src='../images/valid-401.gif' alt='' /></a> | <a href='#'>About Us</a> | <a href='#'>Site Map</a> | <a href='#'>Privacy Policy</a> | <a href='http://tweakers.net'>Contact Us</a> | ©2003 Company Name' for inclusion (include_path='.;c:php4pear') in d:wwwanime_argewebtemplatetemplateparser.php on line 29


hij wil dus de opgegeven string als bestand gaan behandelen, maar waarom weet ik niet

--edit--

oplossing gevonden:
http://www.devshed.com/sh(...)ass-with-PHP-Part-I/
en dan bij topic getting info from mysql .

[ Bericht 10% gewijzigd door mschol op 12-03-2007 09:13:10 ]
  FOK!-Schrikkelbaas maandag 12 maart 2007 @ 07:58:53 #100
1972 Swetsenegger
Egocentrische Narcist
pi_47179933
quote:
Op zondag 11 maart 2007 12:19 schreef super-muffin het volgende:
er is een truukje voor, er word een regex gebruikt
[ code verwijderd ]

Deze gebruik ik op mijn website.
Maar vlak ook de mogelijkheid van Multiviews niet uit.
abonnement Unibet Coolblue Bitvavo
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')