Cómo tomar valor de lista desplegable con PHP?

  • Autor Autor punteral
  • Fecha de inicio Fecha de inicio
P

punteral

Beta
Verificado por Whatsapp
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Hola a todos. Estoy trabajando en un código HTML con PHP para manejar una tabla de una base de datos. Por ahora todo en local desde mi ordenador. No he subido nada todavía a ningún hosting web.

El código consiste en un formulario en el que el primer INPUT es una lista desplegable con los elementos de una de las columnas de la tabla de la base de datos. Lo he realizado mediante el siguiente código:

PHP:
<form method="post" action="add_part.php">

Jugador 1:<input type="text" list="Jugador_1" />

				<?php
						include ("includes/conexion.php");
						
					$sql = "SELECT * FROM `FICHAS_JUGADORES` ORDER BY `Nombre` ASC";
					$result = mysql_query($sql);
					  
					echo "<datalist id='Jugador_1'>";
					while($fila=mysql_fetch_array($result)){
					    echo "<option value='".$fila['Nombre']."'>".$fila['Nombre']."</option>";
					}
					echo "</datalist>";
					?>
<br>
				
				<input type="Submit" name="enviar" value="Aceptar">
			</form>

Este código supuestamente enviaría los datos recogidos en el formulario al archivo "add_part.php" mediante el método "POST". El archivo add_part.php tiene este código:

PHP:
<?php

	include ("includes/conexion.php");
		
echo .$_POST['Jugador_1']; 

?>

Debería mostrar el valor seleccionado en la lista desplegable del formulario, sin embargo me da error

Parse error: syntax error, unexpected '.' in C:\xampp\htdocs\Proyectos\rankingtenis\add_part.php on line 6

en la línea

PHP:
echo .$_POST['Jugador_1'];

y si quito el punto antes de $ el error es el siguiente:

Notice: Undefined index: Jugador_1 in C:\xampp\htdocs\Proyectos\rankingtenis\add_part.php on line 6

Sabéis donde puede estar el fallo??? Gracias de antemano y un saludo a todos. :encouragement:
 
Última edición:
[MENTION=34658]punteral[/MENTION]
PHP:
<?php

    include ("includes/conexion.php");
        
echo .$_POST['Jugador_1']; 

?>
Efectivamente está mal. Ese punto está de mas.

El error que obtiene luego de quitar el punto es que usted está leyendo algo que no existe aún (no ha enviado los datos del formulario). Debe controlar eso con con condicional por medio de un isset y luego si imprimirlo .
 
Valeeee, solucionado, fallo tonto, me faltaba por poner el nombre al INPUT y después utilizar ese nombre desde el otro archivo. Lo correcto era:

En el formulario:

PHP:
<input type="text" name="lista_nombres" list="Jugador_1" />

Y en el archivo PHP:

PHP:
echo $_POST['lista_nombres'];

- - - Actualizado - - -

Gracias [MENTION=49061]ismadobe[/MENTION]. Acabo de leer tu respuesta después de encontrar el fallo. Ahora ya funciona correctamente. Un saludo! :encouragement:
 
Es el . antes del $.

Respecto a tu sintaxis te recomiendo programar de la siguiente forma

PHP:
<form method="post" action="add_part.php">

Jugador 1:<input type="text" list="Jugador_1" />

<?php
include ("includes/conexion.php");

$sql = "SELECT * FROM `FICHAS_JUGADORES` ORDER BY `Nombre` ASC";
$result = mysql_query($sql);
?>

	<datalist id='Jugador_1'>
	<?php
	while($fila=mysql_fetch_object($result)):
	?>
		<option value='<?=$fila->nombre?>'><?=$fila->nombre?>'></option>";
	<?php
	endwhile
	?>
	</datalist>
<br>
<input type="Submit" name="enviar" value="Aceptar">
</form>
 
Atrás
Arriba