ajax-datagrid-met-dropdowns-op-jaar-en-maand-zoek
Gesponsorde koppelingen
PHP script bestanden
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
<?php
// SCRIPT OM NIEUWSITEMS UIT DATABASE IN EEN DATAGRID WEER TE GEVEN
// GEBRUIKTE DATABASE TABEL
/*
CREATE TABLE `nieuws` (
`nieuwsID` int(5) NOT NULL auto_increment,
`nieuwsAuteur` varchar(20) default NULL,
`nieuwsDatum` date NOT NULL default '0000-00-00',
`nieuwsTitel` varchar(80) default NULL,
`nieuwsBerichtkort` varchar(255) NOT NULL default '',
`nieuwsBericht` text NOT NULL,
`nieuwsFoto1` varchar(50) NOT NULL default '',
`nieuwsFoto2` varchar(50) default NULL,
PRIMARY KEY (`nieuwsID`),
FULLTEXT KEY `art_search` (`nieuwsTitel`,`nieuwsBerichtkort`,`nieuwsBericht`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=401 ;
*/
// EEN AANTAL REGELS VOOR HET VULLEN VAN DE DATABASE, KAN HELAAS NIET EEN HELE GEVULDE DATABASE GEVEN
/*
INSERT INTO `nieuws` VALUES (45, 'Fiat', '2005-08-31', 'Fiat 600 Actual: de goedkoopste van Nederland', 'Met de introductie van de vernieuwde Fiat 600 levert Fiat de goedkoopste auto op de Nederlandse markt. De nieuwe instapversie in het programma is de Fiat 600 Actual voor een vanafprijs van € 7.395,-. De vernieuwde Fiat 600 staat vanaf 30 september', '<p>Met de introductie van de vernieuwde Fiat 600 levert Fiat de goedkoopste auto op de Nederlandse markt. \r\nDe nieuwe instapversie in het programma is de Fiat 600 Actual voor een vanafprijs van € 7.395,-. \r\nDe vernieuwde Fiat 600 staat vanaf 30 september in de showroom.</p>\r\n\r\n<p>De styling van de vernieuwde Fiat 600 grijpt terug naar het origineel uit de jaren ''60 met \r\nnieuwe lak en interieurkleuren en nieuwe logo''s op de voor- en achterkant. Ook onderhuids is \r\ner veel vernieuwd. De passieve veiligheid is verder verhoogd door de versteviging van de \r\nkooiconstructie, de toepassing van verstevigingbalken in de portieren en nieuw ontworpen \r\nkreukelzones. Het comfort is toegenomen door verbeterde geluidsisolatie waardoor de Fiat 600 \r\nde stilste auto is in de klasse. </p>\r\n\r\n<p>Het leveringsprogramma omvat voortaan drie uitvoeringen.<br />\r\nAan de basis staat de Fiat 600 Actual welke standaard is uitgerust met:</p> \r\n\r\n<ul>\r\n<li>ABS</li> \r\n<li>Bestuurdersairbag </li>\r\n<li>Neerklapbare achterbank</li> \r\n<li>Brandpreventiesysteem</li>\r\n<li>Radiovoorbereiding</li>\r\n<li>Van binnenuit verstelbare buitenspiegels.</li> \r\n</ul>\r\n\r\n<p>De Fiat 600 Young blijft qua prijs (€ 7.995,-) en uitrusting gelijk aan de Seicento \r\nYoung en is dus t.o.v. de Actual uitvoering extra uitgerust met:</p>\r\n\r\n<ul>\r\n<li>Stuurbekrachtiging</li>\r\n<li>Elektrische ramen voor in carrosseriekleur gespoten bumpers, spiegels en handgrepen</li> \r\n<li>Centrale portiervergrendeling</li>\r\n<li>Speciale two-tone bekleding met Fiat logo.</li>\r\n</ul> \r\n\r\n<p>Voor de echte liefhebber die met iets speciaals wil rijden, is er de 50th Anniversary \r\nEdition (€ 8.395,-). Ter ere van de 50e verjaardag van de Seicento is deze versie ten \r\nopzichte van de Young opgetuigd met:</p>\r\n\r\n<ul>\r\n<li>Speciale striping over motorkap, flanken en dak</li>\r\n<li>Deelbare achterbank</li>\r\n<li>Lederen stuurwiel</li>\r\n<li>Mistlampen </li>\r\n<li>Speciale lakkleuren: pastel blauw, groen of ivoor.</li>\r\n</ul>', '/uploads/33.jpg', '/uploads/32.jpg');
INSERT INTO `nieuws` VALUES (57, 'Peugeot', '2005-09-08', 'Peugeot 407 Coupé geprijsd', 'Peugeot heeft de prijs bekendgemaakt van de nieuwe 407 Coupé. Aan het einde van het jaar wordt het nieuwe model in de vaderlandse showrooms verwacht. De Peugeot 407 Coupé is leverbaar in drie uitrustingsniveaus', '<p>Peugeot heeft de prijs bekendgemaakt van de nieuwe 407 Coupé. Aan het einde van het jaar wordt het nieuwe model in de vaderlandse showrooms verwacht.</p> \r\n\r\n<p>De Peugeot 407 Coupé is leverbaar in drie uitrustingsniveaus: de simpelste is de \r\n\r\nRéférence, daarop volgt de Pack en de Féline is het topmodel.<br/> \r\nDe simpelste 407 Coupé is de Référence met de 2,2-liter viercilinder motor. Daarvan is de \r\n\r\nvanafprijs 37.200 euro. De 407 Coupé met de 204 pk sterke 2,7-liter V6 HDif dieselmotor is leverbaar voor \r\n\r\n48.900 euro. Tot de uitrusting behoren onder meer een gescheiden climate control, cruise control, zeven airbags, \r\n\r\nparkeersensoren aan de achterzijde en xenon koplampen.</p>\r\n\r\n<p>De Pack-uitvoering kan ook worden gekocht in combinatie met de 3,0-liter V6 motor. Die wisselt bij Peugeot van \r\n\r\neigenaar voor 50.800 euro. De meerprijs voor de Pack-versie ten opzicht van de Référence is 3.700 \r\n\r\neuro. De Pack-uitvoering heeft onder meer lederen bekleding en een JBL geluidssysteem.<br/>\r\nDe Féline-versie is alleen te koop met de twee zescilinder motoren; een zestraps automaat behoort tot de \r\n\r\nstandaarduitrusting. Ten opzichte van de Pack geldt voor deze topuitvoering een meerpijs van 4.300 euro. De \r\n\r\nFéline heeft een leerpakket waarbij ook de overkapping van het dashboard en het instrumentenpaneel zijn \r\n\r\nmeebekleed en een alarm met supervergrendeling.</p>', '/uploads/47.jpg', '/uploads/46.jpg');
INSERT INTO `nieuws` VALUES (40, 'Seat', '2005-10-07', 'Nieuwe uitvoeringen van de Seat Ibiza, Cordoba en Altea', 'Met onmiddellijke ingang levert SEAT extra luxueus uitgevoerde versies van de Ibiza, de Cordoba en de Altea. De Ibiza en Cordoba krijgen daarbij de toevoeging Sensation en de extra aangeklede Altea gaat als Emotion door het leven', '<p>Met onmiddellijke ingang levert SEAT extra luxueus uitgevoerde versies van de Ibiza, de Cordoba en de Altea. \r\nDe Ibiza en Cordoba krijgen daarbij de toevoeging Sensation en de extra aangeklede Altea gaat als Emotion door \r\nhet leven. Voor zo lang als het duurt, want zowel de Sensation- als de Emotion-modellen worden in beperkte oplage \r\ngeproduceerd.</p>\r\n\r\n<p>De Ibiza (3- en 5-deurs) en Cordoba Sensation zijn leverbaar met de 1.4-liter benzinemotor (100 pk) en 1.9 TDI \r\n(eveneens 100 pk). Ze doen hun naam eer aan, want hun uitrusting is werkelijk sensationeel compleet. Beide hebben het \r\nReference-uitrustingsniveau als basis maar daar komt het volgende bij: 15-inch lichtmetalen velgen, een volautomatische \r\nairconditioning (Climatronic), cruise control, een bekerhouder en speciale bekleding. Daarnaast zijn de Sensation-modellen \r\nherkenbaar aan de mistlampen in de voorbumper, de dubbele koplampen, de chromen grille en deurgrepen en buitenspiegels in \r\ncarrosseriekleur. Voor de Sensation-modellen is er keus uit vijf carrosseriekleuren.</p>\r\n\r\n<p>Dit complete pakket heeft een consumentenprijs van slechts 700,- euro wat een klantvoordeel oplevert van 2.500,- euro. \r\nDe Ibiza Sensation is leverbaar vanaf 14.995,- euro en de Cordoba Sensation vanaf 15.995,- euro (incl. BPM/BTW).</p>\r\n\r\n<h5>De Altea Emotion</h5>\r\n\r\n<p>Ook voor de succesvolle Altea is nu een actiepakket leverbaar. De basis hierbij is de Reference-uitvoering, \r\nwaarbij de toch al complete standaarduitrusting van dit model wordt aangevuld met 16-ich lichtmetalen velgen, een \r\nvolautomatische airconditioning (Climatronic), cruise control, boordcomputer, mistlampen vóór en donker \r\ngetint ''privacy-glass'' achter. Het Emotion-pakket maakt niet alleen veel los door zijn inhoud, maar ook door de prijs: \r\nslechts 695,- euro. Dat betekent een voordeel voor de consument van zo''n 1000,- euro. De Altea Emotion is leverbaar met \r\nalle motoren, die ook voor de Reference beschikbaar zijn en er is keus uit zeven carrosseriekleuren. Voor dit beperkt \r\nleverbare model zijn geen opties beschikbaar. De Altea Emotion is leverbaar vanaf 21.990,- (incl. BPM/BTW).</p>\r\n\r\n', '/uploads/37.jpg', '/uploads/36.jpg');
INSERT INTO `nieuws` VALUES (41, 'Hyundai', '2005-10-07', 'Hyundai gaat nieuwe Europese fabriek bouwen', 'Hyundai heeft vergevorderde plannen om een nieuwe Europese assemblagefabriek te bouwen. Met deze beslissing is een investering gemoeid van 1 miljard euro. Het is de bedoeling dat volgend jaar met de bouw van de nieuwe fabriek wordt begonnen.', '<p>Hyundai heeft vergevorderde plannen om een nieuwe Europese assemblagefabriek te bouwen. Met deze beslissing is een \r\ninvestering gemoeid van 1 miljard euro. Het is de bedoeling dat volgend jaar met de bouw van de nieuwe fabriek wordt \r\nbegonnen. Vanaf 2008 moeten er jaarlijks 300.000 Hyundai''s van de band rollen. De belangrijkste kandidaat voor deze \r\nnieuwe productiesite is het Tsjechische Ostrava.</p>\r\n\r\n<p>Afgelopen week had Hyundai Chairman Chung Mong-Koo in de Tsjechische hoofdstad Praag een gesprek met eerste minister\r\nJiri Paroubek. De twee spraken in detail over de plannen van Hyundai om een nieuwe Europese assemblagefabriek te bouwen. \r\nDe stad Ostrava is de belangrijkste kandidaat voor de nieuwe Hyundai productiesite. Ostrava biedt de beste mogelijkheden \r\nomdat de stad nog geen 70 kilometer afstand ligt van Zilini, waar zustermerk Kia een fabriek aan het bouwen is. \r\nHet is de bedoeling dat beide fabrieken samenwerkingsverbanden aangaan. Ook voor gemeenschappelijke toeleveranciers \r\nis dit een ideale locatie.</p>\r\n\r\n<p>Na Noord Amerika is Europa de tweede grootste afzetmarkt voor Hyundai. Dit jaar zullen minstens 420.000 Hyundai''s in Europa \r\nverkocht worden. De verkoopsprognose voor Europa de volgende jaren is erg ambitieus met 520.000 eenheden in 2006 en 580.000 \r\nexemplaren in 2007.</p>\r\n\r\n<p>Om de Europese groei verder te ondersteunen zal Hyundai ook nog extra investeren in de Europese R&D activiteiten. Het \r\naantal werknemers in het Europese Design and Technical Center in Russelsheim is verviervoudigd, terwijl in Offenbach \r\ninmiddels is gestart met de bouw van een nieuw 50 miljoen euro kostend Europees Hyundai hoofdkwartier voor Hyundai Motor \r\nEurope.</p>\r\n\r\n<p>De bouw van een nieuwe faciliteit in Europe sterkt de ambitie van Hyundai om zich steeds meer - met de producten en de \r\norganisatie - op de Europese markten en consumenten te richten.</p> ', '/uploads/26.jpg', '/uploads/25.jpg');
INSERT INTO `nieuws` VALUES (59, 'Chevrolet', '2005-09-14', 'Snelle station-studie van Chevrolet', 'Chevrolet toont op de IAA in Frankfurt eens studiemodel van een snelle stationwagen. De auto is geïnspireerd op de Nubira die meedoet aan het WTCC raceckampioenschap. Al eerder liet Chervolet een WTCC-burgerversie zien van een Nubira sedan', '<p>Chevrolet toont op de IAA in Frankfurt eens studiemodel van een snelle stationwagen. De auto is geïnspireerd op de Nubira die meedoet aan het WTCC raceckampioenschap.</p> \r\n\r\n<p>Al eerder liet Chevrolet een WTCC-burgerversie zien van de Nubira sedan. Nu toont het merk een concept voor een \r\n\r\nsnelle stationwagen versie. Volgens Chevrolet is de kans zeker aanwezig dat deze auto binnenkort bij de dealers \r\n\r\nstaat. \r\nVoor een sportief uiterlijk van de Nubira Stationwagon WTCC+ zorgen extra brede banden, een voorbumper met grote \r\n\r\nluchtinlaten, bredere spatborden en zijskirts. Aan de achterkant is er een bumper met een zogeheten \r\n\r\nventuri-effect. Tot slot zijn er nog donker getinte ramen en staat de auto drie centimeter lager bij het asfalt \r\n\r\ndan andere Nubira''s. Voor wie er dan nog aan de identiteit twijfelt, zijn er nog diverse R+-logo''s.</p> \r\n\r\n<p>In het interieur is er de luxe van lederen bekleding. Ook zijn er verschillende aluminium accenten en zijn er \r\n\r\nspeciale pedalen, een sportieve pookknop en een sportstuur.</p> \r\n\r\n<p>Onder de motorkap ligt een 1,8-liter motor met een door het Zwitserse Delta-motor ontwikkelde supercharger en \r\n\r\neen tussenkoeler. Het voert de standaard krachtbron op van 123 pk nar 172 pk en het maximale koppel stijgt van 165 \r\n\r\nNm naar 230 Nm. Die truc paste Chevrolet al eerder toe bij de WTCC+-versie van de sedan. De stationwagen kan mijn \r\n\r\nzijn aangepaste techniek 215 km/u en sprint in ongeveer 8 seconden van 0 naar 100.</p> \r\n\r\n<p>De speciale Chevrolet staat op 17 inch wielen en heeft aangepaste remmen. Zo hebben de schijven vooraan een \r\n\r\ndiameter van 325 millimeter. Om zijn sportieve karakter tijdens het rijden niet te verloochenen, is de Chevy tot \r\n\r\nslot voorzien van een uitgebreid aangepaste vering, demping en onderstelafstelling. </p>\r\n\r\n', '/uploads/51.jpg', '/uploads/50.jpg');
*/
// GEBRUIKTE CLASSES
// Xajax class voor alle AJAX functionaliteiten - http://www.xajaxproject.org
// MySQL class voor interactie met de database - http://www.sitepoint.com ( Book "The PHP Anthology - Object Oriented PHP Solutions Vol 1 )
// Paging class voor het pagen van de records - http://www.sitepoint.com ( Book "The PHP Anthology - Object Oriented PHP Solutions Vol 1 )
// Error reporting Level
error_reporting(E_ALL);
// Definieer de database gegevens benodigd voor de verbinding
define ('DB_USER', 'root');
define ('DB_PASSWORD', '');
define ('DB_HOST', 'localhost');
define ('DB_NAME', 'test');
// Include de Mysql Class
require_once('media/mysql.class.php');
// Include de Paging class
require_once('media/simplepager.class.php');
// Maak verbinding met de database
$db= &new MySQL(DB_HOST, DB_USER, DB_PASSWORD,DB_NAME);
// Include de Xajax Library
require_once('media/xajax/xajax.inc.php');
// Functie om selectbox met maanden te vullen
function getSelect($value)
{
// Controleer of de variable value niet leeg is en of deze numeriek is
if (!empty($value) && is_numeric($value) && $value !== 0)
{
// Maak opnieuw verbinding met de database
$db= &new MySQL(DB_HOST, DB_USER, DB_PASSWORD,DB_NAME);
$sql = "SELECT DISTINCT
ELT(month(nieuwsDatum),
'januari',
'februari',
'maart',
'april',
'mei',
'juni',
'juli',
'augustus',
'september',
'oktober',
'november',
'december')
AS Maand,
month(nieuwsDatum) AS MaandValue
FROM nieuws
WHERE year(nieuwsDatum) = '".$value."'
ORDER BY nieuwsDatum ASC";
// Voer uit
$res = $db->query($sql);
// Geef het resultaat weer
$sOut = "<select name=\"maand\" id=\"maand\">\n";
$sOut .= "<option value=\"0\">Kies een maand</option>\n";
while ( $row = $res->fetch())
{
// echo ' Maand: '. $row['Maand'] .'<br/>';.
$sOut .= "<option value=\"". $row['MaandValue'] ."\">". $row['Maand'] ."</option>\n";
}
$sOut .= "</select>\n";
$objResponse = new xajaxResponse();
$objResponse->addAssign("maanden", "innerHTML", $sOut);
return $objResponse->getXML();
// Einde $value controle
} else {
// Geef het resultaat weer
$sOut = "<select name=\"maand\" id=\"maand\">\n";
$sOut .= "<option value=\"0\">Kies een maand</option>\n";
$sOut .= "</select>\n";
$objResponse = new xajaxResponse();
$objResponse->addAssign("maanden", "innerHTML", $sOut);
return $objResponse->getXML();
}
}
// FUNCTIE OM DE RESULTATEN WEER TE GEVEN, INCLUSIEF PAGING
function getResult($jaar, $maand, $zoek, $page)
{
// ENKELE STANDAARD VARIABELEN
$rowsPerPage = 15;
$page = addslashes($page);
// Kijk of er iets is ingevuld
if (!empty($jaar) || !empty($maand) || !empty($zoek))
{
// Maak opnieuw verbinding met de database
$db= &new MySQL(DB_HOST, DB_USER, DB_PASSWORD,DB_NAME);
// Begin met het genereren van de query
$sql = "SELECT nieuwsID ";
// Als de variabele zoek niet leeg is
if (!empty($zoek))
{
$zoek = addslashes($zoek);
$sql .= ", MATCH (nieuwsTitel, nieuwsBerichtkort, nieuwsBericht) AGAINST ('".$zoek."') AS score ";
$sql .= "FROM nieuws WHERE ";
// Kijk of er een jaar is geselecteerd
if (!empty($jaar))
{
$sql .= "year(nieuwsDatum) = ".$jaar." ";
//Kijk of er een maand is geselecteerd
if (!empty($maand))
{
$sql .= "AND month(nieuwsDatum) = ".$maand." ";
}
$sql .= "AND MATCH(nieuwsTitel, nieuwsBerichtkort, nieuwsBericht) AGAINST ('".$zoek."') ";
$sql .= "ORDER BY score DESC";
} else {
// Er is geen jaar geselecteerd. Dus ook geen maand!
$sql .= "MATCH(nieuwsTitel, nieuwsBerichtkort, nieuwsBericht) AGAINST ('".$zoek."') ";
$sql .= "ORDER BY score DESC";
}
// Er is geen zoekcriteria opgegeven
} else {
$sql .= "FROM nieuws WHERE ";
$sql .= "year(nieuwsDatum) = ".$jaar." ";
//Kijk of er een maand is geselecteerd
if (!empty($maand))
{
$sql .= "AND month(nieuwsDatum) = ".$maand." ";
}
$sql .= "ORDER BY nieuwsDatum DESC";
}
// Voer de query uit
$res = $db->query($sql);
// Kijk hoeveel rijen er geselecteerd zijn
$total = $res->size();
// Als het resultaat 0 is
if ($total == 0)
{
// Er zijn geen albums in de database, dus geef enkel een link weer om een album toe te voegen
$sOut = "<p>Uw zoekcriteria heeft geen resultaat opgeleverd. Probeert u het alstublieft opnieuw</p>\n";
} else {
// Als de variabele voor de pagina leeg is
if(empty($page)) { $page = 1; }
// Instantiate the pager
$pager=new SimplePager ($rowsPerPage,$total,$page);
// Bouw opnieuw de SQL query, maar nu met paging functionaliteit
$sql = "SELECT nieuwsID, nieuwsTitel, DATE_FORMAT(nieuwsDatum, '%d-%m-%Y') AS date ";
if (!empty($zoek))
{
$zoek = addslashes($zoek);
$sql .= ", MATCH (nieuwsTitel, nieuwsBerichtkort, nieuwsBericht) AGAINST ('".$zoek."') AS score ";
$sql .= "FROM nieuws WHERE ";
// Kijk of er een jaar is geselecteerd
if (!empty($jaar))
{
$sql .= "year(nieuwsDatum) = ".$jaar." ";
//Kijk of er een maand is geselecteerd
if (!empty($maand))
{
$sql .= "AND month(nieuwsDatum) = ".$maand." ";
}
$sql .= "AND MATCH(nieuwsTitel, nieuwsBerichtkort, nieuwsBericht) AGAINST ('".$zoek."') ";
$sql .= "ORDER BY score DESC LIMIT ".$pager->getStartRow().", ".$rowsPerPage;
} else {
// Er is geen jaar geselecteerd. Dus ook geen maand!
$sql .= "MATCH(nieuwsTitel, nieuwsBerichtkort, nieuwsBericht) AGAINST ('".$zoek."') ";
$sql .= "ORDER BY score DESC LIMIT ".$pager->getStartRow().", ".$rowsPerPage;
}
// Er is geen zoekcriteria opgegeven
} else {
$sql .= "FROM nieuws WHERE ";
$sql .= "year(nieuwsDatum) = ".$jaar." ";
//Kijk of er een maand is geselecteerd
if (!empty($maand))
{
$sql .= "AND month(nieuwsDatum) = ".$maand." ";
}
$sql .= "ORDER BY nieuwsDatum DESC LIMIT ".$pager->getStartRow().", ".$rowsPerPage;
}
// Fetch and display the results
$res = $db->query($sql);
$sOut = "<table cellpadding=\"3\" cellspacing=\"3\"><tr><th>ID</th><th>Datum</th><th>Titel</th></tr>\n";
while ($row = $res->fetch())
{
$sOut .= "<tr><td>". stripslashes($row['nieuwsID']) ."</td>\n";
$sOut .= "<td>". stripslashes($row['date']) ."</td>\n";
$sOut .= "<td>". stripslashes($row['nieuwsTitel'])."</td>\n";
$sOut .= "</tr>";
}
$sOut .= "</table>";
// Start met het genereren van de navigatie links
$thispage = $page;
$totalpages = $pager->getTotalPages();
$sOut .= "<br /><table cellspacing=\"0\">\n";
$sOut .= "<tr>\n";
// Pagina .. van ..
$sOut .= "<td width=\"35%\" align=\"left\">Pagina <strong>".$thispage."</strong> van <strong>".$totalpages."</strong></td>\n";
// Aantal records
$sOut .= "<td width=\"30%\" align=\"center\"><strong>".$total."</strong> Records</td>\n";
// Pagina .. van ..
$sOut .= "<td width=\"35%\" align=\"right\">\n";
// Eerste pagina en meer pagina's in DB:
if ($thispage == 1 && $totalpages > 1)
{
$next = $thispage + 1;
$sOut .= "<a href=\"#\" onclick=\"xajax_getResult(document.getElementById('jaar').value,document.getElementById('maand').value,document.getElementById('zoek').value,".$next.");return false;\">Volgende</a>";
// Tweede of volgende pagina en niet de laatste pagina
} elseif ($thispage > 1 && $totalpages > $thispage)
{
$prev = $thispage - 1;
$next = $thispage + 1;
$sOut .= "<a href=\"#\" onclick=\"xajax_getResult(document.getElementById('jaar').value,document.getElementById('maand').value,document.getElementById('zoek').value,".$prev.");return false;\">Vorige</a> <a href=\"#\" onclick=\"xajax_getResult(document.getElementById('jaar').value,document.getElementById('maand').value,document.getElementById('zoek').value,".$next.");return false;\">Volgende</a>";
// Tweede of volgende pagina en wel de laatste pagina
} elseif ($thispage > 1 && $totalpages == $thispage)
{
$prev = $thispage - 1;
$sOut .= "<a href=\"#\" onclick=\"xajax_getResult(document.getElementById('jaar').value,document.getElementById('maand').value,document.getElementById('zoek').value,".$prev.");return false;\">Vorige</a>";
} else {
$sOut .= "";
}
$sOut .= "</td></tr></table>\n";
$sOut .= "</div>\n";
}
// Er is niks ingevuld
} else {
$sOut = "<p>Er is niks ingevuld</p>";
}
$objResponse = new xajaxResponse();
$objResponse->addAssign("result", "innerHTML", $sOut);
return $objResponse->getXML();
}
/* instantiate an xajax object */
$objAjax = new xajax();
/* register the functions to the xajax object */
$objAjax->registerFunction('getSelect');
$objAjax->registerFunction('getResult');
/* process the request */
$objAjax->processRequests();
// HAAL ALLE JAREN UIT DE DATABASE
// De query
$sql = "SELECT DISTINCT year(nieuwsDatum) as Jaar FROM nieuws ORDER BY Jaar DESC";
// Voer uit
$res = $db->query($sql);
// Geef het resultaat weer
$select_jaar = "<select name=\"jaar\" id=\"jaar\" onchange=\"xajax_getSelect(this.value)\">\n";
$select_jaar .= "<option value=\"0\">Kies een jaar</option>\n";
while ($row = $res->fetch())
{
$select_jaar .= "<option value=\"". $row['Jaar'] ."\">". $row['Jaar'] ."</option>\n";
}
$select_jaar .= "</select>\n";
unset($row);
// EINDE HAAL ALLE JAREN UIT DE DATABASE
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Test</title>
<style type="text/css">
html, body {
font-family: Arial, Verdana;
font-size: 12px;
color:#333;
}
p { line-height: 170%; font-family: Arial, Verdana; font-size: 12px; color:#666; font-weight: bold; margin: 0; padding: 0;}
.noBorder { border: 0px none; width: auto; height: auto;}
img { margin: 0; padding: 0;}
p.fout { color: #FF0000;}
p.akkoord { color: #66CC00;}
input { line-height: 19px; height: 19px; border: 1px solid #ccc; padding: 0 3px;}
select { line-height: 21px; height: 21px;}
input, select { font-size: 12px; color: #333; font-family: Arial, Verdana; margin: 0;}
</style>
<?php
// Include de javascript code voor XAJAX
$objAjax->printJavascript('media/xajax/');
?>
</head>
<body>
<form id="testForm" method="post" action="" onsubmit="xajax_getResult(document.getElementById('jaar').value,document.getElementById('maand').value,document.getElementById('zoek').value,1);return false;">
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="136"><p>Jaar:</p></td>
<td width="154"><p>Maand:</p></td>
<td width="155"><p>Zoek naar:</p></td>
<td width="63"> </td>
</tr>
<tr>
<td>
<!-- DROPDOWN LIST MET DE JAREN -->
<?php echo $select_jaar; ?>
<!-- DROPDOWN LIST MET DE JAREN -->
</td>
<td>
<!-- DROPDOWN LIST MET DE MAANDEN -->
<div id="maanden">
<select name="maand" id="maand">
<option value="0">Kies een maand</option>
</select>
</div>
<!-- DROPDOWN LIST MET DE MAANDEN -->
</td>
<td><input type="text" name="zoek" id="zoek" /></td>
<td><input type="image" name="submit" src="media/img/btn_zoeken.jpg" alt="Zoeken" class="noBorder" onclick="xajax_getResult(document.getElementById('jaar').value,document.getElementById('maand').value,document.getElementById('zoek').value,1);return false;" onkeypress="xajax_getResult(document.getElementById('jaar').value,document.getElementById('maand').value,document.getElementById('zoek').value,1);return false;" /></td>
</tr>
</table>
</form>
<!-- DEZE DIV WORDT GEVULD MET DE RESULTATEN -->
<div id="result"></div>
</body>
</html>
// SCRIPT OM NIEUWSITEMS UIT DATABASE IN EEN DATAGRID WEER TE GEVEN
// GEBRUIKTE DATABASE TABEL
/*
CREATE TABLE `nieuws` (
`nieuwsID` int(5) NOT NULL auto_increment,
`nieuwsAuteur` varchar(20) default NULL,
`nieuwsDatum` date NOT NULL default '0000-00-00',
`nieuwsTitel` varchar(80) default NULL,
`nieuwsBerichtkort` varchar(255) NOT NULL default '',
`nieuwsBericht` text NOT NULL,
`nieuwsFoto1` varchar(50) NOT NULL default '',
`nieuwsFoto2` varchar(50) default NULL,
PRIMARY KEY (`nieuwsID`),
FULLTEXT KEY `art_search` (`nieuwsTitel`,`nieuwsBerichtkort`,`nieuwsBericht`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=401 ;
*/
// EEN AANTAL REGELS VOOR HET VULLEN VAN DE DATABASE, KAN HELAAS NIET EEN HELE GEVULDE DATABASE GEVEN
/*
INSERT INTO `nieuws` VALUES (45, 'Fiat', '2005-08-31', 'Fiat 600 Actual: de goedkoopste van Nederland', 'Met de introductie van de vernieuwde Fiat 600 levert Fiat de goedkoopste auto op de Nederlandse markt. De nieuwe instapversie in het programma is de Fiat 600 Actual voor een vanafprijs van € 7.395,-. De vernieuwde Fiat 600 staat vanaf 30 september', '<p>Met de introductie van de vernieuwde Fiat 600 levert Fiat de goedkoopste auto op de Nederlandse markt. \r\nDe nieuwe instapversie in het programma is de Fiat 600 Actual voor een vanafprijs van € 7.395,-. \r\nDe vernieuwde Fiat 600 staat vanaf 30 september in de showroom.</p>\r\n\r\n<p>De styling van de vernieuwde Fiat 600 grijpt terug naar het origineel uit de jaren ''60 met \r\nnieuwe lak en interieurkleuren en nieuwe logo''s op de voor- en achterkant. Ook onderhuids is \r\ner veel vernieuwd. De passieve veiligheid is verder verhoogd door de versteviging van de \r\nkooiconstructie, de toepassing van verstevigingbalken in de portieren en nieuw ontworpen \r\nkreukelzones. Het comfort is toegenomen door verbeterde geluidsisolatie waardoor de Fiat 600 \r\nde stilste auto is in de klasse. </p>\r\n\r\n<p>Het leveringsprogramma omvat voortaan drie uitvoeringen.<br />\r\nAan de basis staat de Fiat 600 Actual welke standaard is uitgerust met:</p> \r\n\r\n<ul>\r\n<li>ABS</li> \r\n<li>Bestuurdersairbag </li>\r\n<li>Neerklapbare achterbank</li> \r\n<li>Brandpreventiesysteem</li>\r\n<li>Radiovoorbereiding</li>\r\n<li>Van binnenuit verstelbare buitenspiegels.</li> \r\n</ul>\r\n\r\n<p>De Fiat 600 Young blijft qua prijs (€ 7.995,-) en uitrusting gelijk aan de Seicento \r\nYoung en is dus t.o.v. de Actual uitvoering extra uitgerust met:</p>\r\n\r\n<ul>\r\n<li>Stuurbekrachtiging</li>\r\n<li>Elektrische ramen voor in carrosseriekleur gespoten bumpers, spiegels en handgrepen</li> \r\n<li>Centrale portiervergrendeling</li>\r\n<li>Speciale two-tone bekleding met Fiat logo.</li>\r\n</ul> \r\n\r\n<p>Voor de echte liefhebber die met iets speciaals wil rijden, is er de 50th Anniversary \r\nEdition (€ 8.395,-). Ter ere van de 50e verjaardag van de Seicento is deze versie ten \r\nopzichte van de Young opgetuigd met:</p>\r\n\r\n<ul>\r\n<li>Speciale striping over motorkap, flanken en dak</li>\r\n<li>Deelbare achterbank</li>\r\n<li>Lederen stuurwiel</li>\r\n<li>Mistlampen </li>\r\n<li>Speciale lakkleuren: pastel blauw, groen of ivoor.</li>\r\n</ul>', '/uploads/33.jpg', '/uploads/32.jpg');
INSERT INTO `nieuws` VALUES (57, 'Peugeot', '2005-09-08', 'Peugeot 407 Coupé geprijsd', 'Peugeot heeft de prijs bekendgemaakt van de nieuwe 407 Coupé. Aan het einde van het jaar wordt het nieuwe model in de vaderlandse showrooms verwacht. De Peugeot 407 Coupé is leverbaar in drie uitrustingsniveaus', '<p>Peugeot heeft de prijs bekendgemaakt van de nieuwe 407 Coupé. Aan het einde van het jaar wordt het nieuwe model in de vaderlandse showrooms verwacht.</p> \r\n\r\n<p>De Peugeot 407 Coupé is leverbaar in drie uitrustingsniveaus: de simpelste is de \r\n\r\nRéférence, daarop volgt de Pack en de Féline is het topmodel.<br/> \r\nDe simpelste 407 Coupé is de Référence met de 2,2-liter viercilinder motor. Daarvan is de \r\n\r\nvanafprijs 37.200 euro. De 407 Coupé met de 204 pk sterke 2,7-liter V6 HDif dieselmotor is leverbaar voor \r\n\r\n48.900 euro. Tot de uitrusting behoren onder meer een gescheiden climate control, cruise control, zeven airbags, \r\n\r\nparkeersensoren aan de achterzijde en xenon koplampen.</p>\r\n\r\n<p>De Pack-uitvoering kan ook worden gekocht in combinatie met de 3,0-liter V6 motor. Die wisselt bij Peugeot van \r\n\r\neigenaar voor 50.800 euro. De meerprijs voor de Pack-versie ten opzicht van de Référence is 3.700 \r\n\r\neuro. De Pack-uitvoering heeft onder meer lederen bekleding en een JBL geluidssysteem.<br/>\r\nDe Féline-versie is alleen te koop met de twee zescilinder motoren; een zestraps automaat behoort tot de \r\n\r\nstandaarduitrusting. Ten opzichte van de Pack geldt voor deze topuitvoering een meerpijs van 4.300 euro. De \r\n\r\nFéline heeft een leerpakket waarbij ook de overkapping van het dashboard en het instrumentenpaneel zijn \r\n\r\nmeebekleed en een alarm met supervergrendeling.</p>', '/uploads/47.jpg', '/uploads/46.jpg');
INSERT INTO `nieuws` VALUES (40, 'Seat', '2005-10-07', 'Nieuwe uitvoeringen van de Seat Ibiza, Cordoba en Altea', 'Met onmiddellijke ingang levert SEAT extra luxueus uitgevoerde versies van de Ibiza, de Cordoba en de Altea. De Ibiza en Cordoba krijgen daarbij de toevoeging Sensation en de extra aangeklede Altea gaat als Emotion door het leven', '<p>Met onmiddellijke ingang levert SEAT extra luxueus uitgevoerde versies van de Ibiza, de Cordoba en de Altea. \r\nDe Ibiza en Cordoba krijgen daarbij de toevoeging Sensation en de extra aangeklede Altea gaat als Emotion door \r\nhet leven. Voor zo lang als het duurt, want zowel de Sensation- als de Emotion-modellen worden in beperkte oplage \r\ngeproduceerd.</p>\r\n\r\n<p>De Ibiza (3- en 5-deurs) en Cordoba Sensation zijn leverbaar met de 1.4-liter benzinemotor (100 pk) en 1.9 TDI \r\n(eveneens 100 pk). Ze doen hun naam eer aan, want hun uitrusting is werkelijk sensationeel compleet. Beide hebben het \r\nReference-uitrustingsniveau als basis maar daar komt het volgende bij: 15-inch lichtmetalen velgen, een volautomatische \r\nairconditioning (Climatronic), cruise control, een bekerhouder en speciale bekleding. Daarnaast zijn de Sensation-modellen \r\nherkenbaar aan de mistlampen in de voorbumper, de dubbele koplampen, de chromen grille en deurgrepen en buitenspiegels in \r\ncarrosseriekleur. Voor de Sensation-modellen is er keus uit vijf carrosseriekleuren.</p>\r\n\r\n<p>Dit complete pakket heeft een consumentenprijs van slechts 700,- euro wat een klantvoordeel oplevert van 2.500,- euro. \r\nDe Ibiza Sensation is leverbaar vanaf 14.995,- euro en de Cordoba Sensation vanaf 15.995,- euro (incl. BPM/BTW).</p>\r\n\r\n<h5>De Altea Emotion</h5>\r\n\r\n<p>Ook voor de succesvolle Altea is nu een actiepakket leverbaar. De basis hierbij is de Reference-uitvoering, \r\nwaarbij de toch al complete standaarduitrusting van dit model wordt aangevuld met 16-ich lichtmetalen velgen, een \r\nvolautomatische airconditioning (Climatronic), cruise control, boordcomputer, mistlampen vóór en donker \r\ngetint ''privacy-glass'' achter. Het Emotion-pakket maakt niet alleen veel los door zijn inhoud, maar ook door de prijs: \r\nslechts 695,- euro. Dat betekent een voordeel voor de consument van zo''n 1000,- euro. De Altea Emotion is leverbaar met \r\nalle motoren, die ook voor de Reference beschikbaar zijn en er is keus uit zeven carrosseriekleuren. Voor dit beperkt \r\nleverbare model zijn geen opties beschikbaar. De Altea Emotion is leverbaar vanaf 21.990,- (incl. BPM/BTW).</p>\r\n\r\n', '/uploads/37.jpg', '/uploads/36.jpg');
INSERT INTO `nieuws` VALUES (41, 'Hyundai', '2005-10-07', 'Hyundai gaat nieuwe Europese fabriek bouwen', 'Hyundai heeft vergevorderde plannen om een nieuwe Europese assemblagefabriek te bouwen. Met deze beslissing is een investering gemoeid van 1 miljard euro. Het is de bedoeling dat volgend jaar met de bouw van de nieuwe fabriek wordt begonnen.', '<p>Hyundai heeft vergevorderde plannen om een nieuwe Europese assemblagefabriek te bouwen. Met deze beslissing is een \r\ninvestering gemoeid van 1 miljard euro. Het is de bedoeling dat volgend jaar met de bouw van de nieuwe fabriek wordt \r\nbegonnen. Vanaf 2008 moeten er jaarlijks 300.000 Hyundai''s van de band rollen. De belangrijkste kandidaat voor deze \r\nnieuwe productiesite is het Tsjechische Ostrava.</p>\r\n\r\n<p>Afgelopen week had Hyundai Chairman Chung Mong-Koo in de Tsjechische hoofdstad Praag een gesprek met eerste minister\r\nJiri Paroubek. De twee spraken in detail over de plannen van Hyundai om een nieuwe Europese assemblagefabriek te bouwen. \r\nDe stad Ostrava is de belangrijkste kandidaat voor de nieuwe Hyundai productiesite. Ostrava biedt de beste mogelijkheden \r\nomdat de stad nog geen 70 kilometer afstand ligt van Zilini, waar zustermerk Kia een fabriek aan het bouwen is. \r\nHet is de bedoeling dat beide fabrieken samenwerkingsverbanden aangaan. Ook voor gemeenschappelijke toeleveranciers \r\nis dit een ideale locatie.</p>\r\n\r\n<p>Na Noord Amerika is Europa de tweede grootste afzetmarkt voor Hyundai. Dit jaar zullen minstens 420.000 Hyundai''s in Europa \r\nverkocht worden. De verkoopsprognose voor Europa de volgende jaren is erg ambitieus met 520.000 eenheden in 2006 en 580.000 \r\nexemplaren in 2007.</p>\r\n\r\n<p>Om de Europese groei verder te ondersteunen zal Hyundai ook nog extra investeren in de Europese R&D activiteiten. Het \r\naantal werknemers in het Europese Design and Technical Center in Russelsheim is verviervoudigd, terwijl in Offenbach \r\ninmiddels is gestart met de bouw van een nieuw 50 miljoen euro kostend Europees Hyundai hoofdkwartier voor Hyundai Motor \r\nEurope.</p>\r\n\r\n<p>De bouw van een nieuwe faciliteit in Europe sterkt de ambitie van Hyundai om zich steeds meer - met de producten en de \r\norganisatie - op de Europese markten en consumenten te richten.</p> ', '/uploads/26.jpg', '/uploads/25.jpg');
INSERT INTO `nieuws` VALUES (59, 'Chevrolet', '2005-09-14', 'Snelle station-studie van Chevrolet', 'Chevrolet toont op de IAA in Frankfurt eens studiemodel van een snelle stationwagen. De auto is geïnspireerd op de Nubira die meedoet aan het WTCC raceckampioenschap. Al eerder liet Chervolet een WTCC-burgerversie zien van een Nubira sedan', '<p>Chevrolet toont op de IAA in Frankfurt eens studiemodel van een snelle stationwagen. De auto is geïnspireerd op de Nubira die meedoet aan het WTCC raceckampioenschap.</p> \r\n\r\n<p>Al eerder liet Chevrolet een WTCC-burgerversie zien van de Nubira sedan. Nu toont het merk een concept voor een \r\n\r\nsnelle stationwagen versie. Volgens Chevrolet is de kans zeker aanwezig dat deze auto binnenkort bij de dealers \r\n\r\nstaat. \r\nVoor een sportief uiterlijk van de Nubira Stationwagon WTCC+ zorgen extra brede banden, een voorbumper met grote \r\n\r\nluchtinlaten, bredere spatborden en zijskirts. Aan de achterkant is er een bumper met een zogeheten \r\n\r\nventuri-effect. Tot slot zijn er nog donker getinte ramen en staat de auto drie centimeter lager bij het asfalt \r\n\r\ndan andere Nubira''s. Voor wie er dan nog aan de identiteit twijfelt, zijn er nog diverse R+-logo''s.</p> \r\n\r\n<p>In het interieur is er de luxe van lederen bekleding. Ook zijn er verschillende aluminium accenten en zijn er \r\n\r\nspeciale pedalen, een sportieve pookknop en een sportstuur.</p> \r\n\r\n<p>Onder de motorkap ligt een 1,8-liter motor met een door het Zwitserse Delta-motor ontwikkelde supercharger en \r\n\r\neen tussenkoeler. Het voert de standaard krachtbron op van 123 pk nar 172 pk en het maximale koppel stijgt van 165 \r\n\r\nNm naar 230 Nm. Die truc paste Chevrolet al eerder toe bij de WTCC+-versie van de sedan. De stationwagen kan mijn \r\n\r\nzijn aangepaste techniek 215 km/u en sprint in ongeveer 8 seconden van 0 naar 100.</p> \r\n\r\n<p>De speciale Chevrolet staat op 17 inch wielen en heeft aangepaste remmen. Zo hebben de schijven vooraan een \r\n\r\ndiameter van 325 millimeter. Om zijn sportieve karakter tijdens het rijden niet te verloochenen, is de Chevy tot \r\n\r\nslot voorzien van een uitgebreid aangepaste vering, demping en onderstelafstelling. </p>\r\n\r\n', '/uploads/51.jpg', '/uploads/50.jpg');
*/
// GEBRUIKTE CLASSES
// Xajax class voor alle AJAX functionaliteiten - http://www.xajaxproject.org
// MySQL class voor interactie met de database - http://www.sitepoint.com ( Book "The PHP Anthology - Object Oriented PHP Solutions Vol 1 )
// Paging class voor het pagen van de records - http://www.sitepoint.com ( Book "The PHP Anthology - Object Oriented PHP Solutions Vol 1 )
// Error reporting Level
error_reporting(E_ALL);
// Definieer de database gegevens benodigd voor de verbinding
define ('DB_USER', 'root');
define ('DB_PASSWORD', '');
define ('DB_HOST', 'localhost');
define ('DB_NAME', 'test');
// Include de Mysql Class
require_once('media/mysql.class.php');
// Include de Paging class
require_once('media/simplepager.class.php');
// Maak verbinding met de database
$db= &new MySQL(DB_HOST, DB_USER, DB_PASSWORD,DB_NAME);
// Include de Xajax Library
require_once('media/xajax/xajax.inc.php');
// Functie om selectbox met maanden te vullen
function getSelect($value)
{
// Controleer of de variable value niet leeg is en of deze numeriek is
if (!empty($value) && is_numeric($value) && $value !== 0)
{
// Maak opnieuw verbinding met de database
$db= &new MySQL(DB_HOST, DB_USER, DB_PASSWORD,DB_NAME);
$sql = "SELECT DISTINCT
ELT(month(nieuwsDatum),
'januari',
'februari',
'maart',
'april',
'mei',
'juni',
'juli',
'augustus',
'september',
'oktober',
'november',
'december')
AS Maand,
month(nieuwsDatum) AS MaandValue
FROM nieuws
WHERE year(nieuwsDatum) = '".$value."'
ORDER BY nieuwsDatum ASC";
// Voer uit
$res = $db->query($sql);
// Geef het resultaat weer
$sOut = "<select name=\"maand\" id=\"maand\">\n";
$sOut .= "<option value=\"0\">Kies een maand</option>\n";
while ( $row = $res->fetch())
{
// echo ' Maand: '. $row['Maand'] .'<br/>';.
$sOut .= "<option value=\"". $row['MaandValue'] ."\">". $row['Maand'] ."</option>\n";
}
$sOut .= "</select>\n";
$objResponse = new xajaxResponse();
$objResponse->addAssign("maanden", "innerHTML", $sOut);
return $objResponse->getXML();
// Einde $value controle
} else {
// Geef het resultaat weer
$sOut = "<select name=\"maand\" id=\"maand\">\n";
$sOut .= "<option value=\"0\">Kies een maand</option>\n";
$sOut .= "</select>\n";
$objResponse = new xajaxResponse();
$objResponse->addAssign("maanden", "innerHTML", $sOut);
return $objResponse->getXML();
}
}
// FUNCTIE OM DE RESULTATEN WEER TE GEVEN, INCLUSIEF PAGING
function getResult($jaar, $maand, $zoek, $page)
{
// ENKELE STANDAARD VARIABELEN
$rowsPerPage = 15;
$page = addslashes($page);
// Kijk of er iets is ingevuld
if (!empty($jaar) || !empty($maand) || !empty($zoek))
{
// Maak opnieuw verbinding met de database
$db= &new MySQL(DB_HOST, DB_USER, DB_PASSWORD,DB_NAME);
// Begin met het genereren van de query
$sql = "SELECT nieuwsID ";
// Als de variabele zoek niet leeg is
if (!empty($zoek))
{
$zoek = addslashes($zoek);
$sql .= ", MATCH (nieuwsTitel, nieuwsBerichtkort, nieuwsBericht) AGAINST ('".$zoek."') AS score ";
$sql .= "FROM nieuws WHERE ";
// Kijk of er een jaar is geselecteerd
if (!empty($jaar))
{
$sql .= "year(nieuwsDatum) = ".$jaar." ";
//Kijk of er een maand is geselecteerd
if (!empty($maand))
{
$sql .= "AND month(nieuwsDatum) = ".$maand." ";
}
$sql .= "AND MATCH(nieuwsTitel, nieuwsBerichtkort, nieuwsBericht) AGAINST ('".$zoek."') ";
$sql .= "ORDER BY score DESC";
} else {
// Er is geen jaar geselecteerd. Dus ook geen maand!
$sql .= "MATCH(nieuwsTitel, nieuwsBerichtkort, nieuwsBericht) AGAINST ('".$zoek."') ";
$sql .= "ORDER BY score DESC";
}
// Er is geen zoekcriteria opgegeven
} else {
$sql .= "FROM nieuws WHERE ";
$sql .= "year(nieuwsDatum) = ".$jaar." ";
//Kijk of er een maand is geselecteerd
if (!empty($maand))
{
$sql .= "AND month(nieuwsDatum) = ".$maand." ";
}
$sql .= "ORDER BY nieuwsDatum DESC";
}
// Voer de query uit
$res = $db->query($sql);
// Kijk hoeveel rijen er geselecteerd zijn
$total = $res->size();
// Als het resultaat 0 is
if ($total == 0)
{
// Er zijn geen albums in de database, dus geef enkel een link weer om een album toe te voegen
$sOut = "<p>Uw zoekcriteria heeft geen resultaat opgeleverd. Probeert u het alstublieft opnieuw</p>\n";
} else {
// Als de variabele voor de pagina leeg is
if(empty($page)) { $page = 1; }
// Instantiate the pager
$pager=new SimplePager ($rowsPerPage,$total,$page);
// Bouw opnieuw de SQL query, maar nu met paging functionaliteit
$sql = "SELECT nieuwsID, nieuwsTitel, DATE_FORMAT(nieuwsDatum, '%d-%m-%Y') AS date ";
if (!empty($zoek))
{
$zoek = addslashes($zoek);
$sql .= ", MATCH (nieuwsTitel, nieuwsBerichtkort, nieuwsBericht) AGAINST ('".$zoek."') AS score ";
$sql .= "FROM nieuws WHERE ";
// Kijk of er een jaar is geselecteerd
if (!empty($jaar))
{
$sql .= "year(nieuwsDatum) = ".$jaar." ";
//Kijk of er een maand is geselecteerd
if (!empty($maand))
{
$sql .= "AND month(nieuwsDatum) = ".$maand." ";
}
$sql .= "AND MATCH(nieuwsTitel, nieuwsBerichtkort, nieuwsBericht) AGAINST ('".$zoek."') ";
$sql .= "ORDER BY score DESC LIMIT ".$pager->getStartRow().", ".$rowsPerPage;
} else {
// Er is geen jaar geselecteerd. Dus ook geen maand!
$sql .= "MATCH(nieuwsTitel, nieuwsBerichtkort, nieuwsBericht) AGAINST ('".$zoek."') ";
$sql .= "ORDER BY score DESC LIMIT ".$pager->getStartRow().", ".$rowsPerPage;
}
// Er is geen zoekcriteria opgegeven
} else {
$sql .= "FROM nieuws WHERE ";
$sql .= "year(nieuwsDatum) = ".$jaar." ";
//Kijk of er een maand is geselecteerd
if (!empty($maand))
{
$sql .= "AND month(nieuwsDatum) = ".$maand." ";
}
$sql .= "ORDER BY nieuwsDatum DESC LIMIT ".$pager->getStartRow().", ".$rowsPerPage;
}
// Fetch and display the results
$res = $db->query($sql);
$sOut = "<table cellpadding=\"3\" cellspacing=\"3\"><tr><th>ID</th><th>Datum</th><th>Titel</th></tr>\n";
while ($row = $res->fetch())
{
$sOut .= "<tr><td>". stripslashes($row['nieuwsID']) ."</td>\n";
$sOut .= "<td>". stripslashes($row['date']) ."</td>\n";
$sOut .= "<td>". stripslashes($row['nieuwsTitel'])."</td>\n";
$sOut .= "</tr>";
}
$sOut .= "</table>";
// Start met het genereren van de navigatie links
$thispage = $page;
$totalpages = $pager->getTotalPages();
$sOut .= "<br /><table cellspacing=\"0\">\n";
$sOut .= "<tr>\n";
// Pagina .. van ..
$sOut .= "<td width=\"35%\" align=\"left\">Pagina <strong>".$thispage."</strong> van <strong>".$totalpages."</strong></td>\n";
// Aantal records
$sOut .= "<td width=\"30%\" align=\"center\"><strong>".$total."</strong> Records</td>\n";
// Pagina .. van ..
$sOut .= "<td width=\"35%\" align=\"right\">\n";
// Eerste pagina en meer pagina's in DB:
if ($thispage == 1 && $totalpages > 1)
{
$next = $thispage + 1;
$sOut .= "<a href=\"#\" onclick=\"xajax_getResult(document.getElementById('jaar').value,document.getElementById('maand').value,document.getElementById('zoek').value,".$next.");return false;\">Volgende</a>";
// Tweede of volgende pagina en niet de laatste pagina
} elseif ($thispage > 1 && $totalpages > $thispage)
{
$prev = $thispage - 1;
$next = $thispage + 1;
$sOut .= "<a href=\"#\" onclick=\"xajax_getResult(document.getElementById('jaar').value,document.getElementById('maand').value,document.getElementById('zoek').value,".$prev.");return false;\">Vorige</a> <a href=\"#\" onclick=\"xajax_getResult(document.getElementById('jaar').value,document.getElementById('maand').value,document.getElementById('zoek').value,".$next.");return false;\">Volgende</a>";
// Tweede of volgende pagina en wel de laatste pagina
} elseif ($thispage > 1 && $totalpages == $thispage)
{
$prev = $thispage - 1;
$sOut .= "<a href=\"#\" onclick=\"xajax_getResult(document.getElementById('jaar').value,document.getElementById('maand').value,document.getElementById('zoek').value,".$prev.");return false;\">Vorige</a>";
} else {
$sOut .= "";
}
$sOut .= "</td></tr></table>\n";
$sOut .= "</div>\n";
}
// Er is niks ingevuld
} else {
$sOut = "<p>Er is niks ingevuld</p>";
}
$objResponse = new xajaxResponse();
$objResponse->addAssign("result", "innerHTML", $sOut);
return $objResponse->getXML();
}
/* instantiate an xajax object */
$objAjax = new xajax();
/* register the functions to the xajax object */
$objAjax->registerFunction('getSelect');
$objAjax->registerFunction('getResult');
/* process the request */
$objAjax->processRequests();
// HAAL ALLE JAREN UIT DE DATABASE
// De query
$sql = "SELECT DISTINCT year(nieuwsDatum) as Jaar FROM nieuws ORDER BY Jaar DESC";
// Voer uit
$res = $db->query($sql);
// Geef het resultaat weer
$select_jaar = "<select name=\"jaar\" id=\"jaar\" onchange=\"xajax_getSelect(this.value)\">\n";
$select_jaar .= "<option value=\"0\">Kies een jaar</option>\n";
while ($row = $res->fetch())
{
$select_jaar .= "<option value=\"". $row['Jaar'] ."\">". $row['Jaar'] ."</option>\n";
}
$select_jaar .= "</select>\n";
unset($row);
// EINDE HAAL ALLE JAREN UIT DE DATABASE
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Test</title>
<style type="text/css">
html, body {
font-family: Arial, Verdana;
font-size: 12px;
color:#333;
}
p { line-height: 170%; font-family: Arial, Verdana; font-size: 12px; color:#666; font-weight: bold; margin: 0; padding: 0;}
.noBorder { border: 0px none; width: auto; height: auto;}
img { margin: 0; padding: 0;}
p.fout { color: #FF0000;}
p.akkoord { color: #66CC00;}
input { line-height: 19px; height: 19px; border: 1px solid #ccc; padding: 0 3px;}
select { line-height: 21px; height: 21px;}
input, select { font-size: 12px; color: #333; font-family: Arial, Verdana; margin: 0;}
</style>
<?php
// Include de javascript code voor XAJAX
$objAjax->printJavascript('media/xajax/');
?>
</head>
<body>
<form id="testForm" method="post" action="" onsubmit="xajax_getResult(document.getElementById('jaar').value,document.getElementById('maand').value,document.getElementById('zoek').value,1);return false;">
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="136"><p>Jaar:</p></td>
<td width="154"><p>Maand:</p></td>
<td width="155"><p>Zoek naar:</p></td>
<td width="63"> </td>
</tr>
<tr>
<td>
<!-- DROPDOWN LIST MET DE JAREN -->
<?php echo $select_jaar; ?>
<!-- DROPDOWN LIST MET DE JAREN -->
</td>
<td>
<!-- DROPDOWN LIST MET DE MAANDEN -->
<div id="maanden">
<select name="maand" id="maand">
<option value="0">Kies een maand</option>
</select>
</div>
<!-- DROPDOWN LIST MET DE MAANDEN -->
</td>
<td><input type="text" name="zoek" id="zoek" /></td>
<td><input type="image" name="submit" src="media/img/btn_zoeken.jpg" alt="Zoeken" class="noBorder" onclick="xajax_getResult(document.getElementById('jaar').value,document.getElementById('maand').value,document.getElementById('zoek').value,1);return false;" onkeypress="xajax_getResult(document.getElementById('jaar').value,document.getElementById('maand').value,document.getElementById('zoek').value,1);return false;" /></td>
</tr>
</table>
</form>
<!-- DEZE DIV WORDT GEVULD MET DE RESULTATEN -->
<div id="result"></div>
</body>
</html>