Foreach hulp
Ik heb een systeem gebouwd waarmee je promotierondes kan zien (wie en wanneer iemand promoveert). Maar ik wil dat hij alleen de gegevens uit de database haalt waarvan de tijd (bv. 13:00 of 15:30) nog niet geweest is. Dus als het nu bijvoorbeeld 07:39 is en iemand heeft een promotieronde toegevoegd aan de database met de tijd 07:30 dat die promotieronde dan niet meer te zien is. Zelf weet ik niet hoe dit moet, dus ik hoop dat jullie het begrijpen en mij kunnen helpen!
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
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
<ul class="products-list product-list-in-box">
<?php
$data = $link->query("SELECT `gebruikersnaam`, `tijd`, `datum` FROM `promotie_rondes` ORDER BY `datum` DESC LIMIT 3");
$rows = $data->num_rows;
if(!empty($rows)) {
foreach ($data as $key => $value) {
echo "
<li class='item'>
<div class='product-img'>
<img src='https://www.leet.ws/leet-imaging/avatar/".$value['gebruikersnaam']."&headonly=1' alt='Promotieronde gever'>
</div>
<div class='product-info'>
<a href='profiel/".$value['gebruikersnaam']."' class='product-title'>Promotieronde van ".$value['tijd']."</a>
<span class='product-description'>
Deze promotieronde wordt gegeven door <b>".$value['gebruikersnaam']."</b>
</span>
</div>
</li>";
}
}
if($rows == 1) {
echo "
<li class='item'>
<div class='product-img'>
<img src='paneel/assets/img/frank.png' alt='Promotieronde gever'>
</div>
<div class='product-info'>
<a href='' class='product-title'>Promotieronde van onbekend</a>
<span class='product-description'>
Deze promotieronde wordt gegeven door <b>Onbekend</b>
</span>
</div>
</li>";
echo "
<li class='item'>
<div class='product-img'>
<img src='paneel/assets/img/frank.png' alt='Promotieronde gever'>
</div>
<div class='product-info'>
<a href='' class='product-title'>Promotieronde van onbekend</a>
<span class='product-description'>
Deze promotieronde wordt gegeven door <b>Onbekend</b>
</span>
</div>
</li>";
}
if($rows == 2) {
echo "
<li class='item'>
<div class='product-img'>
<img src='paneel/assets/img/frank.png' alt='Promotieronde gever'>
</div>
<div class='product-info'>
<a href='' class='product-title'>Promotieronde van onbekend</a>
<span class='product-description'>
Deze promotieronde wordt gegeven door <b>Onbekend</b>
</span>
</div>
</li>";
}
if(empty($rows)) {
echo "
<li class='item'>
<div class='product-img'>
<img src='paneel/assets/img/frank.png' alt='Promotieronde gever'>
</div>
<div class='product-info'>
<a href='' class='product-title'>Promotieronde van onbekend</a>
<span class='product-description'>
Deze promotieronde wordt gegeven door <b>Onbekend</b>
</span>
</div>
</li>";
echo "
<li class='item'>
<div class='product-img'>
<img src='paneel/assets/img/frank.png' alt='Promotieronde gever'>
</div>
<div class='product-info'>
<a href='' class='product-title'>Promotieronde van onbekend</a>
<span class='product-description'>
Deze promotieronde wordt gegeven door <b>Onbekend</b>
</span>
</div>
</li>";
echo "
<li class='item'>
<div class='product-img'>
<img src='paneel/assets/img/frank.png' alt='Promotieronde gever'>
</div>
<div class='product-info'>
<a href='' class='product-title'>Promotieronde van onbekend</a>
<span class='product-description'>
Deze promotieronde wordt gegeven door <b>Onbekend</b>
</span>
</div>
</li>";
}
?>
</ul>
<?php
$data = $link->query("SELECT `gebruikersnaam`, `tijd`, `datum` FROM `promotie_rondes` ORDER BY `datum` DESC LIMIT 3");
$rows = $data->num_rows;
if(!empty($rows)) {
foreach ($data as $key => $value) {
echo "
<li class='item'>
<div class='product-img'>
<img src='https://www.leet.ws/leet-imaging/avatar/".$value['gebruikersnaam']."&headonly=1' alt='Promotieronde gever'>
</div>
<div class='product-info'>
<a href='profiel/".$value['gebruikersnaam']."' class='product-title'>Promotieronde van ".$value['tijd']."</a>
<span class='product-description'>
Deze promotieronde wordt gegeven door <b>".$value['gebruikersnaam']."</b>
</span>
</div>
</li>";
}
}
if($rows == 1) {
echo "
<li class='item'>
<div class='product-img'>
<img src='paneel/assets/img/frank.png' alt='Promotieronde gever'>
</div>
<div class='product-info'>
<a href='' class='product-title'>Promotieronde van onbekend</a>
<span class='product-description'>
Deze promotieronde wordt gegeven door <b>Onbekend</b>
</span>
</div>
</li>";
echo "
<li class='item'>
<div class='product-img'>
<img src='paneel/assets/img/frank.png' alt='Promotieronde gever'>
</div>
<div class='product-info'>
<a href='' class='product-title'>Promotieronde van onbekend</a>
<span class='product-description'>
Deze promotieronde wordt gegeven door <b>Onbekend</b>
</span>
</div>
</li>";
}
if($rows == 2) {
echo "
<li class='item'>
<div class='product-img'>
<img src='paneel/assets/img/frank.png' alt='Promotieronde gever'>
</div>
<div class='product-info'>
<a href='' class='product-title'>Promotieronde van onbekend</a>
<span class='product-description'>
Deze promotieronde wordt gegeven door <b>Onbekend</b>
</span>
</div>
</li>";
}
if(empty($rows)) {
echo "
<li class='item'>
<div class='product-img'>
<img src='paneel/assets/img/frank.png' alt='Promotieronde gever'>
</div>
<div class='product-info'>
<a href='' class='product-title'>Promotieronde van onbekend</a>
<span class='product-description'>
Deze promotieronde wordt gegeven door <b>Onbekend</b>
</span>
</div>
</li>";
echo "
<li class='item'>
<div class='product-img'>
<img src='paneel/assets/img/frank.png' alt='Promotieronde gever'>
</div>
<div class='product-info'>
<a href='' class='product-title'>Promotieronde van onbekend</a>
<span class='product-description'>
Deze promotieronde wordt gegeven door <b>Onbekend</b>
</span>
</div>
</li>";
echo "
<li class='item'>
<div class='product-img'>
<img src='paneel/assets/img/frank.png' alt='Promotieronde gever'>
</div>
<div class='product-info'>
<a href='' class='product-title'>Promotieronde van onbekend</a>
<span class='product-description'>
Deze promotieronde wordt gegeven door <b>Onbekend</b>
</span>
</div>
</li>";
}
?>
</ul>
De database opbouw ziet er zo uit:
__________________________________________
id |gebruikersnaam |tijd |datum|
de tijd is van 00:00 tot 23:30 en de datum is unix timestamp
Als er nog vragen zijn hoor ik het graag
SELECT .......WHERE datum >= NOW() ......
Dat kan zo:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?php
$data = $link->query("SELECT gebruikersnaam,
tijd,
datum
FROM
promotie_rondes
WHERE
DATE_ADD(NOW(), INTERVAL 2 HOUR) > datum
ORDER BY datum DESC
LIMIT 3");
?>
$data = $link->query("SELECT gebruikersnaam,
tijd,
datum
FROM
promotie_rondes
WHERE
DATE_ADD(NOW(), INTERVAL 2 HOUR) > datum
ORDER BY datum DESC
LIMIT 3");
?>
Tip:
Schrijf je query onder elkaar, dat is overzichtelijker.
Bedankt voor de reacties!
Werken met een kolom van het type DATETIME waarin je zoiets als '2017-01-23 10:09:01" opslaat, maakt je query gemakkelijker
Je hebt een aparte datum en tijd veld.
Dat is helemaal niet handig.
Zoals Ivo al aangeeft, is het makkelijker met 1 DATETIME kolom te werken.
Mocht je er voor gekozen hebben voor een unix timestamp om daarmee bijvoorbeeld iets in javascript te doen, kan je beter het andersom doen. Immers, als je DATETIME kolom hebt dan is berekenen veel makkelijker.
Mocht het in javascript nodig zijn dan is het om converteren van een DATETIME kolom naar unix timestamp makkelijker...
http://adoptive.esy.es/afspraken/
Het zoeken gebeurt zo :
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?php
$hourBegin = 10;
$hourEnd = 15;
$hourBeginSearch = ( $hourBegin < 10 ? '0' : '' ) . $hourBegin . ":00:00";
$hourEndSearch = ( $hourEnd < 10 ? '0' : '' ) . $hourEnd . ":00:00";
$querySelect = "SELECT * FROM afspraken WHERE naam LIKE '%' AND ( tijd >= '" . $hourBeginSearch . "' ) AND ( tijd <= '" . $hourEndSearch . "' ) ORDER BY tijd ASC, naam ASC;";
?>
$hourBegin = 10;
$hourEnd = 15;
$hourBeginSearch = ( $hourBegin < 10 ? '0' : '' ) . $hourBegin . ":00:00";
$hourEndSearch = ( $hourEnd < 10 ? '0' : '' ) . $hourEnd . ":00:00";
$querySelect = "SELECT * FROM afspraken WHERE naam LIKE '%' AND ( tijd >= '" . $hourBeginSearch . "' ) AND ( tijd <= '" . $hourEndSearch . "' ) ORDER BY tijd ASC, naam ASC;";
?>
Zonodig uitbreiden met minuten.
zoiets als http://php.net/manual/en/function.str-pad.php dus doet.
Toevoeging op 23/01/2017 13:33:07:
Maar als ik het verander naar DATETIME verander, hoe krijg ik het dan werkend? Want de query die eerder werd gegeven door Bart V B. En 2 timestamps doe ik om de volgende rede: Iemand moet aangeven wanneer hij/zij een promotieronde wilt doen, dat is de tijd kolom. De datum kolom is voor wanneer hij/zij het heeft ingevoerd, om bv. te checken.
'2017-01-23 13:33:00'
Toevoeging op 23/01/2017 14:39:43:
en als je iets wilt waarbij het om de datum gaat en de tijd in de weg zou zitten, dan doe je
DATE(datumkolom) en zou je dus 2017-01-23 krijgen.
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
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
<ul class="products-list product-list-in-box">
<?php
$data = $link->query("SELECT gebruikersnaam,
promotie_tijd
FROM
promotie_rondes
WHERE
".strtotime('UTC +1 hour')." >= `promotie_tijd`
ORDER BY `promotie_tijd` DESC
LIMIT 4");
$rows = $data->num_rows;
if(!empty($rows)) {
foreach ($data as $key => $value) {
echo "
<li class='item'>
<div class='product-img'>
<img src='https://www.leet.ws/leet-imaging/avatar/".$value['gebruikersnaam']."&headonly=1' alt='Promotieronde gever'>
</div>
<div class='product-info'>
<a href='profiel/".$value['gebruikersnaam']."' class='product-title'>Promotieronde van ".gmdate('H:i', $value['promotie_tijd'])."</a>
<span class='product-description'>
Deze promotieronde wordt gegeven door <b>".$value['gebruikersnaam']."</b>
</span>
</div>
</li>";
}
}
if($rows == 1) {
echo "
<li class='item'>
<div class='product-img'>
<img src='paneel/assets/img/frank.png' alt='Promotieronde gever'>
</div>
<div class='product-info'>
<a href='' class='product-title'>Promotieronde van onbekend</a>
<span class='product-description'>
Deze promotieronde wordt gegeven door <b>Onbekend</b>
</span>
</div>
</li>";
echo "
<li class='item'>
<div class='product-img'>
<img src='paneel/assets/img/frank.png' alt='Promotieronde gever'>
</div>
<div class='product-info'>
<a href='' class='product-title'>Promotieronde van onbekend</a>
<span class='product-description'>
Deze promotieronde wordt gegeven door <b>Onbekend</b>
</span>
</div>
</li>";
echo "
<li class='item'>
<div class='product-img'>
<img src='paneel/assets/img/frank.png' alt='Promotieronde gever'>
</div>
<div class='product-info'>
<a href='' class='product-title'>Promotieronde van onbekend</a>
<span class='product-description'>
Deze promotieronde wordt gegeven door <b>Onbekend</b>
</span>
</div>
</li>";
}
if($rows == 2) {
echo "
<li class='item'>
<div class='product-img'>
<img src='paneel/assets/img/frank.png' alt='Promotieronde gever'>
</div>
<div class='product-info'>
<a href='' class='product-title'>Promotieronde van onbekend</a>
<span class='product-description'>
Deze promotieronde wordt gegeven door <b>Onbekend</b>
</span>
</div>
</li>";
echo "
<li class='item'>
<div class='product-img'>
<img src='paneel/assets/img/frank.png' alt='Promotieronde gever'>
</div>
<div class='product-info'>
<a href='' class='product-title'>Promotieronde van onbekend</a>
<span class='product-description'>
Deze promotieronde wordt gegeven door <b>Onbekend</b>
</span>
</div>
</li>";
}
if($rows == 3) {
echo "
<li class='item'>
<div class='product-img'>
<img src='paneel/assets/img/frank.png' alt='Promotieronde gever'>
</div>
<div class='product-info'>
<a href='' class='product-title'>Promotieronde van onbekend</a>
<span class='product-description'>
Deze promotieronde wordt gegeven door <b>Onbekend</b>
</span>
</div>
</li>";
}
if(empty($rows)) {
echo "
<li class='item'>
<div class='product-img'>
<img src='paneel/assets/img/frank.png' alt='Promotieronde gever'>
</div>
<div class='product-info'>
<a href='' class='product-title'>Promotieronde van onbekend</a>
<span class='product-description'>
Deze promotieronde wordt gegeven door <b>Onbekend</b>
</span>
</div>
</li>";
echo "
<li class='item'>
<div class='product-img'>
<img src='paneel/assets/img/frank.png' alt='Promotieronde gever'>
</div>
<div class='product-info'>
<a href='' class='product-title'>Promotieronde van onbekend</a>
<span class='product-description'>
Deze promotieronde wordt gegeven door <b>Onbekend</b>
</span>
</div>
</li>";
echo "
<li class='item'>
<div class='product-img'>
<img src='paneel/assets/img/frank.png' alt='Promotieronde gever'>
</div>
<div class='product-info'>
<a href='' class='product-title'>Promotieronde van onbekend</a>
<span class='product-description'>
Deze promotieronde wordt gegeven door <b>Onbekend</b>
</span>
</div>
</li>";
echo "
<li class='item'>
<div class='product-img'>
<img src='paneel/assets/img/frank.png' alt='Promotieronde gever'>
</div>
<div class='product-info'>
<a href='' class='product-title'>Promotieronde van onbekend</a>
<span class='product-description'>
Deze promotieronde wordt gegeven door <b>Onbekend</b>
</span>
</div>
</li>";
}
?>
</ul>
<?php
$data = $link->query("SELECT gebruikersnaam,
promotie_tijd
FROM
promotie_rondes
WHERE
".strtotime('UTC +1 hour')." >= `promotie_tijd`
ORDER BY `promotie_tijd` DESC
LIMIT 4");
$rows = $data->num_rows;
if(!empty($rows)) {
foreach ($data as $key => $value) {
echo "
<li class='item'>
<div class='product-img'>
<img src='https://www.leet.ws/leet-imaging/avatar/".$value['gebruikersnaam']."&headonly=1' alt='Promotieronde gever'>
</div>
<div class='product-info'>
<a href='profiel/".$value['gebruikersnaam']."' class='product-title'>Promotieronde van ".gmdate('H:i', $value['promotie_tijd'])."</a>
<span class='product-description'>
Deze promotieronde wordt gegeven door <b>".$value['gebruikersnaam']."</b>
</span>
</div>
</li>";
}
}
if($rows == 1) {
echo "
<li class='item'>
<div class='product-img'>
<img src='paneel/assets/img/frank.png' alt='Promotieronde gever'>
</div>
<div class='product-info'>
<a href='' class='product-title'>Promotieronde van onbekend</a>
<span class='product-description'>
Deze promotieronde wordt gegeven door <b>Onbekend</b>
</span>
</div>
</li>";
echo "
<li class='item'>
<div class='product-img'>
<img src='paneel/assets/img/frank.png' alt='Promotieronde gever'>
</div>
<div class='product-info'>
<a href='' class='product-title'>Promotieronde van onbekend</a>
<span class='product-description'>
Deze promotieronde wordt gegeven door <b>Onbekend</b>
</span>
</div>
</li>";
echo "
<li class='item'>
<div class='product-img'>
<img src='paneel/assets/img/frank.png' alt='Promotieronde gever'>
</div>
<div class='product-info'>
<a href='' class='product-title'>Promotieronde van onbekend</a>
<span class='product-description'>
Deze promotieronde wordt gegeven door <b>Onbekend</b>
</span>
</div>
</li>";
}
if($rows == 2) {
echo "
<li class='item'>
<div class='product-img'>
<img src='paneel/assets/img/frank.png' alt='Promotieronde gever'>
</div>
<div class='product-info'>
<a href='' class='product-title'>Promotieronde van onbekend</a>
<span class='product-description'>
Deze promotieronde wordt gegeven door <b>Onbekend</b>
</span>
</div>
</li>";
echo "
<li class='item'>
<div class='product-img'>
<img src='paneel/assets/img/frank.png' alt='Promotieronde gever'>
</div>
<div class='product-info'>
<a href='' class='product-title'>Promotieronde van onbekend</a>
<span class='product-description'>
Deze promotieronde wordt gegeven door <b>Onbekend</b>
</span>
</div>
</li>";
}
if($rows == 3) {
echo "
<li class='item'>
<div class='product-img'>
<img src='paneel/assets/img/frank.png' alt='Promotieronde gever'>
</div>
<div class='product-info'>
<a href='' class='product-title'>Promotieronde van onbekend</a>
<span class='product-description'>
Deze promotieronde wordt gegeven door <b>Onbekend</b>
</span>
</div>
</li>";
}
if(empty($rows)) {
echo "
<li class='item'>
<div class='product-img'>
<img src='paneel/assets/img/frank.png' alt='Promotieronde gever'>
</div>
<div class='product-info'>
<a href='' class='product-title'>Promotieronde van onbekend</a>
<span class='product-description'>
Deze promotieronde wordt gegeven door <b>Onbekend</b>
</span>
</div>
</li>";
echo "
<li class='item'>
<div class='product-img'>
<img src='paneel/assets/img/frank.png' alt='Promotieronde gever'>
</div>
<div class='product-info'>
<a href='' class='product-title'>Promotieronde van onbekend</a>
<span class='product-description'>
Deze promotieronde wordt gegeven door <b>Onbekend</b>
</span>
</div>
</li>";
echo "
<li class='item'>
<div class='product-img'>
<img src='paneel/assets/img/frank.png' alt='Promotieronde gever'>
</div>
<div class='product-info'>
<a href='' class='product-title'>Promotieronde van onbekend</a>
<span class='product-description'>
Deze promotieronde wordt gegeven door <b>Onbekend</b>
</span>
</div>
</li>";
echo "
<li class='item'>
<div class='product-img'>
<img src='paneel/assets/img/frank.png' alt='Promotieronde gever'>
</div>
<div class='product-info'>
<a href='' class='product-title'>Promotieronde van onbekend</a>
<span class='product-description'>
Deze promotieronde wordt gegeven door <b>Onbekend</b>
</span>
</div>
</li>";
}
?>
</ul>
Toevoeging op 23/01/2017 15:26:07:
Harstikke bedankt voor al uw hulp!
Naast dat het wat leesbaarder is, is het ook weer een kleine fractie sneller.
Toevoeging op 23/01/2017 15:51:23:
EN nog 1 klein vraagje: Hoe kan ik in een query kijken of het vandaag is gebeurt (met unixtime) ik dacht zelf aan zoiets:
Code (php)
1
$result = $link->query("SELECT * FROM `rangveranderingen` WHERE `soort`='promotie' AND `datum` <= ".strtotime('UTC')."");
maar hiermee pakt die ook de dagen ervoor.. Oplossingen zijn welkom :)
Nee natuurlijk klopt dat niet. Parsing is altijd volledig, ongeacht wat de code zelf moet doen.
Het voorbeeld dat je nu laat zien geeft overigens meteen aan waarom je gewoon de datum/tijdfuncties van je database moet gebruiken, en meteen van unix timestamps moet afstappen. Wat je wil kan wel, maar je zult ook moeten berekenen wat 12 uur 's nachts is. Maak het jezelf niet moeilijker dan het is en stap hier vanaf.
Gewijzigd op 23/01/2017 16:04:50 door Ben van Velzen
Oké, bedankt!