Итак, у меня есть эта форма с парой полей... Одно для выбора, а другое для ввода чисел. Если выбранное значение не равно нулю, рядом с ним появляется ввод числа... После отправки мне нужно получить имя меню выбора, его значение и значение введенного числа помимо него...
Все это становится для меня невозможным, поскольку имена всех этих полей извлекаются из 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>
Короче, мне нужно вставить
в базу..
Я попытался опубликовать все значения и разбить их на разные массивы из четырех. Но это не сработало, как ожидалось, так как третий элемент в массиве не нужен, и по некоторым другим причинам.
Я сделал скрытый элемент в html, который обновляется с именем поля и значениями с массивом; С функцией изменения как для выбора, так и для ввода номера. Затем я отправляю его вместе с другими данными. Но он создает больше ошибок, чем тот, который мы решаем, поскольку разные пользователи взаимодействуют с формой по-разному.. (Обратите внимание, что ни одно из полей не является обязательным.. Все они являются необязательными..)
Я погуглил свою проблему?... Много много раз??
<?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>";
}
}
?>
Если вы отправляете содержимое формы в 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 и может меняться каждый раз). время зависит от администратора, использующего приложение)
Я обновил свой ответ, чтобы ответить и на этот вопрос. Если это ответ, который решает ваш вопрос, пожалуйста, отметьте его как Действительный ответ или проголосуйте. Большое спасибо.
Это решило мою проблему. Большое спасибо, я пытался сделать это последние 2 дня.. :)
phpmyadmin — это просто интерфейс для взаимодействия с базой данных. это все