2 form lists koppelen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Zam Ian

Zam Ian

12/11/2008 11:24:00
Quote Anchor link
Hallo PHP'ers,

Het gaat om de volgende 2 tabellen:

categories
id
category

subcategories
id
catid
subcategory

Nu haal ik d.m.v. een form list/menu de categorieen op. Stel nu dat ik een categorie selecteer dan wil ik graag dat er een 2e form list verschijnt met de subcategorieen die bij het id van deze categorie horen. Dus (WHERE catid = 'id van de geselecteerde categorie')

Ik snap dat het met AJAX/JS moet maar laat ik hier nu net weinig verstand van hebben..

Ik hoop dat iemand me kan helpen, alvast bedankt!
Sam
 
PHP hulp

PHP hulp

31/12/2024 16:14:59
 
Arjan Kapteijn

Arjan Kapteijn

12/11/2008 11:34:00
Quote Anchor link
Wat je ook kan doen, zonder javascript, de bovenste in een apart <form> zetten met een onchange submit en een method = get, kan je die in die daaronder weer ophalen.
 
- Roland -

- Roland -

12/11/2008 11:39:00
Quote Anchor link
@Arjan bedoel je soms : zonder AJAX !?

(want onchange is ja juist wel javascript)
 
Arjan Kapteijn

Arjan Kapteijn

12/11/2008 11:41:00
Quote Anchor link
Nouja, je kan het ook zonder doen, maar dan krijg je een submit-knop. Ik vind het wel handig om dan voor het gebruikersgemak een onchange toe te voegen :).
 
RvW Of toch niet

RvW Of toch niet

12/11/2008 11:47:00
Quote Anchor link
hee arjan,

heb je daar toevallig en voorbeeld van hoe je dat zou toepassen ? dit lijkt me namelijk wel interessant :)
 
Zam Ian

Zam Ian

12/11/2008 11:56:00
Quote Anchor link
Ja ik dacht ook al onchange is JS.. De bedoeling is eigenlijk om het zonder submit knop te doen. Een voorbeeldje met onchange zou idd wel handig zijn!
 
Arjan Kapteijn

Arjan Kapteijn

12/11/2008 12:25:00
Quote Anchor link
https://server.i-cey.net/subdomains/test/voorbeeld.php

(Je moet alleen even het certificaat accepteren)

Er kunnen vast nog wel wat dingen beter/veiliger, maar nu heb je een beetje een idee;

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
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
<?php
$categorieen
= array(
        1 => 'Categrorie a',
        2 => 'Categrorie b',
        3 => 'Categrorie c'
    );

$producten = array(
        1 => 'Product 1',
        2 => 'Product 2',
        3 => 'Product 3',
        4 => 'Product 4',
        5 => 'Product 5'
    );

$koppelingen = array(
        1 => array(1, 2, 3),
        2 => array(3, 4, 5),
        3 => array(1, 3, 5)
    );


if(isset($_GET['categorie']) && !empty($_GET['categorie']) && is_numeric($_GET['categorie']))
{

    if(key_exists($_GET['categorie'], $categorieen))
    {

        $cid = $_GET['categorie'];
    }
}


if($_SERVER['REQUEST_METHOD'] == 'POST')
{

    echo '<pre>';
    print_r($_POST);
    echo '</pre>';
}

?>


<form action="" method="GET">
    <select name="categorie" onchange="submit()">
        <?php
        foreach($categorieen as $id => $naam)
        {

            if($cid == $id)
            {

                echo '<option value="'.$id.'" SELECTED>'.$naam.'</option>'.PHP_EOL;
            }
else{
                echo '<option value="'.$id.'">'.$naam.'</option>'.PHP_EOL;
            }
        }

        ?>

    </select><br>
</form>

<?php
if(isset($cid))
{

?>

<form action="" method="POST">
    <input type="hidden" name="categorie" value="<?php echo $cid; ?>">
    <select name="product">
        <?php
        foreach($koppelingen[$cid] as $id)
        {

            echo '<option value="'.$id.'">'.$producten[$id].'</option>'.PHP_EOL;
        }

        ?>

    </select><br>
    <input type="submit" name="submit" value="Verwerken">
</form>
<?php
}
?>
 
Zam Ian

Zam Ian

12/11/2008 12:53:00
Quote Anchor link
Arjan works like a charm, bedankt voor de moeite!
 



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.