Foros del Web » Programando para Internet » PHP »

buscar desde combo

Estas en el tema de buscar desde combo en el foro de PHP en Foros del Web. hola amigos, a ver si me pueden ayudar, ....quisiera saber como puedo buscar un dato en una table mysql seleccionando el valor de un combo, ...
  #1 (permalink)  
Antiguo 05/05/2012, 15:46
 
Fecha de Ingreso: enero-2004
Mensajes: 33
Antigüedad: 20 años, 3 meses
Puntos: 0
buscar desde combo

hola amigos, a ver si me pueden ayudar, ....quisiera saber como puedo buscar un dato en una table mysql seleccionando el valor de un combo, es decir, tengo una pagina con un combo el cual lleno desde una tabla de una bd....lo que quiero es hacer un botón al lado del combo que me redireccione a una pagina "filtrar" y que me muestre los registros que coinciden con el dato seleccionado en el combo...os paso lo que tengo:

combo.php

<body>
<?php
include 'conexion.php';
if (!$conexion) {
die('No se puede conectar: ' . mysql_error());
}
$con="SELECT nombre FROM clientes";
$res=@mysql_query($con,$conexion);
if(!$res){
echo " fallo";
}
else{
echo "<select name='select1'>";
while ($fila=mysql_fetch_array($res)){
echo "<option>", $fila['nombre'], "</option>";
}
echo "</select>";
}
?>
</body>

Quiero hacer un botón al lado del combo que me redireccione a otra página que se llame filtrar.php y me muestre en forma de tabla los registros que coinciden con el valor seleccionado en el combo.

Gracias
  #2 (permalink)  
Antiguo 05/05/2012, 16:24
Avatar de PIRRUMAN  
Fecha de Ingreso: febrero-2006
Ubicación: Monterrey, Nuevo León
Mensajes: 633
Antigüedad: 18 años, 3 meses
Puntos: 53
Respuesta: buscar desde combo

en un debes meter en un formulario tu select

Cita:
<form name=miformulario method=post action="pagina2">
<select name=miselect>
<option value=1>uno</option>
<option value=2>dos</option>
</select>
<inptut type=submit value=enviar>
</form>
y en la pagina 2 recoges lo seleccionado

Cita:
$mivariable = $_POST['miselect']
y haces laconsulta e imprimes
Cita:
$sql="Select * from mitabla where imcampo=$mivariable
$res=mysql_query($sql)
while($datos=mysql_fetch_array($res))
{
print $datos['campo1']."-".$datos['campo2']."-".$datos['campon'];
print "<br>";
}
__________________
“Prefiero ser un tonto momentaneo que un eterno ignorante”
“¡El éxito es resultado de los aciertos,los aciertos resultado de la experiencia y la experiencia resultado de los errores!”
  #3 (permalink)  
Antiguo 07/05/2012, 01:57
 
Fecha de Ingreso: enero-2004
Mensajes: 33
Antigüedad: 20 años, 3 meses
Puntos: 0
Respuesta: buscar desde combo

gracias amigo, pero no se como poner el el select dentor de un form como me comentas....me puedes ayudar en el codigo que tengo?....

Una pregunta más.....resulta que cuando me devuelve los valores de la tabla en el combo me saca también los repetidos....¿como le puedo decir que me liste sólo los registros únicos (para que cuando vea lo que hay en el combo me salgan sólo las datos que no estan repetidas).

Gracias.
  #4 (permalink)  
Antiguo 07/05/2012, 04:02
 
Fecha de Ingreso: septiembre-2003
Mensajes: 337
Antigüedad: 20 años, 7 meses
Puntos: 4
Respuesta: buscar desde combo

Para poner el select dentro del form, es sencillísimo... al igual que has puesto el select, deberás hacer (antes de escribir el select):

Código PHP:
echo '<form name=miformulario method=post action="pagina2">';
echo 
"<select name='select1'>"
y más abajo, justo después de "cerrar" el select (y poner el botón):

Código PHP:
echo "</select>";
echo 
'<input type="submit" value="enviar">';
echo 
"</form>"
Para que no salgan valores repetidos, en la consulta puedes poner un "GROUP BY" (esta es una forma de hacerlo, pero hay otras). Por tanto, a la hora de hacer la consulta

Código PHP:
$sql="Select * from mitabla where imcampo=$mivariable"
Pon esto:

Código PHP:
$sql="Select * from mitabla where imcampo=$mivariable GROUP BY id"
Suponiendo que id es el campo identificador de cada registro en tu tabla.

Saludos.
  #5 (permalink)  
Antiguo 07/05/2012, 10:08
 
Fecha de Ingreso: enero-2004
Mensajes: 33
Antigüedad: 20 años, 3 meses
Puntos: 0
Respuesta: buscar desde combo

gracias amigos por vuestra ayuda.....me funciona todo excepto lo de mostrar la consulta que se le hace a la base de datos desde el valor elegido en el combo....he copiado lo que dice el amigo Pirruman, pero tiene un error en algun sitio que no me hace ni puto caso, sale un error de sintaxis y no me muestra nada...:

$mivariable = $_POST['miselect'];
$sql="Select * from mitabla where imcampo=$mivariable;
$res=mysql_query($sql);
while($datos=mysql_fetch_array($res))
{
print $datos['campo1']."-".$datos['campo2']."-".$datos['campon'];
print "<br>";
}


Alguien que sepa por qué ese error?....gracias
  #6 (permalink)  
Antiguo 07/05/2012, 10:25
 
Fecha de Ingreso: septiembre-2003
Mensajes: 337
Antigüedad: 20 años, 7 meses
Puntos: 4
Respuesta: buscar desde combo

Te faltan unas comillas en la segunda línea del código que nos pones:

Lo tienes así:

Código PHP:
$sql="Select * from mitabla where imcampo=$mivariable; 
Y debes ponerlo así:

Código PHP:
$sql="Select * from mitabla where imcampo='$mivariable'"
  #7 (permalink)  
Antiguo 08/05/2012, 01:54
 
Fecha de Ingreso: enero-2004
Mensajes: 33
Antigüedad: 20 años, 3 meses
Puntos: 0
Respuesta: buscar desde combo

Hola amigos otra vez....pues parece que no es problema de las comillas....he puesto un echo $_Post['nombreselect'] para ver si me manda el valor seleccionado en el combo pero no lo hace....no se donde está el error.....os paso los ficheros que tengo a ver si se puede solucionar:

combo.php

<body>
<?php
include 'conexion.php';
if (!$conexion) {
die('No se puede conectar: ' . mysql_error());
}
$con="SELECT Nombre FROM clientes GROUP BY Codigo";
$res=@mysql_query($con,$conexion);
if(!$res){
echo " fallo";
}
else{
echo '<form name=miformulario method="post" action="respuesta.php">';
echo "<select name='select1'>";
while ($fila=mysql_fetch_array($res)){
echo "<option>", $fila['Nombre'], "</option>";
}
echo "</select>";
echo '<input type="submit" value="enviar">';
echo "</form>";
}
?>
</body>


respuesta.php

<body>


<?

$mivariable = $_POST['select1'];

$sql="Select * from clientes where Codigo='$mivariable'";
$res=mysql_query($sql);
while($datos=mysql_fetch_array($res))
{
print $datos['Nombre']."-".$datos['Direccion']."-".$datos['Telefono'];

}

?>
</body>


El combo.php funciona bien, me lista los nombres de la bd sin repetir....el problema es el respuesta que no recibe ninguna variable por POST.....a ver si me podeis decir donde está el error....

Gracias.

Etiquetas: combo, mysql, registro, sql, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:25.