Обновить параметры в SELECT B из MYSQL, когда SELECT A изменяется в форме - PullRequest
0 голосов
/ 13 марта 2012

Как заполнить поле выбора в моей форме только продуктами, которые соответствуют группе, выбранной в другом поле выбора?

Я использую две таблицы в базе данных mySQL:

GROUP "node"
nid | title
g1   | Group 1
g2   | Group 2

GROUP "products"
id  | name        | parent_id | group_id
p1  | Product 1   | p1        | g1
p2  | Product 2   | p1        | g1
p3  | Product 3   | p3        | g1
p4  | Product 4   | p4        | g2
p5  | Product 5   | p5        | g2
p6  | Product 6   | p5        | g2

При добавлении товара с помощью формы администратор должен иметь возможность выбрать ГРУППОВЫЙ и РОДИТЕЛЬСКИЙ ПРОДУКТ. Это работает с моим кодом:

<li>
                <label for="group">Group</label>
                <select name="group">
                    <?php
                    //get group names
                    $result = mysql_query("SELECT nid, title FROM node WHERE type = 'group';");
                        while($row = mysql_fetch_array($result)) { ?>

                            <option value="<?php echo $row['nid']; ?>"><?php echo $row['title']; ?></option>


                        <?php } ?>
                </select>
            </li>


            <li>
                <label for="parent">Parent</label>
                <select name="parent">
                <?php
                //get parent names
                $result = mysql_query("SELECT id, name, group_id FROM products");
                    while($row = mysql_fetch_array($result)) {?>

                        <option value="<? echo $row['id']; ?>"><?php echo $row['name']; ?></option>

                    <?php }?>
                </select>
            </li>

Однако мне бы хотелось, чтобы поле выбора PARENT (родительский продукт) заполнялось только теми продуктами, которые входят в выбранную группу.

В примере базы данных выбранная «Группа 1» будет заполнять продукты p1, p2 и p3. Выбранная группа 2 будет заполнять продукты p4, p5 и p6.

Я знаю, что это не может быть сделано с прямым PHP, но потребуется какой-то javascript для обнаружения group_id / nid в обеих таблицах и отображения только продуктов с этим group_id.

Каков наилучший способ сделать это? Как бы мне это было легко сделать?

1 Ответ

0 голосов
/ 13 марта 2012

Зависит.Если вы хотите использовать Javascript, вы можете использовать AJAX.

. Для этого сначала необходимо связать функцию с событием «изменение» вашего первого выбора.

С помощью jQuery вы можете создатьи связать его:

pull_products_by_group = function(this) {
  // Use AJAX here
}

$('select[name="group"]').change(pull_products_by_group);

Затем вы используете AJAX в этой функции для вызова нового скрипта, который будет выбирать из таблицы продуктов.Вы можете сделать так, чтобы эта функция возвращала JSON (обычно рекомендуется) или прямой HTML (если вы настаиваете).

Если вы не хотите использовать javascript, то вы должны добавить кнопку, которую пользователь будет нажимать после выбора группы, который перезагрузит себя (скрипт php), который получит выбранную группу, и вы можете снова отобразить ту же страницу, но на этот раз со списком продуктов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...