Проблема с заполнением поля выбора с помощью PHP из базы данных

По сути, у меня есть 1 поле выбора в верхней части моей страницы, называемое чашками. На каждый кубок назначено 8 команд. После выбора кубка и нажатия кнопки «Отправить» я хочу, чтобы все команды, связанные с этим кубком, заполнили 8 полей выбора в другом месте на странице, позволяя пользователю выбрать, какая команда играет с другой.

Я пробовал много вещей, и я дошел до того, что могу повторить команды, они просто не отображаются в полях выбора в другом div на той же странице.

<input type = "submit" name = "submit" value = "Generate" class = "submit">
<?php
if (isset($_POST['submit'])) { //checking if submit button was clicked

    include_once 'action/dbcon.php';

    $cname = $_POST['cupname'];

    if (empty($cname)) {
        header("Location: ../table.php?field=empty"); //return them if fields are empty
        exit();
    } else {
        $sql = "SELECT * FROM teams WHERE cup_name='$cname'";
        $show_teams = mysqli_query($conn, $sql);

        if (!$show_teams) {
            echo "Could not load teams! " . "(" . mysqli_error($conn) . ")";
        }
        while ($team = mysqli_fetch_assoc($show_teams)) {
            echo $team["team_name"];
        }
    }
    echo "dank";
}
?>
</form>


    <div class = "seed-container">
        <div class = "column-1">
        <form class = "seed-form">
            <select name = "team" required>
            <option></option>
            </select>
            <select name = "team" required>
            <option></option>
            </select>

Итак, я повторяю правильные результаты, а не как варианты в полях выбора, где я хочу их

Предупреждение: Вы широко открыты для SQL-инъекции и действительно должны использовать параметризованный подготовленные заявления вместо создания запросов вручную. Они предоставляются ЗОП или MySQLi. Никогда не доверяйте никаким данным, особенно тем, которые исходят от клиента. Даже если ваши запросы выполняются только доверенными пользователями, вы все еще рискуете повредить свои данные.
Dharman 27.03.2019 22:33
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
1
31
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

проще всего повторить их там, где они должны появиться:

<select name = "team" required>
<?php while ($team = mysqli_fetch_assoc($show_teams)) { ?>
    <option value = "<?php echo $team["team_id"]; ?>"><?php echo $team["team_name"]; ?></option>
<?php } ?>
</select>

Это то, что я пытался включить, однако я смущен тем, где находится уже написанный PHP-код перед оператором while. Не могли бы вы привести пример? Спасибо

Brad Archer 27.03.2019 22:48

@BradArcher, разве я уже не привел хороший минимальный пример? просто переместите этот цикл... или выберите все записи, а затем выполните цикл дважды. единственное, что здесь сбивает с толку, это то, что вы не указали поля набора записей и не получили ожидаемого результата... и не выбрали значения параметров. Обычно для такого вывода можно было бы использовать механизм шаблонов.

Martin Zeitler 27.03.2019 23:04

прошу прощения, я не понял, что части работают сейчас. Быстрый вопрос: знаете ли вы способ удаления их из поля выбора после того, как пользователь выбрал эту конкретную запись?

Brad Archer 27.03.2019 23:32

Кстати, этот код работает только для одного выбора, когда та же строка кода используется в другом, он не загружает никаких результатов.

Brad Archer 28.03.2019 00:27

Вы можете справиться с этим с помощью jQuery. В моем примере я просто вырезал и вставил один из моих сценариев cms.

Форма ниже включена в более крупную форму, поэтому тег формы и подпрограмма не включены в пример.

Форма:

<?php
    echo '<div class = "row">';       
        # page-type
        echo '<div class = "col_3">';
            $getPgType = $db->prepare('SELECT page_type_id, page_type FROM page_types WHERE page_type_id >= 1 order by page_type asc');
            $getPgType->execute();
            echo '<label>Page Type</label><br>';                
            echo '<select id = "" name = "page_type" class = "expand">';
                echo '<option value = ""'; if ($page_type == ''){echo 'selected';} echo '>Select Page Type</option>';
                while($row = $getPgType->fetch(PDO::FETCH_ASSOC)){
                    $id = $row['page_type_id']; $pagetype = $row['page_type'];                      
                    echo '<option value = "'.$pagetype.'"'; if ($page_type == $pagetype){echo 'selected';} echo '>'.ucwords($pagetype) .'</option>';
                }   
            echo '</select>';               
        echo '</div>';

        # classification_type
        echo '<div class = "col_3">';
            echo '<label for = "classification_type">Classification Type</label><br>';
            echo '<select id = "classificationType" name = "classification_type" class = "expand">';
                echo '<option value = ""'; if ($classification_type == ''){echo 'selected';} echo '>Select Classification Type</option>';
                echo '<option value = "classification"'; if ($classification_type == 'classification'){echo 'selected';} echo '>Classification</option>';
                echo '<option value = "category"'; if ($classification_type == 'category'){echo 'selected';} echo '>Category</option>';
                echo '<option value = "content"'; if ($classification_type == 'content'){echo 'selected';} echo '>Content</option>';               
            echo '</select>';
        echo '</div>';

        # classification
        echo '<div class = "col_3">';
            $selstmt = $db->prepare('SELECT classification_id, classification FROM classifications WHERE classification_id >= 1');
            $selstmt->execute();
            echo '<label>Classification</label><br>';
            echo '<select id = "getAssignedCats" name = "classification" class = "expand">';
                echo '<option value = ""'; if ($classification == ''){echo 'selected';} echo '>Select Classification</option>';
                while($row = $selstmt->fetch(PDO::FETCH_ASSOC)){
                    $classification_id = $row['classification_id']; $classN = $row['classification'];
                    echo '<option value = "'.$classification_id.'"'; if ($classification == $classification_id){echo 'selected';}
                    echo '>'.ucwords(str_replace('-',' ',$classN)).'</option>';
                }
            echo '</select>';
        echo '</div>';

        # category
        echo '<div id = "categoryHTML" class = "col_3"></div>';
    echo '</div>';
?>

Обратите внимание на <div id = "categoryHTML" class = "col_3"></div>... здесь jQuery отображает желаемое поле выбора.

jQuery

/* PARSE GET ASSIGNED CATEGORIES
======================================================================================== */ 
    $("#getAssignedCats").change(function(){
        var type = $("#classificationType").val();
        if (type != 'classification'){
            var class_id = $(this).val();
            var url = 'parse/get-assigned-categories.php';
            var postit = $.post( url, {class_id:class_id});     
            postit.done(function( data ) {$('#categoryHTML').html(data);}); 
        }       
    });

Когда поле выбора #getAssignedCats изменяется пользователем, jquery собирает значение и отправляет его в файл parse.php.

Парсинг PHP

<?php
    $level = '../../../';
    include($level.'core/ini/start.php');

    $class_id = $_POST['class_id'];

    if ($class_id != 888888){

        $selCat = $db->prepare('SELECT cat_id, category FROM categories WHERE classification = :THEID ORDER BY category asc');
        $selCat->bindValue(':THEID',$class_id,PDO::PARAM_INT); $selCat->execute(); $cat_ct = $selCat->rowCount();
        echo '<label>Category</label>';
        echo '<select name = "category" class = "expand">';
            echo '<option value = ""'; if ($category == ''){echo 'selected';} echo '>Select Parent category</option>';
            if ($cat_ct <= 0){
                echo '<option value = "777777"'; if ($category == '777777'){echo 'selected';} echo ' class = "blue">This is a Category Page</option>';}
            elseif ($cat_ct >= 1){
                while($row = $selCat->fetch(PDO::FETCH_ASSOC)){
                    $cat_id = $row['cat_id'];
                    $category = $row['category'];
                    echo '<option value = "'.$cat_id.'"'; if ($category == $cat_id){echo 'selected';}
                    echo '>'.ucwords(str_replace('-',' ',$category)).'</option>';
                }
            }       
        echo '</select>';
    }
?>

Надеюсь это поможет.

Другие вопросы по теме