Фильтрация в базе данных

178
25 сентября 2018, 17:30

Подскажите как реализовать фильтрацию mysql, создал таблицу в бд с 2умя колонками(id , marka_avto), вопрос как сделать так чтобы при выборе марки авто выпадал список с моделями авто конкретной марки, нужно ли создавать отдельную таблицу для моделей авто и какие там должны быть колонки?

пока что только выводятся значения из бд марка авто, делал так:

     <select class="filtr__select" id="idcat">
                <option>марка</option>
                    <?php
                    //Выводим категории и ее ID
                    while ($row=mysql_fetch_assoc($result))
                    {
                    $id = $row['id']; // иднтификатор
                           $marka = $row['marka_avto']; 
                           echo "<option value=\"$id\">$marka</option>";
                            }
                        ?>
                    </select>
                  // Тут по идеи должна выводится модель авто в зависимости от выбранной марки
                    <select class="filtr__select" id="idcat">
                <option>модель</option>
                    <?php
                    //Выводим категории и ее ID
                    while ($row=mysql_fetch_assoc($result))
                    {
                    $id = $row['id']; // иднтификатор
                           $model = $row['model_avto']; 
                           echo "<option value=\"$id\">$model</option>";
                            }
                        ?>
                    </select>
              С бд раньше не работал поэтому интересует как спроектировать бд для такого фильтра, заранее спасибо
Answer 1

Приближенная модель

Графическое представление в MySql Workbench

Скрипт, созданный MySQL Workbench

-- -----------------------------------------------------
-- Table `mydb`.`Brand`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`Brand` (
  `Id` INT NOT NULL AUTO_INCREMENT,
  `Name` VARCHAR(45) NOT NULL,
  PRIMARY KEY (`Id`))
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `mydb`.`Model`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`Model` (
  `Id` INT NOT NULL AUTO_INCREMENT,
  `Name` VARCHAR(45) NOT NULL,
  `BrandId` INT NOT NULL,
  PRIMARY KEY (`Id`),
  INDEX `fk_Model_Brand_idx` (`BrandId` ASC),
  CONSTRAINT `fk_Model_Brand`
    FOREIGN KEY (`BrandId`)
    REFERENCES `mydb`.`Brand` (`Id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `mydb`.`Car`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`Car` (
  `Id` INT NOT NULL AUTO_INCREMENT,
  `Name` VARCHAR(45) NOT NULL,
  `ModelId` INT NOT NULL,
  PRIMARY KEY (`Id`),
  INDEX `fk_Car_Model1_idx` (`ModelId` ASC),
  CONSTRAINT `fk_Car_Model1`
    FOREIGN KEY (`ModelId`)
    REFERENCES `mydb`.`Model` (`Id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;
READ ALSO
Возврат функции при соблюдения условия

Возврат функции при соблюдения условия

Допустим есть функция, которая возвращает случайную цифру:

161
Вывод значений из mysql

Вывод значений из mysql

Подскажите, вывожу из бд значения в option, проблема в том что выводятся все значения из строки marka, получается много option с одинаковым значением...

160
Подключение PhpSpreadsheet в Laravel

Подключение PhpSpreadsheet в Laravel

В абсолютно стандартном проекте laravel не могу понять как подключить данную библиотеку через appphp, свои классы там регистрировал и проблем не возникало,...

157
Вывод информаций из JSON в HTML 2

Вывод информаций из JSON в HTML 2

Предыдущее решение: РЕШЕНИЕ

221