Script minimaliseren
Ik denk dat ik delen zou kunnen hergebruiken, enerzijds om de code korter te maken en anderzijds om in een later stadium fouten te vermijden.
Het is eigenlijk 4 keer hetzelfde met kleine veranderingen.
Eerst kijk ik of de bestelling bestaat en daarna kijk ik of er in de bestelling ook orderregels staan.
De afhandeling is steeds net iets anders, maar 2 queries zijn nagenoeg hetzelfde met uitzondering op de waarde van de status.
Of maak ik het dan alleen maar onverzichtelijker?
Dit stuk herhaalt zich steeds weer muv de waarde bij status:
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
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
<?php
$bestellingscheckqry = "
SELECT
id,
ordernr
FROM
bestellingen
WHERE
klantnummer = ?
AND
status = '30'";
if(!$bestellingscheckstmt = $connectionwebshop->prepare($bestellingscheckqry)){
echo 'Fout in query: '.$connectionwebshop->error;
} else {
$bestellingscheckstmt->bind_param('i', $kl_gegevens['kl_overzicht_klnr']);
$bestellingscheckstmt->execute();
$bestellingscheckstmt->bind_result($basket, $oldordernr);
$bestellingscheckstmt->store_result();
$checkbestellingrows = $bestellingscheckstmt->num_rows;
}
if($checkbestellingrows >= 1){
$bestelregelcheckqry ="
SELECT
productid
FROM
bestelregel
WHERE
bestelnummer = ?
AND
aantal != '0'
";
if(!$regelstmt = $connectionwebshop->prepare($bestelregelcheckqry)){
echo 'Fout in query: '.$connectionwebshop->error;
} else {
$regelstmt->bind_param('i', $basket);
$regelstmt->execute();
$bestelregelresult = $regelstmt->get_result();
$rows = $bestelregelresult->num_rows;
}
if($rows >= 1){
$oldordermenu ='';
while ($bestellingscheckstmt->fetch()) {
$oldordermenu .='<a href="'.$templink.$langlink.$paginalink.'bestelling'.$winkelwagenlink.'bekijken'.$ordernrlink.$oldordernr.'">'.$oldordernr.'</a><br/>';
}
$bestellingscheckstmt->close();
}
?>
$bestellingscheckqry = "
SELECT
id,
ordernr
FROM
bestellingen
WHERE
klantnummer = ?
AND
status = '30'";
if(!$bestellingscheckstmt = $connectionwebshop->prepare($bestellingscheckqry)){
echo 'Fout in query: '.$connectionwebshop->error;
} else {
$bestellingscheckstmt->bind_param('i', $kl_gegevens['kl_overzicht_klnr']);
$bestellingscheckstmt->execute();
$bestellingscheckstmt->bind_result($basket, $oldordernr);
$bestellingscheckstmt->store_result();
$checkbestellingrows = $bestellingscheckstmt->num_rows;
}
if($checkbestellingrows >= 1){
$bestelregelcheckqry ="
SELECT
productid
FROM
bestelregel
WHERE
bestelnummer = ?
AND
aantal != '0'
";
if(!$regelstmt = $connectionwebshop->prepare($bestelregelcheckqry)){
echo 'Fout in query: '.$connectionwebshop->error;
} else {
$regelstmt->bind_param('i', $basket);
$regelstmt->execute();
$bestelregelresult = $regelstmt->get_result();
$rows = $bestelregelresult->num_rows;
}
if($rows >= 1){
$oldordermenu ='';
while ($bestellingscheckstmt->fetch()) {
$oldordermenu .='<a href="'.$templink.$langlink.$paginalink.'bestelling'.$winkelwagenlink.'bekijken'.$ordernrlink.$oldordernr.'">'.$oldordernr.'</a><br/>';
}
$bestellingscheckstmt->close();
}
?>
Dit is wat ik totaal heb gemaakt:
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
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
<?php
//let's check out if there is an active basket and if there are products in the basket
$bestellingscheckqry = "
SELECT
id
FROM
bestellingen
WHERE
klantnummer = ?
AND
status = '10'";
if(!$bestellingscheckstmt = $connectionwebshop->prepare($bestellingscheckqry)){
echo 'Fout in query: '.$connectionwebshop->error;
} else {
$bestellingscheckstmt->bind_param('i', $kl_gegevens['kl_overzicht_klnr']);
$bestellingscheckstmt->execute();
$bestellingscheckstmt->bind_result($basket );
$bestellingscheckstmt->store_result();
$checkbestellingrows = $bestellingscheckstmt->num_rows;
$bestellingscheckstmt->fetch();
$bestellingscheckstmt->close();
}
if($checkbestellingrows == 1){
$bestelregelcheckqry ="
SELECT
productid
FROM
bestelregel
WHERE
bestelnummer = ?
AND
aantal != '0'
";
if(!$regelstmt = $connectionwebshop->prepare($bestelregelcheckqry)){
echo 'Fout in query: '.$connectionwebshop->error;
} else {
$regelstmt->bind_param('i', $basket);
$regelstmt->execute();
$bestelregelresult = $regelstmt->get_result();
$rows = $bestelregelresult->num_rows;
}
if($rows >= 1){
$winkelwagenmenu ='<a href="'.$templink.$langlink.$paginalink.'winkelwagen'.$winkelwagenlink.'bekijken">Winkelwagen</a>';
}else{
$winkelwagenmenu ='Uw winkelwagen is nog leeg';
}
}else{
$winkelwagenmenu ='Uw winkelwagen is nog leeg';
}
$leftmenu .= '
<div>
<div class="heading1 wow fadeInDown" data-wow-duration="1s" data-wow-delay="0.1s">
<h2>Winkelwagen</h2>
'.$winkelwagenmenu.'
</div>
</div>';
//let's check out if there any orders waiting for processing
$bestellingscheckqry = "
SELECT
id,
ordernr
FROM
bestellingen
WHERE
klantnummer = ?
AND
status = '20'";
if(!$bestellingscheckstmt = $connectionwebshop->prepare($bestellingscheckqry)){
echo 'Fout in query: '.$connectionwebshop->error;
} else {
$bestellingscheckstmt->bind_param('i', $kl_gegevens['kl_overzicht_klnr']);
$bestellingscheckstmt->execute();
$bestellingscheckstmt->bind_result($basket, $oldordernr);
$bestellingscheckstmt->store_result();
$checkbestellingrows = $bestellingscheckstmt->num_rows;
}
if($checkbestellingrows >= 1){
$bestelregelcheckqry ="
SELECT
productid
FROM
bestelregel
WHERE
bestelnummer = ?
AND
aantal != '0'
";
if(!$regelstmt = $connectionwebshop->prepare($bestelregelcheckqry)){
echo 'Fout in query: '.$connectionwebshop->error;
} else {
$regelstmt->bind_param('i', $basket);
$regelstmt->execute();
$bestelregelresult = $regelstmt->get_result();
$rows = $bestelregelresult->num_rows;
}
if($rows >= 1){
$oldordermenu ='';
while ($bestellingscheckstmt->fetch()) {
$oldordermenu .='<a href="'.$templink.$langlink.$paginalink.'bestelling'.$winkelwagenlink.'bekijken'.$ordernrlink.$oldordernr.'">'.$oldordernr.'</a><br/>';
}
$bestellingscheckstmt->close();
}
$leftmenu .= '
<div>
<div class="heading1 wow fadeInDown" data-wow-duration="1s" data-wow-delay="0.1s">
<h2>Bestelling in behandeling</h2>
'.$oldordermenu.'
</div>
</div>';
}
//let's check out if there any orders waiting for approval of customer
$bestellingscheckqry = "
SELECT
id,
ordernr
FROM
bestellingen
WHERE
klantnummer = ?
AND
status = '30'";
if(!$bestellingscheckstmt = $connectionwebshop->prepare($bestellingscheckqry)){
echo 'Fout in query: '.$connectionwebshop->error;
} else {
$bestellingscheckstmt->bind_param('i', $kl_gegevens['kl_overzicht_klnr']);
$bestellingscheckstmt->execute();
$bestellingscheckstmt->bind_result($basket, $oldordernr);
$bestellingscheckstmt->store_result();
$checkbestellingrows = $bestellingscheckstmt->num_rows;
}
if($checkbestellingrows >= 1){
$bestelregelcheckqry ="
SELECT
productid
FROM
bestelregel
WHERE
bestelnummer = ?
AND
aantal != '0'
";
if(!$regelstmt = $connectionwebshop->prepare($bestelregelcheckqry)){
echo 'Fout in query: '.$connectionwebshop->error;
} else {
$regelstmt->bind_param('i', $basket);
$regelstmt->execute();
$bestelregelresult = $regelstmt->get_result();
$rows = $bestelregelresult->num_rows;
}
if($rows >= 1){
$oldordermenu ='';
while ($bestellingscheckstmt->fetch()) {
$oldordermenu .='<a href="'.$templink.$langlink.$paginalink.'bestelling'.$winkelwagenlink.'bekijken'.$ordernrlink.$oldordernr.'">'.$oldordernr.'</a><br/>';
}
$bestellingscheckstmt->close();
}
$leftmenu .= '
<div>
<div class="heading1 wow fadeInDown" data-wow-duration="1s" data-wow-delay="0.1s">
<h2>Bestelling wachtend op uw akkoord</h2>
'.$oldordermenu.'
</div>
</div>';
}
//let's check out if there any orders wich are finished
$bestellingscheckqry = "
SELECT
id,
ordernr
FROM
bestellingen
WHERE
klantnummer = ?
AND
status = '40'";
if(!$bestellingscheckstmt = $connectionwebshop->prepare($bestellingscheckqry)){
echo 'Fout in query: '.$connectionwebshop->error;
} else {
$bestellingscheckstmt->bind_param('i', $kl_gegevens['kl_overzicht_klnr']);
$bestellingscheckstmt->execute();
$bestellingscheckstmt->bind_result($basket, $oldordernr);
$bestellingscheckstmt->store_result();
$checkbestellingrows = $bestellingscheckstmt->num_rows;
}
if($checkbestellingrows >= 1){
$bestelregelcheckqry ="
SELECT
productid
FROM
bestelregel
WHERE
bestelnummer = ?
AND
aantal != '0'
";
if(!$regelstmt = $connectionwebshop->prepare($bestelregelcheckqry)){
echo 'Fout in query: '.$connectionwebshop->error;
} else {
$regelstmt->bind_param('i', $basket);
$regelstmt->execute();
$bestelregelresult = $regelstmt->get_result();
$rows = $bestelregelresult->num_rows;
}
if($rows >= 1){
$oldordermenu ='';
while ($bestellingscheckstmt->fetch()) {
$oldordermenu .='<a href="'.$templink.$langlink.$paginalink.'bestelling'.$winkelwagenlink.'bekijken'.$ordernrlink.$oldordernr.'">'.$oldordernr.'</a><br/>';
}
$bestellingscheckstmt->close();
}
$leftmenu .= '
<div>
<div class="heading1 wow fadeInDown" data-wow-duration="1s" data-wow-delay="0.1s">
<h2>Afgeronde bestellingen</h2>
'.$oldordermenu.'
</div>
</div>';
}
?/>
[/code]
//let's check out if there is an active basket and if there are products in the basket
$bestellingscheckqry = "
SELECT
id
FROM
bestellingen
WHERE
klantnummer = ?
AND
status = '10'";
if(!$bestellingscheckstmt = $connectionwebshop->prepare($bestellingscheckqry)){
echo 'Fout in query: '.$connectionwebshop->error;
} else {
$bestellingscheckstmt->bind_param('i', $kl_gegevens['kl_overzicht_klnr']);
$bestellingscheckstmt->execute();
$bestellingscheckstmt->bind_result($basket );
$bestellingscheckstmt->store_result();
$checkbestellingrows = $bestellingscheckstmt->num_rows;
$bestellingscheckstmt->fetch();
$bestellingscheckstmt->close();
}
if($checkbestellingrows == 1){
$bestelregelcheckqry ="
SELECT
productid
FROM
bestelregel
WHERE
bestelnummer = ?
AND
aantal != '0'
";
if(!$regelstmt = $connectionwebshop->prepare($bestelregelcheckqry)){
echo 'Fout in query: '.$connectionwebshop->error;
} else {
$regelstmt->bind_param('i', $basket);
$regelstmt->execute();
$bestelregelresult = $regelstmt->get_result();
$rows = $bestelregelresult->num_rows;
}
if($rows >= 1){
$winkelwagenmenu ='<a href="'.$templink.$langlink.$paginalink.'winkelwagen'.$winkelwagenlink.'bekijken">Winkelwagen</a>';
}else{
$winkelwagenmenu ='Uw winkelwagen is nog leeg';
}
}else{
$winkelwagenmenu ='Uw winkelwagen is nog leeg';
}
$leftmenu .= '
<div>
<div class="heading1 wow fadeInDown" data-wow-duration="1s" data-wow-delay="0.1s">
<h2>Winkelwagen</h2>
'.$winkelwagenmenu.'
</div>
</div>';
//let's check out if there any orders waiting for processing
$bestellingscheckqry = "
SELECT
id,
ordernr
FROM
bestellingen
WHERE
klantnummer = ?
AND
status = '20'";
if(!$bestellingscheckstmt = $connectionwebshop->prepare($bestellingscheckqry)){
echo 'Fout in query: '.$connectionwebshop->error;
} else {
$bestellingscheckstmt->bind_param('i', $kl_gegevens['kl_overzicht_klnr']);
$bestellingscheckstmt->execute();
$bestellingscheckstmt->bind_result($basket, $oldordernr);
$bestellingscheckstmt->store_result();
$checkbestellingrows = $bestellingscheckstmt->num_rows;
}
if($checkbestellingrows >= 1){
$bestelregelcheckqry ="
SELECT
productid
FROM
bestelregel
WHERE
bestelnummer = ?
AND
aantal != '0'
";
if(!$regelstmt = $connectionwebshop->prepare($bestelregelcheckqry)){
echo 'Fout in query: '.$connectionwebshop->error;
} else {
$regelstmt->bind_param('i', $basket);
$regelstmt->execute();
$bestelregelresult = $regelstmt->get_result();
$rows = $bestelregelresult->num_rows;
}
if($rows >= 1){
$oldordermenu ='';
while ($bestellingscheckstmt->fetch()) {
$oldordermenu .='<a href="'.$templink.$langlink.$paginalink.'bestelling'.$winkelwagenlink.'bekijken'.$ordernrlink.$oldordernr.'">'.$oldordernr.'</a><br/>';
}
$bestellingscheckstmt->close();
}
$leftmenu .= '
<div>
<div class="heading1 wow fadeInDown" data-wow-duration="1s" data-wow-delay="0.1s">
<h2>Bestelling in behandeling</h2>
'.$oldordermenu.'
</div>
</div>';
}
//let's check out if there any orders waiting for approval of customer
$bestellingscheckqry = "
SELECT
id,
ordernr
FROM
bestellingen
WHERE
klantnummer = ?
AND
status = '30'";
if(!$bestellingscheckstmt = $connectionwebshop->prepare($bestellingscheckqry)){
echo 'Fout in query: '.$connectionwebshop->error;
} else {
$bestellingscheckstmt->bind_param('i', $kl_gegevens['kl_overzicht_klnr']);
$bestellingscheckstmt->execute();
$bestellingscheckstmt->bind_result($basket, $oldordernr);
$bestellingscheckstmt->store_result();
$checkbestellingrows = $bestellingscheckstmt->num_rows;
}
if($checkbestellingrows >= 1){
$bestelregelcheckqry ="
SELECT
productid
FROM
bestelregel
WHERE
bestelnummer = ?
AND
aantal != '0'
";
if(!$regelstmt = $connectionwebshop->prepare($bestelregelcheckqry)){
echo 'Fout in query: '.$connectionwebshop->error;
} else {
$regelstmt->bind_param('i', $basket);
$regelstmt->execute();
$bestelregelresult = $regelstmt->get_result();
$rows = $bestelregelresult->num_rows;
}
if($rows >= 1){
$oldordermenu ='';
while ($bestellingscheckstmt->fetch()) {
$oldordermenu .='<a href="'.$templink.$langlink.$paginalink.'bestelling'.$winkelwagenlink.'bekijken'.$ordernrlink.$oldordernr.'">'.$oldordernr.'</a><br/>';
}
$bestellingscheckstmt->close();
}
$leftmenu .= '
<div>
<div class="heading1 wow fadeInDown" data-wow-duration="1s" data-wow-delay="0.1s">
<h2>Bestelling wachtend op uw akkoord</h2>
'.$oldordermenu.'
</div>
</div>';
}
//let's check out if there any orders wich are finished
$bestellingscheckqry = "
SELECT
id,
ordernr
FROM
bestellingen
WHERE
klantnummer = ?
AND
status = '40'";
if(!$bestellingscheckstmt = $connectionwebshop->prepare($bestellingscheckqry)){
echo 'Fout in query: '.$connectionwebshop->error;
} else {
$bestellingscheckstmt->bind_param('i', $kl_gegevens['kl_overzicht_klnr']);
$bestellingscheckstmt->execute();
$bestellingscheckstmt->bind_result($basket, $oldordernr);
$bestellingscheckstmt->store_result();
$checkbestellingrows = $bestellingscheckstmt->num_rows;
}
if($checkbestellingrows >= 1){
$bestelregelcheckqry ="
SELECT
productid
FROM
bestelregel
WHERE
bestelnummer = ?
AND
aantal != '0'
";
if(!$regelstmt = $connectionwebshop->prepare($bestelregelcheckqry)){
echo 'Fout in query: '.$connectionwebshop->error;
} else {
$regelstmt->bind_param('i', $basket);
$regelstmt->execute();
$bestelregelresult = $regelstmt->get_result();
$rows = $bestelregelresult->num_rows;
}
if($rows >= 1){
$oldordermenu ='';
while ($bestellingscheckstmt->fetch()) {
$oldordermenu .='<a href="'.$templink.$langlink.$paginalink.'bestelling'.$winkelwagenlink.'bekijken'.$ordernrlink.$oldordernr.'">'.$oldordernr.'</a><br/>';
}
$bestellingscheckstmt->close();
}
$leftmenu .= '
<div>
<div class="heading1 wow fadeInDown" data-wow-duration="1s" data-wow-delay="0.1s">
<h2>Afgeronde bestellingen</h2>
'.$oldordermenu.'
</div>
</div>';
}
?/>
[/code]
Gewijzigd op 09/03/2016 05:37:57 door J C
- variable en statement variabelen kunnen korter
- Je hoeft geen veriable aan te maken voor ->num_rows
PHP Maarten op 09/03/2016 10:45:13:
- Queries kunnen in één regel
Kan, maar dat doe je uiteraard niet. Je foutmeldingen zijn een stuk duidelijker als je de queries spreidt, en het houdt je queries leesbaar. Zo te zien zullen een paar goed gemikte joins meer oplossen.
PHP Maarten op 09/03/2016 10:45:13:
- Queries kunnen in één regel
Dan heb jij nog nooit een ingewikkelde query geschreven.
PHP Maarten op 09/03/2016 10:45:13:
- variable en statement variabelen kunnen korter
Dat hangt van de voorkeur af, soms schrijf je iets liever voluit, dan wanneer je er na een half jaar weer naar kijkt te moeten raden wat het nu betekende.
BTW: het ging om dubbele code
@TS:
Zet alles in functies, en gebruik parameters bij die functies.
Ik zie vaker dezelfde query met alleen 1 argument anders.
Ik heb nog nooit zelf een functie gemaakt. Weten jullie misschien een tutorial waarin ze het duidelijk uitlegen?
Ik ben zelf al even opzoek geweest, maar kom voroal functies tegen voor Jquery en javascript.
user-defined functions of "door de gebruiker gedefinieerde functies" in de PHP Manual.
Begin bij het begin: de J C op 10/03/2016 01:33:35:
Ik heb eerder geprobeerd delen van het script in variabelen te zetten, maar daarmee kreeg ik het script niet meer werkend.
Ik heb nog nooit zelf een functie gemaakt. Weten jullie misschien een tutorial waarin ze het duidelijk uitlegen?
Ik ben zelf al even opzoek geweest, maar kom voroal functies tegen voor Jquery en javascript.
Ik heb nog nooit zelf een functie gemaakt. Weten jullie misschien een tutorial waarin ze het duidelijk uitlegen?
Ik ben zelf al even opzoek geweest, maar kom voroal functies tegen voor Jquery en javascript.
codecademy.com Heeft een gratis cursus PHP. Daar worden o.a functies in uitgelegd.