checkbox overzicht en updaten

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Kees Mulder

Kees Mulder

19/08/2013 10:09:24
Quote Anchor link
Ik wil graag filters gebruiken voor mijn items (producten). Nu heb ik drie tabellen:

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)
PHP script in nieuw venster Selecteer het PHP script
1
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
 
PHP hulp

PHP hulp

20/03/2019 11:28:29
 
Obelix Idefix

Obelix Idefix

19/08/2013 13:28:06
Quote Anchor link
Ten aanzien van je code:
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.
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

19/08/2013 14:14:21
Quote Anchor link
Het eenvoudigste is om met een cross join in een subquery eerst alle filters aan een item te koppelen en dan via een left join kijken of de filter 'geselecteerd' is:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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)

Edit:

Opps, aliasje vergeten bij de laatste join
Gewijzigd op 19/08/2013 18:58:31 door Ger van Steenderen
 
Kees Mulder

Kees Mulder

19/08/2013 15:56:58
Quote Anchor link
En kan ik dan als eind toevoegen

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
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).
Gewijzigd op 19/08/2013 15:58:11 door Kees Mulder
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

19/08/2013 19:00:23
Quote Anchor link
Ik heb de query in mijn vorige reactie aangepast, voor een voorbeeld van het resultaat zie hier
 
Kees Mulder

Kees Mulder

20/08/2013 13:51:05
Quote Anchor link
Ik heb het aan mijn script toegevoegd en het werk super. Ook toevoegen en wijzigen. Alleen lukt één ding nog niet en dat is dat hij de checkbox niet aanvinkt als deze op checked staat...

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
if($row['selected'] == '0') { echo 'checked="checked"';} else {}


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>
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.