1 input y un select a 1 misma variable

Buenas noches compañeros

Estoy haciendo un formulario para solicitar un codigo o un nombre, para que vaya y busque en una base de datos. Para hacerlo mas fácil al usuario quisiera darle la opción de que los escriba o los busque en una lista desplegable traida directamente de los datos de la DB Mi pregunta es.

Es posible que teniendo los campos de ingreso sin la necesidad de hacer 2 formularios ? La idea es que el que reciba solo el que contenga un valor, pero pasa los 2

agrego el código

<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
задан 13.11.2016, 15:25
4 ответа

Во-первых, ты не можешь удваивать признак 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
ответ дан 24.11.2019, 12:38

Может быть, ты мог бы делать это с 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
ответ дан 24.11.2019, 12:38

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

0
ответ дан 24.11.2019, 12:38
  • 1
    Ok, но есть какой-то способ санкционировать его, что если está vació не посылайте это, так только возьми 1 – Cesar Blandon 13.11.2016, 15:32
  • 2
    Которое podrí эксперт делать значит добавлять свойство " required" в неударе в лунку для того, чтобы пользователь был должен наполнять информацию об обязательной и такой форме, ты предотвращаешь себя все это. – Isaac Vega 13.11.2016, 17:37

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