checkbox overzicht en updaten
ITEMS
item_id
item_omschrijving
FILTERS
filter_id
filter_omschrijving
ITEMS_FILTERS
item_id
filter_id
Nu wil ik een totaaloverzicht met alle filters en als er een filter ingevoerd is moet deze aangevinkt zijn als checkbox. Alleen krijg ik het niet voor elkaar.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
$query = "SELECT * FROM filters LEFT JOIN items_filters ON item_filters.if_filter_id = filters.filters_id";
$uitvoeren = mysql_query($query) or die (error($query, $HTTP_SERVER_VARS['PHP_SELF']));
While ($row = mysql_fetch_array($uitvoeren))
{
if($row['if_item_id'] = $row1['code'])
{
$check='checked=checked';
} else
{
$check='';
}
echo '<input type="checkbox" name="filters[]" value="'.$row['item_id'].'"> '.$row['item_omschrijving'].'<br />';
}
mysql_free_result($uitvoeren);
?>
Gewijzigd op 19/08/2013 10:30:21 door Kees Mulder
Schrijf je query volledig uit ipv * te gebruiken.
$HTTP_SERVER_VARS is deprecated (vervallen). Vervangen door $_SERVER
Zou PHP_SELF niet gebruiken. (B)lijkt onveilig te zijn.
Gebruik ook geen 'die', maar zorg voor een nette(re) foutafhandeling.
Waarom mysql_fetch_array? En niet mysql_fetch_assoc?
Wat doe je verder met $check in de while?
mysql_* komt ook te vervallen. Stap (bv) over op mysqli.
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
SELECT
sub.item_id,
sub.item_omschrijving,
sub.filter_id,
sub.filter_omschrijving,
IF (fi.filter_id IS NULL, 0, 1) AS selected
FROM
(SELECT
i.item_id,
i.item_omschrijving,
f.filter_id,
f.filter_omschrijving
FROM
items AS i
CROSS JOIN
filters AS f
WHERE item_id = 2
) AS sub
LEFT JOIN
items_filters AS fi
USING (item_id, filter_id)
sub.item_id,
sub.item_omschrijving,
sub.filter_id,
sub.filter_omschrijving,
IF (fi.filter_id IS NULL, 0, 1) AS selected
FROM
(SELECT
i.item_id,
i.item_omschrijving,
f.filter_id,
f.filter_omschrijving
FROM
items AS i
CROSS JOIN
filters AS f
WHERE item_id = 2
) AS sub
LEFT JOIN
items_filters AS fi
USING (item_id, filter_id)
Edit:
Opps, aliasje vergeten bij de laatste join
Opps, aliasje vergeten bij de laatste join
Gewijzigd op 19/08/2013 18:58:31 door Ger van Steenderen
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
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
WHERE item_id = '2';
want zo ziet de tabellen eruit:
ITEMS
item_id - item_omschrijving
1 - Appel
2 - Banaan
3 - Kiwi
4 - Winterpeen
5 - Komkommer
FILTERS
filter_id - filter_omschrijving
1 - groente
2 - fruit
3 - geel
4 - groen
5 - rood
6 - oranje
ITEMS_FILTERS
item_id - filter_id
1 - 2
1 - 4
1 - 5
2 - 2
2 - 3
3 - 2
3 - 4
4 - 1
4 - 6
5 - 1
5 - 4
Ik wil nl. de banaan zien (2) en dan alle filters die er zijn met dan alleen filter 2 en 3 geselecteerd (vinkje aan).
want zo ziet de tabellen eruit:
ITEMS
item_id - item_omschrijving
1 - Appel
2 - Banaan
3 - Kiwi
4 - Winterpeen
5 - Komkommer
FILTERS
filter_id - filter_omschrijving
1 - groente
2 - fruit
3 - geel
4 - groen
5 - rood
6 - oranje
ITEMS_FILTERS
item_id - filter_id
1 - 2
1 - 4
1 - 5
2 - 2
2 - 3
3 - 2
3 - 4
4 - 1
4 - 6
5 - 1
5 - 4
Ik wil nl. de banaan zien (2) en dan alle filters die er zijn met dan alleen filter 2 en 3 geselecteerd (vinkje aan).
Gewijzigd op 19/08/2013 15:58:11 door Kees Mulder
Als ik de bron kijk dan klopt het gewoon en zie ik checked staan bij een 0 en geen checked bij 1 (of net anders om). Alleen op het scherm zie ik de vinkjes niet staan. Waar kan dat aan liggen?
Toevoeging op 20/08/2013 13:57:38:
Probleem is opgelost, zat iets fout met <div> of <form>