Необходимо получить имена входных данных из входных данных динамической формы. Имена входных данных берутся из базы данных

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

Все это становится для меня невозможным, поскольку имена всех этих полей извлекаются из SQL.

Вот изображение страницы, которую я делаю: Предварительный просмотр моей формыhttps://drive.google.com/file/d/1Qv1Hr8tSIj95qBb98vCV1kftdftnaGGb/view?usp=sharing

И приведенный ниже HTML (обратите внимание, что все они скопированы из исходного кода браузера. На самом деле все они получены из SQL)

<form class = "predictForm" name = "predictForm" id = "predictForm" autocomplete = "off">
    <div class = "form-group clearfix" data-question = "1">
        <div class = "inner-form-group predictType">
            <label>Match Winner</label>
            <select class = "form-control match_winner" name = "match_winner" id = "match_winner">
                <option value = ""> - Select Team - </option>
                <option value = "4">team4</option>
                <option value = "5">team5</option>
                <option value = "6">team6</option>
                <option value = "7">team7</option>
                <option value = "8">team8</option>
            </select>
        </div>
        <div class = "inner-form-group predictVal" style = "display: block;">
            <label>Points</label>
            <input type = "number" class = "form-control match_winner_val" name = "match_winner_val" id = "match_winner_val" placeholder = "Value">
        </div>
    </div>
    <div class = "form-group clearfix" data-question = "12">
        <div class = "inner-form-group predictType">
            <label>Best Batsman</label>
            <select class = "form-control best_batsman" name = "best_batsman" id = "best_batsman">
                <option value = ""> - Select Player - </option>
                <option value = "7" title = "team6">Name 1</option>
                <option value = "9" title = "team5">Name 2</option>
                <option value = "10" title = "team5">Name 3</option>
                <option value = "12" title = "team8">Name 4</option>
            </select>
        </div>
        <div class = "inner-form-group predictVal" style = "display: block;">
            <label>Points</label>
            <input type = "number" class = "form-control best_batsman_val" name = "best_batsman_val" id = "best_batsman_val" placeholder = "Value">
        </div>
    </div>
    <div class = "form-group clearfix" data-question = "8">
        <div class = "inner-form-group predictType">
            <label>Best catch done by</label>
            <select class = "form-control best_catch_by" name = "best_catch_by" id = "best_catch_by">
                <option value = ""> - Select Player - </option>
                <option value = "3" title = "team5">Name 1</option>
                <option value = "7" title = "team5">Name 2</option>
                <option value = "8" title = "team8">Name 3</option>
            </select>
        </div>
        <div class = "inner-form-group predictVal">
            <label>Points</label>
            <input type = "number" class = "form-control best_catch_by_val" name = "best_catch_by_val" id = "best_catch_by_val" placeholder = "Value">
        </div>
    </div>
    <div class = "form-group clearfix" data-question = "4">
        <div class = "inner-form-group predictType">
            <label>Runner Up Team</label>
            <select class = "form-control runner_up_team" name = "runner_up_team" id = "runner_up_team">
                <option value = ""> - Select Team - </option>
                <option value = "4">team4</option>
                <option value = "5">team5</option>
                <option value = "6">team6</option>
                <option value = "7">team7</option>
                <option value = "8">team8</option>
            </select>
        </div>
        <div class = "inner-form-group predictVal">
            <label>Points</label>
            <input type = "number" class = "form-control runner_up_team_val" name = "runner_up_team_val" id = "runner_up_team_val" placeholder = "Value">
        </div>
    </div>
    <div class = "form-group clearfix" data-question = "5">
        <div class = "inner-form-group predictType">
            <label>Max Six</label>
            <select class = "form-control max_six" name = "max_six" id = "max_six">
                <option value = ""> - Select Team - </option>
                <option value = "4">team4</option>
                <option value = "5">team5</option>
                <option value = "6">team6</option>
                <option value = "7">team7</option>
                <option value = "8">team8</option>
            </select>
        </div>
        <div class = "inner-form-group predictVal">
            <label>Points</label>
            <input type = "number" class = "form-control max_six_val" name = "max_six_val" id = "max_six_val" placeholder = "Value">
        </div>
    </div>

    <div class = "form-group clearfix">
        <button type = "submit">
            <span class = "front">
                <i class = "fas fa-paper-plane"></i>
                <span class = "value">Send <span>Predictions</span></span>
            </span>
            <span class = "back">
                <i class = "fas fa-paper-plane"></i>
                <span class = "value">Send <span>Predictions</span></span>
            </span>
        </button>
    </div>
</form>

Короче, мне нужно вставить

  1. Имя и значение поля выбора;
  2. Значение ввода числа (Без имени поля)

в базу..


Что я пробовал до сих пор ..

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

  2. Я сделал скрытый элемент в html, который обновляется с именем поля и значениями с массивом; С функцией изменения как для выбора, так и для ввода номера. Затем я отправляю его вместе с другими данными. Но он создает больше ошибок, чем тот, который мы решаем, поскольку разные пользователи взаимодействуют с формой по-разному.. (Обратите внимание, что ни одно из полей не является обязательным.. Все они являются необязательными..)

  3. Я погуглил свою проблему?... Много много раз??

<?php
    foreach ($_POST as $key => $value) {
        if ($value != "") {
            echo "<table>";
            echo "<tr>";
            echo "<td>";
            echo $key;
            echo "</td>";
            echo "<td>";
            echo $value;
            echo "</td>";
            echo "</tr>";
            echo "</table>";
        }
    }
?>

phpmyadmin — это просто интерфейс для взаимодействия с базой данных. это все

Vishwa 10.04.2019 08:15
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать 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
64
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Если вы отправляете содержимое формы в php и вам нужно получить значения ваших входных данных, все они присутствуют в массиве $_POST.

каждый ввод (также выбирает) присутствует со своим атрибутом html-name.

для вашего элемента формы "runner_up_team" вы можете получить к нему доступ следующим образом:

$val = $_POST["runner_up_team"]; // $val contains the seleceted value from the html-select

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

$result = new array();
foreach ($_POST as $inputName => $value) {
   // We only want to inspect the selects and retrieve the number value later.
   if (strpos($inputName, '_val') === FALSE) {
     if ($value != '') {
       // With the current select name + the suffix we get the name for the number input field
       $numberInputName = $inputName . '_val'; 

       // Now we can access the value of the number input with the name.
       $numberInput = $_POST[$numberInputName];

       // now you can put your data into a result array.
       $result[$value] = $numberInput;
     }
   }
}

Теперь массив результатов должен выглядеть так:

["runner_up_team" => 43, "max_six" => 32]

Если теперь вы хотите получить к нему доступ в цикле, вы можете использовать свой предыдущий пример, но использовать массив результатов:

<?php
foreach ($result as $key => $value) {
    if ($value != "") {
        echo "<table>";
        echo "<tr>";
        echo "<td>";
        echo $key;
        echo "</td>";
        echo "<td>";
        echo $value;
        echo "</td>";
        echo "</tr>";
        echo "</table>";
    }
}
?>

ОБНОВИТЬ На ваш вопрос в комментарии:

заменить следующую строку

$result[$value] = $numberInput;

с участием

$element = new array();
$element['select_name'] = $inputName;
$element['number'] = $numberInput;
$element['select_value'] = $value;
$result[] = $element;

Это изменит второй foreach на:

<?php
foreach ($result as $value) {
        echo "<table>";
        echo "<tr>";
        echo "<td>";
        echo $value['select_name'];
        echo "</td>";
        echo "<td>";
        echo $value['select_value'];
        echo "</td>";
        echo "<td>";
        echo $value['number'];
        echo "</td>";
        echo "</tr>";
        echo "</table>";
}
?>

Эй, большое спасибо ? .. Это было именно то, что я хотел .. В дополнение к этому, есть ли способ получить имя поля выбора? Поскольку все атрибуты имени поступают из БД, невозможно жестко закодировать их в PHP. Поэтому, когда я получаю эти 2 значения в PHP, мне нужно знать, к какому вопросу относится этот ответ... Для этого мне нужно получить атрибут имени поля выбора (которое исходит из SQL и может меняться каждый раз). время зависит от администратора, использующего приложение)

Jayakrishnan 10.04.2019 12:11

Я обновил свой ответ, чтобы ответить и на этот вопрос. Если это ответ, который решает ваш вопрос, пожалуйста, отметьте его как Действительный ответ или проголосуйте. Большое спасибо.

Sunchezz 10.04.2019 15:06

Это решило мою проблему. Большое спасибо, я пытался сделать это последние 2 дня.. :)

Jayakrishnan 11.04.2019 04:54

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