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 } ?>
 1
Author: Cesar Blandon, 2016-11-13

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;

?> 
 0
Author: Diablo, 2016-11-13 15:18:12

Возможно, вы могли бы сделать это с помощью 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.

 1
Author: Victor Roque, 2016-11-13 16:23:44

Внутри формы не может быть нескольких полей с одинаковым именем. Input и select должны иметь разные имена, потому что это то, что php использует для идентификации друг друга, когда вы выполняете запрос GET на сервер, который вы используете.

 0
Author: Isaac Vega, 2016-11-13 05:26:13

Добрый день я уже смог дать решение, ссылаясь на код, который прислал мне 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);

        }
 }
 ?>
 0
Author: Cesar Blandon, 2016-11-15 01:42:53