Выпадающий список из базы данных не записывает выбранную опцию с PHP - PullRequest
0 голосов
/ 03 марта 2019

что не так с моим кодом ниже?Я не знаю, как сказать моему SQL INSERT, чтобы записать выбранный вариант раскрывающегося списка.Я отредактировал свой вопрос, чтобы кто-то мог помочь мне больше с этим.Заранее спасибо за помощь.

<?php
    $usuarioLogado = $_SESSION['email'];
    $etapa = "semana1";
    $showModal = false;

    $query = "SELECT * FROM campeonato WHERE usuario = '$usuarioLogado' AND etapa = '$etapa'";
    $ref = $select_db->query($query);
    $row = mysqli_fetch_assoc($ref);

    if(isset($_POST['time']) && isset($_SESSION['email'])) {
        $showModal = true;
        $times = $_POST["time"];
        $dobrada = $_POST["dobrada"];
        $sobrevivente = $_POST["sobrevivente"];
        if ($row) {
            $sql = "UPDATE campeonato SET ";
            foreach ($times as $time => $valor) {
                if ($valor != null) {
                    $sql .= "$time = $valor,";
                }
            }
            $sql .= " dobrada = $dobrada, sobrevivente = $sobrevivente, datahora = now() WHERE usuario = '$usuarioLogado' AND etapa = '$etapa'";

            if ($select_db->query($sql) === TRUE) {
                //echo "Dados atualizados com sucesso";
            } else {
                //echo "Error: " . $sql . "<br>" . $select_db->error;
            }
        } else {
            $sql = "INSERT INTO campeonato (datahora, usuario, etapa, dobrada, sobrevivente,";
            foreach ($times as $time => $valor) {
                if ($valor != null) {
                    $sql .= "$time,";
                }
            }
            $sql = substr_replace($sql ,"", -1);
            $sql .= ") VALUES (now(), '$usuarioLogado', '$etapa', $dobrada, $sobrevivente,";
            foreach ($times as $time => $valor) {
                if ($valor != null) {
                    $sql .= "$valor,";
                }
            }
            $sql = substr_replace($sql ,"", -1);
            $sql .= ")";
            if ($select_db->query($sql) === TRUE) {
                //echo "Dados cadastrados com sucesso";
            } else {
                //echo "Error: " . $sql . "<br>" . $select_db->error;
            }
        }
    }
    $query = "SELECT * FROM campeonato WHERE usuario = '$usuarioLogado' AND etapa = '$etapa'";
    $ref = $select_db->query($query);
    $row = mysqli_fetch_assoc($ref);
?>

<form method="post">
    <div class="form-group">
        <table>
            <tr>
                <td class="quantity">
                    <input name="time[time1]" type="number" min="0" max="99" step="1" value="<?=$row["time1"]?>" required />
                    <input name="time[time2]" type="number" min="0" max="99" step="1" value="<?=$row["time2"]?>" required />
                </td>
            </tr>
            <tr>
                <td class="text-center" colspan="6">
                    <select name="dobrada" required style="color: #000;">
                        <option value=""> - Selecione A - </option>
                        <?php
                            for ($i = 1; $i <= 16; $i++) {
                                if ($row["DOBRADA"] == $i) {
                                    echo "<option value='$i' selected=selected>Jogo $i</option>";
                                } else {
                                    echo "<option value='$i'>Jogo $i</option>";
                                }
                            }
                        ?>
                    </select>
                </td>
            </tr>
            <tr>
                <td class="text-center" colspan="6">
                    <select name="sobrevivente" required style="color: #000;">
                        <option value=""> - Selecione B - </option>
                        <?php
                            $queryS = "SELECT * FROM lista_times";
                            $resultS = $select_db->query($queryS);
                            while ($list = $resultS->fetch_array(MYSQLI_ASSOC)){
                                echo "<option value='".$list['times']."'>".$list['times']."</option>";
                            }
                        ?>
                    </select>
                </td>
            </tr>
            <tr class="full-area">
                <td class="text-center" colspan="6">
                    <input type="submit" value="Enviar" style="color: #000;" />
                </td>
            </tr>
        </table>
    </div>
</form>

Здравствуйте, друзья, что не так с моим кодом ниже?Я не знаю, как сказать моему SQL INSERT, чтобы записать выбранный вариант раскрывающегося списка.Я отредактировал свой вопрос, чтобы кто-то мог помочь мне больше с этим.Заранее спасибо за помощь.

Ответы [ 3 ]

0 голосов
/ 03 марта 2019

Всякий раз, когда в окне выбора происходит событие изменения, вы можете использовать Ajax-вызов для отправки данных на сервер и получения ответа от них.

Вы можете использовать библиотеку Jquery для выполнения вызова ajax.

Добавить идентификатор для выбора тега

<select name="sobrevivente" id="sobrevivente" required style="color: #000;">
<option value=""> - Selecione 1 time sobrevivente - </option>
<?php
    $queryS = "SELECT * FROM libertadores_times";
    $resultS = $select_db->query($queryS);
    while ($list = $resultS->fetch_array(MYSQLI_ASSOC)){
        echo "<option value='".$list['times']."'>".$list['times']."</option>";
    }
?>

<!-- Jquery CDN Link (Jquery Library)-->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script type="text/javascript">
    // based on the change event this section will be triggered
    $("body").on('change', '#sobrevivente', function() {
       var sobrevivente = $(this).val();
      var post_data = {
         sobrevivente: sobrevivente
      }
      var url = 'https://someurl.com/filename'
      $.ajax({
            type : "POST",
            dataType: 'json',
            url : url,
            data : post_data,
            success: function(response){
                // Handling the response                
            }
        })
   });
</script>

url: https://someurl.com/filename - место, где вы можете написать процесс для вставки данных и вывода результатов процесса в формате json.

<?php
    $category_id = $_POST['sobrevivente'];

    // your code to insert it into the database

    if($success){
        $ajax_response = "success";
    }
    else
    {
        $ajax_response = "failed";
    }
    echo json_encode($ajax_response);
?>
0 голосов
/ 04 марта 2019

Спасибо за все ответы, но никто не был прав.Я сделал это!Проблема была в пропущенных цитатах.

0 голосов
/ 03 марта 2019

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

У вас есть два варианта:

  • Добавьте некоторый код JavaScript на страницу, который срабатывает при выборе нового элемента, который отправляет AJAX-запрос на ваш сервер, когда это происходит;или
  • Добавьте кнопку для отправки формы.Отправка формы отправит запрос (обычно запрос POST) на сервер на любую страницу, указанную в элементе <form>.Вам придется обработать INSERT с этой страницы, используя данные, представленные в форме.

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

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