[php] Optellen van verschillen
Ik ben bezig met ene script, nu moet hij alle verschillen bij elkaar gaan optellen. En het mag niet meer zijn dan 92. Alleen ik kom niet verder met mijn code.
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
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
<?php
if(isset($_POST['confirm'])){
array();
for ($i = 1; $i <= 7; $i++) {
$open[] = Environment::Filter($_POST['open'.$i]);
$closed[] = Environment::Filter($_POST['closed'.$i]);
}
$total = array_sum($closed-$open);
if($total > 92){
echo'Je bent meer dan 92 uur open';
}else{
// de rest van de query
}
}
?>
<form method="POST" action="index.php?p=supermarket&action=open&supermarket_id=<?php echo Environment::Filter($_GET['supermarket_id']); ?>">
<table width="100%">
<tr>
<td><strong>Dag</strong></td>
<td><strong>Geopend vanaf</strong></td>
<td><strong>Gesloten om</strong></td>
</tr>
<?php
for ($i = 1; $i <= 7; $i++) {
?>
<tr>
<td width="40%">
<?php
if($i == '1'){
echo'Maandag';
}elseif($i == '2'){
echo'Dinsdag';
}elseif($i == '3'){
echo'Woensdag';
}elseif($i == '4'){
echo'Donderdag';
}elseif($i == '5'){
echo'Vrijdag';
}elseif($i == '6'){
echo'Zaterdag';
}elseif($i == '7'){
echo'Zondag';
}else{
echo'Onbekend';
}
?>
</td>
<td width="30%">
<select name = "open<?php echo $i; ?>">
<?php
for ($open = 8; $open <= 22; $open++) {
?>
<option value="<?php echo $open; ?>"><?php echo $open; ?>:00</option>
<?php
}
?>
</select> uur
</td>
<td width="30%">
<select name = "closed<?php echo $i; ?>">
<?php
for ($closed = 8; $closed <= 22; $closed++) {
?>
<option value="<?php echo $closed; ?>"><?php echo $closed; ?>:00</option>
<?php
}
?>
</select> uur
</td>
</tr>
<?php
}
?>
<tr>
<td><input type="submit" value="Bevestig openingstijden" name="confirm"></td>
</tr>
</table>
</form>
if(isset($_POST['confirm'])){
array();
for ($i = 1; $i <= 7; $i++) {
$open[] = Environment::Filter($_POST['open'.$i]);
$closed[] = Environment::Filter($_POST['closed'.$i]);
}
$total = array_sum($closed-$open);
if($total > 92){
echo'Je bent meer dan 92 uur open';
}else{
// de rest van de query
}
}
?>
<form method="POST" action="index.php?p=supermarket&action=open&supermarket_id=<?php echo Environment::Filter($_GET['supermarket_id']); ?>">
<table width="100%">
<tr>
<td><strong>Dag</strong></td>
<td><strong>Geopend vanaf</strong></td>
<td><strong>Gesloten om</strong></td>
</tr>
<?php
for ($i = 1; $i <= 7; $i++) {
?>
<tr>
<td width="40%">
<?php
if($i == '1'){
echo'Maandag';
}elseif($i == '2'){
echo'Dinsdag';
}elseif($i == '3'){
echo'Woensdag';
}elseif($i == '4'){
echo'Donderdag';
}elseif($i == '5'){
echo'Vrijdag';
}elseif($i == '6'){
echo'Zaterdag';
}elseif($i == '7'){
echo'Zondag';
}else{
echo'Onbekend';
}
?>
</td>
<td width="30%">
<select name = "open<?php echo $i; ?>">
<?php
for ($open = 8; $open <= 22; $open++) {
?>
<option value="<?php echo $open; ?>"><?php echo $open; ?>:00</option>
<?php
}
?>
</select> uur
</td>
<td width="30%">
<select name = "closed<?php echo $i; ?>">
<?php
for ($closed = 8; $closed <= 22; $closed++) {
?>
<option value="<?php echo $closed; ?>"><?php echo $closed; ?>:00</option>
<?php
}
?>
</select> uur
</td>
</tr>
<?php
}
?>
<tr>
<td><input type="submit" value="Bevestig openingstijden" name="confirm"></td>
</tr>
</table>
</form>
Het gaat erom zodra gebruiker op 'confirm'heeft gedrukt.
De error die ik krijg:
Unsupported operand types in ****** on line 41
Alvast bedankt voor uw hulp
en ik zou je aanraden om hier een switch statement te gebruiken veel overzichtelijker als je zoveel if/else moet gebruiken..
& dankje ik zal er even naar kijken.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
een '7' wordt gezien als een String ( Tekst ) en een 7 is echt een cijfer.
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
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
Gewijzigd op 05/11/2013 21:29:13 door Reshad F
$total = int_val($closed) - intval($open);
Heb alleen die regel vervangen, verder niks
intval
Hij gaat nu niet rekenen, er komt namelijk steeds '0' als uitkomst
Je probeert een array van een array af te trekken. Nu is php erg makkelijk met het omzetten van een variabele type als het nodig is, maar hier kan php ook niets mee.
En welke code dien ik dan te gebruiken?
In het formulier open1,open2, etc vervangen door open[]. Dit telt dan automatisch vanaf 0.
Code (php)
Edit:
Code ingekort zonder Array_sum, met +=
Toevoeging op 06/11/2013 13:22:52:
Frank Nietbelangrijk op 05/11/2013 22:18:13:
Frank, waarom maak je het jezelf moeilijk door de for-lus met 1 te laten beginnen om vervolgens binnen de for-lus weer 1 af te trekken?
Gewijzigd op 06/11/2013 13:54:26 door Michael -
Code (php)
Dat zou moeten werken nadat je <select name = "open"> veranderd naar <select name = "open[]"> en het zelfde doet voor de 'closed' select.
Dos Moonen op 06/11/2013 13:30:38:
Dat zou moeten werken nadat je <select name = "open<?php echo $i; ?>"> veranderd naar <select name = "open[]"> en het zelfde doet voor de 'closed' select.
Code (php)
Dat zou moeten werken nadat je <select name = "open<?php echo $i; ?>"> veranderd naar <select name = "open[]"> en het zelfde doet voor de 'closed' select.
Dan moet je de for ($i = 1; $i <= 7; $i++) ook vervangen door for ($i = 0; $i < 7; $i++) anders pakt ie de eerste niet?
Gewijzigd op 06/11/2013 13:38:02 door Michael -
Warning: array_map() [<a href='function.array-map'>function.array-map</a>]: Argument #2
Rick kem op 06/11/2013 13:47:25:
Nee werkt niet hij weergeeft de volgende error:
Warning: array_map() [<a href='function.array-map'>function.array-map</a>]: Argument #2
Warning: array_map() [<a href='function.array-map'>function.array-map</a>]: Argument #2
Probeer dit dan eens
Code (php)
Het zelfde, maar zonder Array_map
Hartstikke bedankt met ene beetje aanpassen werkt het nu.
Waarschijnlijk was het "Warning: array_map() [function.array-map]: Argument #2 should be an array in ..."?
Dat zou betekenen dat $_POST['open'] en $_POST['closed'] geen arrays zijn.
Als je bij de waarde van het 'name' attribuut van de select van je selects het cijfer vervangt door '[]' zal PHP er een array van maken.
Het werkt ook voor $_GET: http://stackoverflow.com/questions/1833330/how-to-get-php-get-array
Maar fijn te horen dat het werkt =]