1 input и select до 1 же переменной
Спокойной ночи, товарищи
я делаю форму для запроса кода или имени, поэтому я иду и просматриваю базу данных. Чтобы сделать это проще для пользователя, я хотел бы дать ему возможность ввести их или найти их в раскрывающемся списке, принесенном непосредственно из данных БД Мой вопрос.
возможно ли, что с полями ввода без необходимости делать 2 формы ? Идея состоит в том, что тот, кто получает только тот, кто содержит значение, но передает 2
я добавляю код
<form method='get' action='consulta.php'>
<input name="equipo" type="text" />
<select name="equipo">
<option selected="selected"></option>
<?php while($array= mysql_fetch_array($consulta)){?>
<option value="<?php echo $array['codigo']?>">
<?php echo $array['codigo']." | ". $array['nombre']?></option> <?php }?>
</select>
<input type='submit' value='Consultar'>
</form> <?php } ?>
4 answers
Во-первых, вы не можете дублировать атрибут name
, поскольку они ссылаются на данные формы после отправки формы.
Я оставляю вам небольшой пример в PHP:
<form method='POST' action='consulta.php'>
<input name="equipo" type="text" />
<select name="equipo_list">
<option selected="selected" value="0">Selecciona un equipo</option>
<option value="equipo_1">
Equipo 1
</option>
<option value="equipo_2">
Equipo 2
</option>
</select>
<input type='submit' name="consulta" value='Consultar'>
</form>
Давайте посмотрим, как будет выглядеть страница consulta.php
, затем вы можете расширить ее по своему вкусу или ввести AJAX
, Чтобы не перезагружать поиск.
<?php //Pagina consulta
$reporte = $equipo = $equipo_list = NULL;
if (isset($_POST['consulta'])) {
//Comprobacion si algun campo este vacio.
if ( empty($_POST['equipo']) && empty($_POST['equipo_list'][0]) ) {
$reporte = "Error, Debes escribir o seleccionar un 'equipo'";
} elseif ( !empty($_POST['equipo']) ) { //Obtenemos el dato con el input
$equipo = $_POST['equipo'];
} else { //Obtenemos el dato mediante el select
$equipo_list = $_POST['equipo_list'];
}
if ($equipo) {
//Hacemos algo con $euipo
echo "OK equipo";
}
if ($equipo_list) {
//Hacemos algo con $equipo_list
echo "OK equipo_list";
}
}
//MSG errores.
echo $reporte;
?>
Возможно, вы могли бы сделать это с помощью Javascript, сначала удалите атрибут name
из input
и select
и добавьте его с помощью javascript при выполнении submit
формы.
Что-то вроде:
var myForm = document.getElementById('TeamForm');
var inputTeam = document.getElementById('InputTeam');
var selectTeam = document.getElementById('SelectTeam');
myForm.addEventListener('submit',function(){
if(inputTeam.value != '')
{
inputTeam.setAttribute('name','team');
selectTeam.removeAttribute('name');
console.log(inputTeam);
console.log(selectTeam);
}
else if(selectTeam.value != 0)
{
selectTeam.setAttribute('name','team');
inputTeam.removeAttribute('name');
console.log(inputTeam);
console.log(selectTeam);
}
else
{return false;}
// Send to action
},false);
<form method="GET" id="TeamForm">
<input id="InputTeam" type="text" />
<select id="SelectTeam">
<option value="0">Select a team</option>
<option value="1">Team 1</option>
<option value="2">Team 2</option>
</select>
<button type="submit">Send</button>
</form>
Таким образом, вам удастся отправить только один элемент с атрибутом name
, и в конце вы введете код для отправки данных в свое действие в PHP. Вы можете сделать это с помощью AJAX.
Если вы проверите консоль, здесь вы увидите, что только один элемент отправляется с атрибутом name
.
Внутри формы не может быть нескольких полей с одинаковым именем. Input и select должны иметь разные имена, потому что это то, что php использует для идентификации друг друга, когда вы выполняете запрос GET на сервер, который вы используете.
Добрый день я уже смог дать решение, ссылаясь на код, который прислал мне D Bulten. То, что я сделал, это проверить, где они отправляли данные, прежде чем отправлять их в запрос и, таким образом, отправлять только один
<form action="" method='post'>
<input type='text' name="equipo" />
<select name="equipo_list" >
<option selected="selected"></option>
<option value="equipo1">equipo1</option>
<option value="equipo1">equipo2</option>
</select>
<input type='submit' value='Consultar' name="consultar"/>
</form>
<?php
if (isset($_POST['consultar'])) {
//Comprobacion si algun campo este vacio.
if ( empty($_POST['equipo']) and empty($_POST['equipo_list']) ) {
echo "Debe seleccionar uno de los campos";
} elseif ( !empty($_POST['equipo']) ) { //Obtenemos el dato con el input
$equipo = $_POST['equipo'];
header('location: consulta.php?equipo='.$equipo);
} else { //Obtenemos el dato mediante el select
$equipo = $_POST['equipo_list'];
header('location: consulta.php?equipo='.$equipo);
}
}
?>