0

Hello, i want to make a categories menu which each will have its own sub-categories and that category will have own sub-categories im trying to make with arrays but i'm not really good at it.. im trying right now with bunch if statements but is there any other method of doing this with loops or something eazier ?

<form action="" method="POST">
        <?php
            $category = array("Cars" => 1, "Bikes" => 2, "Phones" => 3);
            $cars_category = array("Honda" => 1, "BMW" => 2, "Mercedes" => 3);
            $bikes_category = array("Suzuki" => 1, "GSXR" => 2, "Yamaha" => 3);
            $phones_category = array("Samsung" => 1, "iPhone" => 2, "LG" => 3);

            foreach($category as $main_cat => $value) {
                ?>
                    <input type="submit" name="main_category[<?= $value ?>]" value="<?= $main_cat ?>" /><br>
                <?php
            }

            if(isset($_POST["main_category"])) {
                echo "<br>";
                $categ = $_POST["main_category"];

                foreach($categ as $value => $name) {

                    if($value == 1) {
                        foreach($cars_category as $cars => $value) {
                            ?>
                                <input type="submit" name="sub_category[<?= $value ?>]" value="<?= $cars ?>" /><br>
                            <?php
                        }
                    } else if($value == 2) {
                        foreach($bikes_category as $bikes => $value) {
                            ?>
                                <input type="submit" name="sub_category[<?= $value ?>]" value="<?= $bikes ?>" /><br>
                            <?php
                        }
                    } else if($value == 3) {
                        foreach($phones_category as $phones => $value) {
                            ?>
                                <input type="submit" name="sub_category[<?= $value ?>]" value="<?= $phones ?>" /><br>
                            <?php
                        }
                    }
                }
            }
        ?>
        </form>
3
Contributors
5
Replies
48
Views
11 Months
Discussion Span
Last Post by diafol
0

Make DB table for categories and another table for brends with foreigh keys constraints referenced to categories and another table for models with constraints referenced to brends

0

Is this possible to make without database, i have something in mind which i want to achive.
I want to make a categories tree which user can choose final product of the categories and when he chooses to get that final product its own sub categories for ex.

Vehicles > Cars > BWM > M > M2 Coupe

1

Make multidimensional array eg

$categories = array(
    'cars' => array(
        'BMW' => array(
            'X1',
            'X3',
            'X5',
            'X6'
        ),
        'AUDI' => array(
            'A3',
            'A6'
        ),
        'MERCEDES'
    ),
    'moto' => array(
        'SUZUKI',
        'HONDA',
        'YAMAHA'
    ),
    'phones' => array(
        'SAMSUNG',
        'LG',
        'MOTOROLA'
    )
);
// etc

You can write data to ini file if it's much readable for you and build array with parse_ini_file() http://php.net/manual/en/function.parse-ini-file.php

Edited by AndrisP

Votes + Comments
How much sub-arrays i can have ?
2

I realise this is recently solved. INI files ok, but you can also store data in something like json files. These have the advantage of being readable and writable, pretty much into and out of array format. Anyhow, here's my 2p:

//READ
$out  = file_get_contents('myfile.json');
$myArray = json_decode($out, true); //true if you want asscoiated array - false if you want object

//WRITE
$in  = json_encode($myArray);
file_put_contents('myfile.json', $in);
This question has already been answered. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.