CURDATE + 31 dagen later
Graag zou ik records van vandaag en 31 dagen later willen zien.
Dat is gelukt met de volgende sql query:
SELECT * FROM `table` WHERE date >= CURDATE()
AND date < CURDATE() + INTERVAL 31 DAY
Nu zou ik deze query willen combineren met een andere query,
omdat in deze query alle rows van de datum laat zien.
Code (php)
Config database file(db.php)
public function getRows($table,$conditions = array()){
$sql = 'SELECT ';
$sql .= array_key_exists("select",$conditions)?$conditions['select']:'*';
$sql .= ' FROM '.$table;
if(array_key_exists("where",$conditions)){
$sql .= ' WHERE ';
$i = 0;
foreach($conditions['where'] as $key => $value){
$pre = ($i > 0)?' AND ':'';
$sql .= $pre.$key." = '".$value."'";
$i++;
}
}
De andere query is bedoelt voor het zoeken van een sport (bijvoorbeeld voetbal)
Dus dan gaat het om de query van het laden van de gegevens en bij het zoeken van een sport, met het doel dat de pagina de rows vandaag toont en 31 dagen later.
Graag hoor ik van jullie,
Met vriendelijke groet,
Levy van der Meijden
Echo eens $sql, dan moet denk ik wel duidelijk worden hoe je de query moet aanpassen.
En is het altijd exact 31 dagen later? En niet een maand later? Niet alle maanden hebben 31 dagen :).
De records worden wel getoond, maar ik wil graag dat de records worden getoont van vandaag en aankomende 31 dagen.
<tbody id="userData">
Code (php)
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr><td colspan="5">No user(s) found...</td></tr>
</tbody>
Toevoeging op 16/03/2019 20:27:56:
Thomas van den Heuvel op 16/03/2019 20:25:34:
En is het altijd exact 31 dagen later? En niet een maand later? Niet alle maanden hebben 31 dagen :).
Dat maakt niet zoveel uit, ik zou de dagen ook naar 365 dagen kunnen veranderen.
Toevoeging op 16/03/2019 21:23:44:
https://levyvandermeijden.nl/tabellen.php
Op de pagina begint de record met 2019-03-05, maar de bedoeling is dat de record begint met 2019-03-17.
Onderaan de pagina is het wel gelukt met de query.
2019-03-17 06:10:00 -> Grand Prix -> Formule 1
Ik weet niet waar je deze vandaan hebt getrokken of zelf hebt geschreven, maar je zou deze kunnen uitbreiden zodat WHERE-condities ook dergelijke mogelijkheden hebben.
En zoals @Ariën zegt zou het ook handig zijn om de opgebouwde SQL-string ergens te kunnen dumpen zodat je deze kunt inspecteren.
Code (php)
1
2
3
4
5
6
2
3
4
5
6
$users = $db->getRows('table',array(
'order_by'=>'date ASC',
'where' => array(
'date >= CURDATE() AND date < CURDATE() + INTERVAL 31 DAY OR "0"' => 1
)
));
'order_by'=>'date ASC',
'where' => array(
'date >= CURDATE() AND date < CURDATE() + INTERVAL 31 DAY OR "0"' => 1
)
));
Maar zoals Thomas al aangaf: voeg het gewoon toe. Bijvoorbeeld door ook een 'ruwe' WHERE toe te kunnen voegen (string ipv een assoc.array).
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
if(array_key_exists("where",$conditions)){
$sql .= ' WHERE ';
$i = 0;
if(is_string($where = $conditions['where'])) $sql .= $where; //ruwe WHERE
else foreach($where as $key => $value){
$pre = ($i > 0)?' AND ':'';
$sql .= $pre.$key." = '".$value."'";
$i++;
}
}
//en dan:
$users = $db->getRows('table',array(
'order_by'=>'date ASC',
'where' => 'date >= CURDATE() AND date < CURDATE() + INTERVAL 31 DAY'
));
$sql .= ' WHERE ';
$i = 0;
if(is_string($where = $conditions['where'])) $sql .= $where; //ruwe WHERE
else foreach($where as $key => $value){
$pre = ($i > 0)?' AND ':'';
$sql .= $pre.$key." = '".$value."'";
$i++;
}
}
//en dan:
$users = $db->getRows('table',array(
'order_by'=>'date ASC',
'where' => 'date >= CURDATE() AND date < CURDATE() + INTERVAL 31 DAY'
));
@Rob Doemaarwat, de code aangepast, maar dan vindt hij geen resultaten.
Toevoeging op 16/03/2019 22:26:14:
Rob Doemaarwat op 16/03/2019 22:16:17:
Hack yourself:
Maar zoals Thomas al aangaf: voeg het gewoon toe. Bijvoorbeeld door ook een 'ruwe' WHERE toe te kunnen voegen (string ipv een assoc.array).
Code (php)
1
2
3
4
5
6
2
3
4
5
6
$users = $db->getRows('table',array(
'order_by'=>'date ASC',
'where' => array(
'date >= CURDATE() AND date < CURDATE() + INTERVAL 31 DAY OR "0"' => 1
)
));
'order_by'=>'date ASC',
'where' => array(
'date >= CURDATE() AND date < CURDATE() + INTERVAL 31 DAY OR "0"' => 1
)
));
Maar zoals Thomas al aangaf: voeg het gewoon toe. Bijvoorbeeld door ook een 'ruwe' WHERE toe te kunnen voegen (string ipv een assoc.array).
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
if(array_key_exists("where",$conditions)){
$sql .= ' WHERE ';
$i = 0;
if(is_string($where = $conditions['where'])) $sql .= $where; //ruwe WHERE
else foreach($where as $key => $value){
$pre = ($i > 0)?' AND ':'';
$sql .= $pre.$key." = '".$value."'";
$i++;
}
}
//en dan:
$users = $db->getRows('table',array(
'order_by'=>'date ASC',
'where' => 'date >= CURDATE() AND date < CURDATE() + INTERVAL 31 DAY'
));
$sql .= ' WHERE ';
$i = 0;
if(is_string($where = $conditions['where'])) $sql .= $where; //ruwe WHERE
else foreach($where as $key => $value){
$pre = ($i > 0)?' AND ':'';
$sql .= $pre.$key." = '".$value."'";
$i++;
}
}
//en dan:
$users = $db->getRows('table',array(
'order_by'=>'date ASC',
'where' => 'date >= CURDATE() AND date < CURDATE() + INTERVAL 31 DAY'
));
Thanks, het is gelukt!
Toevoeging op 16/03/2019 23:07:21:
Hoe kan ik ook een where aanmaken voor de records, wanneer ik een sport selecteer?
Waar kan ik dit in het script het beste aanpassen?
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
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
<?php
include 'db.php';
$db = new DB();
$tblName = 'table';
$conditions = array();
if(!empty($_POST['type']) && !empty($_POST['val'])){
if($_POST['type'] == 'search'){
$conditions['search'] = array('detail'=>$_POST['val']);
$conditions['order_by'] = 'date ASC';
}elseif($_POST['type'] == 'sort'){
$conditions['order_by'] = 'date ASC';
$sortVal = $_POST['val'];
$sortArr = array(
'voetbal'=>array(
'where'=>array('sport'=>'voetbal')
),
'tennis'=>array(
'where'=>array('sport'=>'tennis')
),
'shorttrack'=>array(
'where'=>array('sport'=>'shorttrack')
),
'darten'=>array(
'where'=>array('sport'=>'darten')
),
'formule1'=>array(
'where'=>array('sport'=>'formule 1')
),
'atletiek'=>array(
'where'=>array('sport'=>'atletiek')
),
'rugby'=>array(
'where'=>array('sport'=>'rugby')
),
);
$sortKey = key($sortArr[$sortVal]);
$conditions[$sortKey] = $sortArr[$sortVal][$sortKey];
}
}else{
$conditions['order_by'] = 'date ASC';
}
$users = $db->getRows($tblName,$conditions);
if(!empty($users)){
$count = 0;
foreach($users as $user): $count++;
echo '<tr>';
echo '<td>'.$user['date'].'</td>';
echo '<td>'.$user['time'].'</td>';
echo '<td>'.$user['detail'].'</td>';
echo '<td>'.$user['sport'].'</td>';
echo '</tr>';
endforeach;
}else{
echo '<tr><td colspan="5">No results</td></tr>';
}
exit;
?>
include 'db.php';
$db = new DB();
$tblName = 'table';
$conditions = array();
if(!empty($_POST['type']) && !empty($_POST['val'])){
if($_POST['type'] == 'search'){
$conditions['search'] = array('detail'=>$_POST['val']);
$conditions['order_by'] = 'date ASC';
}elseif($_POST['type'] == 'sort'){
$conditions['order_by'] = 'date ASC';
$sortVal = $_POST['val'];
$sortArr = array(
'voetbal'=>array(
'where'=>array('sport'=>'voetbal')
),
'tennis'=>array(
'where'=>array('sport'=>'tennis')
),
'shorttrack'=>array(
'where'=>array('sport'=>'shorttrack')
),
'darten'=>array(
'where'=>array('sport'=>'darten')
),
'formule1'=>array(
'where'=>array('sport'=>'formule 1')
),
'atletiek'=>array(
'where'=>array('sport'=>'atletiek')
),
'rugby'=>array(
'where'=>array('sport'=>'rugby')
),
);
$sortKey = key($sortArr[$sortVal]);
$conditions[$sortKey] = $sortArr[$sortVal][$sortKey];
}
}else{
$conditions['order_by'] = 'date ASC';
}
$users = $db->getRows($tblName,$conditions);
if(!empty($users)){
$count = 0;
foreach($users as $user): $count++;
echo '<tr>';
echo '<td>'.$user['date'].'</td>';
echo '<td>'.$user['time'].'</td>';
echo '<td>'.$user['detail'].'</td>';
echo '<td>'.$user['sport'].'</td>';
echo '</tr>';
endforeach;
}else{
echo '<tr><td colspan="5">No results</td></tr>';
}
exit;
?>
Dit :
Voor de nieuwsgierigen, dit is de Database class :
https://www.codexworld.com/php-crud-operations-jquery-ajax-mysql/
Het was misschien handig geweest om dat in het vorige topic te vermelden.
Toevoeging op 17/03/2019 11:02:18:
In het zoekveld moet de complete, exacte, tekst worden ingevuld.
Wat is de kans dat iemand dat weet/kan?
Omdat in de db.class voor zover ik kan zien geen LIKE voorkomt, zou regel 41 moeten worden gewijzigd van :
In :
Alternatief is om de functie uit te breiden.
Bij het filteren van een sport wordt de exacte tekst ingevuld. Bijvoorbeeld: voetbal en tennis.
Maar als ik nu filter voor een sport(voetbal), worden de resultaten van alle records (alle datums) van voetbal getoond.
De database class heb ik aangepast zoals aangegeven. Dus '=' door 'LIKE' vervangen. Inclusief de % tekens.
En in getData.php heb ik 'search' vervangen door 'where'.
Als ik nu een sport uit het menu kies, krijg ik alle records met die sport.
Als ik in het zoekveld een deel van de tekst uit het databaseveld 'detail' kies, krijg ik alle records waar die tekst in voorkomt.
En als een terzijde. De database class is vrij beperkt. Zelf gebruik ik deze :
https://github.com/bennettstone/simple-mysqli
Toevoeging op 17/03/2019 16:11:49:
En voor wie het wil proberen, hier de tabel. Wel effe de tblName in getData.php aanpassen.
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
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
-- Adminer 4.7.1 MySQL dump
SET NAMES utf8;
SET time_zone = '+00:00';
SET foreign_key_checks = 0;
SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO';
SET NAMES utf8mb4;
DROP TABLE IF EXISTS `sports`;
CREATE TABLE `sports` (
`date` date NOT NULL,
`time` time NOT NULL,
`detail` varchar(500) NOT NULL,
`sport` varchar(500) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
INSERT INTO `sports` (`date`, `time`, `detail`, `sport`) VALUES
('2019-03-17', '06:10:00', 'Race - Melbourne in Australia', 'Formule 1'),
('2019-03-21', '19:55:00', 'Berlijn -> Gerwyn Price tegen Rob Cross === James Wade tegen Peter Wright === Michael van Gerwen tegen Daryl Gurney === Michael Smith tegen Mensur Suljovic === Max Hopp tegen Raymond van Barneveld', 'Darten'),
('2019-03-31', '14:10:00', 'Race - Sakhir in Bahrein', 'Formule 1'),
('2019-04-09', '21:00:00', 'Tottenham Hotspur FC - Manchester City FC === Liverpool FC - FC Porto', 'Voetbal'),
('2019-04-10', '21:00:00', 'AFC Ajax - Juventus FC === Manchester United FC - FC Barcelona', 'Voetbal'),
('2019-04-11', '21:00:00', 'Arsenal - Napoli === Slavia Praag - Chelsea === Benfica - Eintracht Frankfurt === Villarreal - Valencia', 'Voetbal'),
('2019-04-14', '08:10:00', 'Race - Shanghai in China', 'Formule 1'),
('2019-04-16', '21:00:00', 'Juventus FC - AFC Ajax === FC Barcelona - Manchester United FC', 'Voetbal'),
('2019-04-17', '21:00:00', 'Manchester City FC - Tottenham Hotspur FC === FC Porto - Liverpool FC', 'Voetbal'),
('2019-04-18', '21:00:00', 'Napoli - Arsenal === Chelsea - Slavia Praag === Eintracht Frankfurt - Benfica - === Valencia - Villarreal', 'Voetbal'),
('2019-04-28', '14:10:00', 'Race - Bakoe in Azerbeidzjan', 'Formule 1'),
('2019-05-05', '18:00:00', 'Ajax tegen Willem II', 'Voetbal'),
('2019-05-11', '00:00:00', 'tot en met 02-06-2019', 'Wielrennen'),
('2019-05-12', '10:00:00', 'Race - Spanje', 'Formule 1'),
('2019-05-26', '15:10:00', 'Race - Monaco', 'Formule 1'),
('2019-05-29', '21:00:00', 'Olympisch Stadion - Bakoe in Azerbeidzjan', 'Voetbal'),
('2019-06-01', '20:45:00', 'Wanda Metropolitano - Madrid in Spanje', 'Voetbal'),
('2019-06-05', '20:45:00', 'Portugal tegen Zwitserland', 'Voetbal'),
('2019-06-06', '20:45:00', 'Nederland tegen Engeland', 'Voetbal'),
('2019-06-09', '20:10:00', 'Race - Canada', 'Formule 1'),
('2019-06-11', '15:00:00', 'Nederland in Le Havre tegen Nieuw-Zeeland', 'Voetbal'),
('2019-06-14', '00:00:00', 'tot en met 07-07-2019', 'Voetbal'),
('2019-06-15', '15:00:00', 'Nederland tegen Kameroen', 'Voetbal'),
('2019-06-15', '00:00:00', 'tot en met 13-07-2019', 'Voetbal'),
('2019-06-20', '18:00:00', 'Nederland tegen Canada', 'Voetbal'),
('2019-06-23', '15:10:00', 'Race - Frankrijk', 'Formule 1'),
('2019-06-30', '15:10:00', 'Race - Oostenrijk', 'Formule 1'),
('2019-07-01', '00:00:00', 'tot en met 14-07-2019', 'Tennis'),
('2019-07-06', '00:00:00', 'tot en met 28-07-2019', 'Wielrennen'),
('2019-07-14', '15:10:00', 'Race - van Groot-Brittanni', 'Formule 1'),
('2019-07-28', '15:10:00', 'Race - Duitsland', 'Formule 1'),
('2019-08-04', '15:10:00', 'Race - Hongarije', 'Formule 1'),
('2019-08-24', '00:00:00', 'tot en met 15-09-2019', 'Wielrennen'),
('2019-08-26', '00:00:00', 'tot en met 08-09-2019', 'Tennis'),
('2019-09-01', '15:10:00', 'Race - Belgi', 'Formule 1'),
('2019-09-08', '15:10:00', 'Race - Itali', 'Formule 1'),
('2019-09-22', '14:10:00', 'Race - Singapore', 'Formule 1'),
('2019-09-22', '00:00:00', 'tot en met 29-09-2019', 'Wielrennen'),
('2019-09-29', '18:10:00', 'Race - Rusland', 'Formule 1'),
('2019-10-13', '07:10:00', 'Race - Japan', 'Formule 1'),
('2019-10-27', '20:10:00', 'Race - Mexico', 'Formule 1'),
('2019-11-03', '20:10:00', 'Race - de Verenigde Staten', 'Formule 1'),
('2019-11-17', '18:10:00', 'Race - Brazili', 'Formule 1'),
('2019-11-30', '00:00:00', 'tot en met 15-12-2019', 'Handbal'),
('2019-12-01', '14:10:00', 'Race - Abu Dhabi', 'Formule 1'),
('2019-09-28', '00:00:00', 'tot en met 02-10-2019', 'Atletiek'),
('2019-03-08', '09:00:00', 'Sofia in Bulgarije - Kwalificatie: 500, 1000 en 1500 meter', 'Shorttrack'),
('2019-03-09', '13:02:00', 'Sofia in Bulgarije - Finale, halve finale en kwartfinale: 500, 1000 en 1500 meter', 'Shorttrack'),
('2019-03-10', '13:02:00', 'Sofia in Bulgarije - Finale, halve finale en kwartfinale: 500, 1000 en 1500 meter', 'Shorttrack'),
('2019-03-09', '13:15:00', 'TeamNL Heren XV (Nederland) tegen Portugal', 'Rugby'),
('2019-03-09', '15:45:00', 'Oranje dames XV (Nederland) tegen Duitsland', 'Rugby'),
('2019-09-20', '00:00:00', 'tot en met 02-10-2019', 'Rugby'),
('2019-03-10', '21:00:00', 'Bertens K. (Ned) tegen Konta J. (Gbr)', 'Tennis'),
('2019-03-10', '19:00:00', 'Rublev A. (Rus) tegen Haase R. (Ned)', 'Tennis'),
('2019-03-11', '22:00:00', 'Brady J./Riske A. tegen Bertens K./Vekic D.', 'Tennis'),
('2019-03-12', '20:00:00', 'Bertens K. (Ned) tegen Muguruza G. (Esp)', 'Tennis'),
('2019-05-26', '12:00:00', 'tot en met 09-06-2019', 'Tennis');
-- 2019-03-17 15:07:54
SET NAMES utf8;
SET time_zone = '+00:00';
SET foreign_key_checks = 0;
SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO';
SET NAMES utf8mb4;
DROP TABLE IF EXISTS `sports`;
CREATE TABLE `sports` (
`date` date NOT NULL,
`time` time NOT NULL,
`detail` varchar(500) NOT NULL,
`sport` varchar(500) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
INSERT INTO `sports` (`date`, `time`, `detail`, `sport`) VALUES
('2019-03-17', '06:10:00', 'Race - Melbourne in Australia', 'Formule 1'),
('2019-03-21', '19:55:00', 'Berlijn -> Gerwyn Price tegen Rob Cross === James Wade tegen Peter Wright === Michael van Gerwen tegen Daryl Gurney === Michael Smith tegen Mensur Suljovic === Max Hopp tegen Raymond van Barneveld', 'Darten'),
('2019-03-31', '14:10:00', 'Race - Sakhir in Bahrein', 'Formule 1'),
('2019-04-09', '21:00:00', 'Tottenham Hotspur FC - Manchester City FC === Liverpool FC - FC Porto', 'Voetbal'),
('2019-04-10', '21:00:00', 'AFC Ajax - Juventus FC === Manchester United FC - FC Barcelona', 'Voetbal'),
('2019-04-11', '21:00:00', 'Arsenal - Napoli === Slavia Praag - Chelsea === Benfica - Eintracht Frankfurt === Villarreal - Valencia', 'Voetbal'),
('2019-04-14', '08:10:00', 'Race - Shanghai in China', 'Formule 1'),
('2019-04-16', '21:00:00', 'Juventus FC - AFC Ajax === FC Barcelona - Manchester United FC', 'Voetbal'),
('2019-04-17', '21:00:00', 'Manchester City FC - Tottenham Hotspur FC === FC Porto - Liverpool FC', 'Voetbal'),
('2019-04-18', '21:00:00', 'Napoli - Arsenal === Chelsea - Slavia Praag === Eintracht Frankfurt - Benfica - === Valencia - Villarreal', 'Voetbal'),
('2019-04-28', '14:10:00', 'Race - Bakoe in Azerbeidzjan', 'Formule 1'),
('2019-05-05', '18:00:00', 'Ajax tegen Willem II', 'Voetbal'),
('2019-05-11', '00:00:00', 'tot en met 02-06-2019', 'Wielrennen'),
('2019-05-12', '10:00:00', 'Race - Spanje', 'Formule 1'),
('2019-05-26', '15:10:00', 'Race - Monaco', 'Formule 1'),
('2019-05-29', '21:00:00', 'Olympisch Stadion - Bakoe in Azerbeidzjan', 'Voetbal'),
('2019-06-01', '20:45:00', 'Wanda Metropolitano - Madrid in Spanje', 'Voetbal'),
('2019-06-05', '20:45:00', 'Portugal tegen Zwitserland', 'Voetbal'),
('2019-06-06', '20:45:00', 'Nederland tegen Engeland', 'Voetbal'),
('2019-06-09', '20:10:00', 'Race - Canada', 'Formule 1'),
('2019-06-11', '15:00:00', 'Nederland in Le Havre tegen Nieuw-Zeeland', 'Voetbal'),
('2019-06-14', '00:00:00', 'tot en met 07-07-2019', 'Voetbal'),
('2019-06-15', '15:00:00', 'Nederland tegen Kameroen', 'Voetbal'),
('2019-06-15', '00:00:00', 'tot en met 13-07-2019', 'Voetbal'),
('2019-06-20', '18:00:00', 'Nederland tegen Canada', 'Voetbal'),
('2019-06-23', '15:10:00', 'Race - Frankrijk', 'Formule 1'),
('2019-06-30', '15:10:00', 'Race - Oostenrijk', 'Formule 1'),
('2019-07-01', '00:00:00', 'tot en met 14-07-2019', 'Tennis'),
('2019-07-06', '00:00:00', 'tot en met 28-07-2019', 'Wielrennen'),
('2019-07-14', '15:10:00', 'Race - van Groot-Brittanni', 'Formule 1'),
('2019-07-28', '15:10:00', 'Race - Duitsland', 'Formule 1'),
('2019-08-04', '15:10:00', 'Race - Hongarije', 'Formule 1'),
('2019-08-24', '00:00:00', 'tot en met 15-09-2019', 'Wielrennen'),
('2019-08-26', '00:00:00', 'tot en met 08-09-2019', 'Tennis'),
('2019-09-01', '15:10:00', 'Race - Belgi', 'Formule 1'),
('2019-09-08', '15:10:00', 'Race - Itali', 'Formule 1'),
('2019-09-22', '14:10:00', 'Race - Singapore', 'Formule 1'),
('2019-09-22', '00:00:00', 'tot en met 29-09-2019', 'Wielrennen'),
('2019-09-29', '18:10:00', 'Race - Rusland', 'Formule 1'),
('2019-10-13', '07:10:00', 'Race - Japan', 'Formule 1'),
('2019-10-27', '20:10:00', 'Race - Mexico', 'Formule 1'),
('2019-11-03', '20:10:00', 'Race - de Verenigde Staten', 'Formule 1'),
('2019-11-17', '18:10:00', 'Race - Brazili', 'Formule 1'),
('2019-11-30', '00:00:00', 'tot en met 15-12-2019', 'Handbal'),
('2019-12-01', '14:10:00', 'Race - Abu Dhabi', 'Formule 1'),
('2019-09-28', '00:00:00', 'tot en met 02-10-2019', 'Atletiek'),
('2019-03-08', '09:00:00', 'Sofia in Bulgarije - Kwalificatie: 500, 1000 en 1500 meter', 'Shorttrack'),
('2019-03-09', '13:02:00', 'Sofia in Bulgarije - Finale, halve finale en kwartfinale: 500, 1000 en 1500 meter', 'Shorttrack'),
('2019-03-10', '13:02:00', 'Sofia in Bulgarije - Finale, halve finale en kwartfinale: 500, 1000 en 1500 meter', 'Shorttrack'),
('2019-03-09', '13:15:00', 'TeamNL Heren XV (Nederland) tegen Portugal', 'Rugby'),
('2019-03-09', '15:45:00', 'Oranje dames XV (Nederland) tegen Duitsland', 'Rugby'),
('2019-09-20', '00:00:00', 'tot en met 02-10-2019', 'Rugby'),
('2019-03-10', '21:00:00', 'Bertens K. (Ned) tegen Konta J. (Gbr)', 'Tennis'),
('2019-03-10', '19:00:00', 'Rublev A. (Rus) tegen Haase R. (Ned)', 'Tennis'),
('2019-03-11', '22:00:00', 'Brady J./Riske A. tegen Bertens K./Vekic D.', 'Tennis'),
('2019-03-12', '20:00:00', 'Bertens K. (Ned) tegen Muguruza G. (Esp)', 'Tennis'),
('2019-05-26', '12:00:00', 'tot en met 09-06-2019', 'Tennis');
-- 2019-03-17 15:07:54
Het enige dat ik nog graag zou willen, is dat ik niet alle records van een sport worden getoond.
Vanaf de datum van vandaag en de komende 365 dagen.
Nu bij het filteren, filtert hij echt specifiek bijvoorbeeld voetbal.
Toevoeging op 17/03/2019 17:18:29:
$users = $db->getRows($tblName,$conditions,array(
'order_by'=>'date ASC',
'where' => 'date >= CURDATE() AND date < CURDATE() + INTERVAL 365 DAY'
));
Maar dan worden alsnog alle resultaten van een sport (voetbal) weergegeven.
Volgens mij is het mogelijk om de $conditions aan te passen, maar ik weet niet hoe.
2. Hier een kunstgreep om de datumbereik te kiezem. Aanpassen in de db class waar 'where' wordt bepaald.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
if( array_key_exists( "where", $conditions ) )
{
$where = " AND `date` >= CURDATE() AND `date` < CURDATE() + INTERVAL 31 DAY";
$sql .= ' WHERE ';
$i = 0;
foreach( $conditions['where'] as $key => $value )
{
$pre = ($i > 0)?' AND ':'';
$sql .= $pre . $key . " LIKE '%" . $value . "%'";
$i++;
}
$sql .= $where;
}
{
$where = " AND `date` >= CURDATE() AND `date` < CURDATE() + INTERVAL 31 DAY";
$sql .= ' WHERE ';
$i = 0;
foreach( $conditions['where'] as $key => $value )
{
$pre = ($i > 0)?' AND ':'';
$sql .= $pre . $key . " LIKE '%" . $value . "%'";
$i++;
}
$sql .= $where;
}
Toevoeging op 17/03/2019 18:23:47:
Nieuwe oplossing :
Voeg deze nieuwe condition op de aangegeven plek in getData.php
Code (php)
1
2
3
4
2
3
4
// nieuwe condition
$conditions['bereik'] = " AND `date` >= CURDATE() AND `date` < CURDATE() + INTERVAL 31 DAY";
$users = $db->getRows( $tblName, $conditions );
$conditions['bereik'] = " AND `date` >= CURDATE() AND `date` < CURDATE() + INTERVAL 31 DAY";
$users = $db->getRows( $tblName, $conditions );
Vervang in het database class bestand in function getRows() de eerder opgegeven oplossing met dit :
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
if( array_key_exists( "where", $conditions ) )
{
$sql .= ' WHERE ';
$i = 0;
foreach( $conditions['where'] as $key => $value )
{
$pre = ($i > 0)?' AND ':'';
$sql .= $pre . $key . " LIKE '%" . $value . "%'";
$i++;
}
// dit is nieuw
if( array_key_exists( "bereik",$conditions) )
{
$sql .= $conditions['bereik'];
}
}
{
$sql .= ' WHERE ';
$i = 0;
foreach( $conditions['where'] as $key => $value )
{
$pre = ($i > 0)?' AND ':'';
$sql .= $pre . $key . " LIKE '%" . $value . "%'";
$i++;
}
// dit is nieuw
if( array_key_exists( "bereik",$conditions) )
{
$sql .= $conditions['bereik'];
}
}
In de bereik condition kan je bijvoorbeeld ook variabelen ingeven met een begin en einddatum.
Code (php)
1
$conditions['bereik'] = " AND `date` >= " . $begindatum . " AND `date` < " . $begindatum . " + " . " INTERVAL " . $getal . " DAY";
Alles wat je kan verzinnen.
Oh, en pas je LinkenIn profiel eens aan, IT Consultant. Ik moet altijd in mijn broek pissen van het lachen als ik dat lees. En dan moet ik me weer verschonen.
Super bedankt! Niet te vaak dan kijken, haha. Ik verander het.