Foros del Web » Programando para Internet » PHP »

ayuda... busqueda con formulario select

Estas en el tema de ayuda... busqueda con formulario select en el foro de PHP en Foros del Web. saludos.. aca esta la pagnia http://www.ctk.cl/byzard/php/agenda/consulta.htm como se observa quiero que la palabra de busqueda tenga relacion con el filtro que se le hace... por ...
  #1 (permalink)  
Antiguo 18/03/2005, 15:43
 
Fecha de Ingreso: agosto-2003
Ubicación: santiago, chile
Mensajes: 303
Antigüedad: 21 años, 3 meses
Puntos: 0
ayuda... busqueda con formulario select

saludos..
aca esta la pagnia
http://www.ctk.cl/byzard/php/agenda/consulta.htm

como se observa quiero que la palabra de busqueda tenga relacion con el filtro que se le hace... por ej: si coloco telefono, y en el cuadro de buscar coloco un numero me busque por eso... me parece que el la consulta en vez de ir familia, deberia ir fonof si es q quiero q busque por ahi, pero la pregunta es como puedo adaptar el select para que me saque el dato de la consulta.htm y me busque por la palabra o numero buscado?

bueno aca dejo el codigo...

consulta.htm
Código:
<H1>Ingrese el familia </H1>

<SELECT name=familias 
            size=1 
            style="FONT-SIZE: 9px; WIDTH: 300px; FONT-FAMILY: Verdana; HEIGHT: 18px"> <OPTION value=0>Selecciona el Tipo de Busqueda 
              </OPTION> <OPTION value=1>Familia</OPTION> <OPTION value=2>Negocio</OPTION> 
              <OPTION value=3>Direccion Familia</OPTION> <OPTION 
              value=4>Direccion Negocio</OPTION> <OPTION value=5>Fono Familia</OPTION> 
              <OPTION value=6>Fax Familia</OPTION> <OPTION 
              value=7>Fono Negocio</OPTION> <OPTION value=8>Fax Negocio</OPTION> 
              <OPTION value=9>Otroa</OPTION> <OPTION 
              value=10>Otrob</OPTION>
</SELECT> 
			
			<FORM ACTION="busca.php">
			</TD>
          <TD width=160 height=19>
		  <INPUT 
            style="FONT-SIZE: 9px; WIDTH: 150px; FONT-FAMILY: Verdana; HEIGHT: 18px" 
            name=palabra> </TD>
          <TD width=66 height=19><INPUT type=submit value=Buscar name=Buscar> 
          </TD>


</body>
</html>
busca.php
Código:
<?php
 $conexio = mysql_connect("zzzzzz", "z", "zz");
 mysql_select_db ("zz", $conexio) OR die ("No se puede conectar");

$sql="SELECT * FROM agenda WHERE familia LIKE '%".$palabra."%' "; 

$result = mysql_query($sql,$conexio) or die ("Error en $sql :".mysql_error());

// Si hay resultados crea una tabla y los muestra
if ($row= mysql_fetch_array($result))
{
?>
<p><b>Busqueda por familia...</b></p>
<table width="80%" border="1" cellspacing="3" cellpadding="2">

<? DO
{

?>
<TR>
 <td colspan="2">Familia: <? echo $row["familia"];?> </td>
 <td colspan="2">Negocio: <? echo $row["negocio"]; ?></td>
</tr>
<tr>
<td colspan="2">direccionF: <? echo $row["direfamilia"]; ?></td>
<td colspan="2">direccionN: <? echo $row["direnegocio"]; ?></td>
</tr>

<tr>
<td>Fono F: <? echo $row["fonof"]; ?></td>
<td>Fax F: <? echo $row["faxf"]; ?></td>
<td>fono N: <? echo $row["fonon"]; ?></td>
<td>Fax N: <? echo $row["faxn"]; ?></td>
</tr>

<tr>
<td colspan="2">aaaaaaa: <? echo $row["otroa"]; ?></td>
<td colspan="2">bbbbbbb: <? echo $row["otrob"]; ?></td>
</tr>



<?
}

while ($row=mysql_fetch_array($result));

echo "</TABLE>";
}
mysql_close ($conexio); 

?>
nos vemos
  #2 (permalink)  
Antiguo 18/03/2005, 15:52
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 20 años, 3 meses
Puntos: 102
... sin ver tu código (zzzz) quizá pueda ayudarte explicandote cómo funcionaria...

Bueno, lo primero que haria yo sería poner como valores del <select> los nombres de los campos... así sin mayor ciencia tu consulta seria del tipo
Código PHP:
$campo=$_POST['el_select'];
$palabra=$_POST['textbox'];

$query="SELECT $campo FROM tabla WHERE $campo = $palabra"
Cuidado con las comillas... Suerte!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #3 (permalink)  
Antiguo 18/03/2005, 16:19
Avatar de Seppo  
Fecha de Ingreso: marzo-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.284
Antigüedad: 19 años, 8 meses
Puntos: 17
primero, el form se tiene q abrir antes del SELECT y no vi que abras la tabla, lo agrego

consulta.htm
Código:
<H1>Ingrese el familia </H1>
<table border=0><tr><td>
			<FORM ACTION="busca.php">
<SELECT name=campo            size=1 
            style="FONT-SIZE: 9px; WIDTH: 300px; FONT-FAMILY: Verdana; HEIGHT: 18px"> <OPTION value=0>Selecciona el Tipo de Busqueda 
              </OPTION> <OPTION value="Familia">Familia</OPTION> <OPTION value="Negocio">Negocio</OPTION> 
              <OPTION value="Dirf">Direccion Familia</OPTION> <OPTION 
              value="Dirn">Direccion Negocio</OPTION> <OPTION value="Fonof>Fono Familia</OPTION> 
              <OPTION value="faxf">Fax Familia</OPTION> <OPTION 
              value="fonon">Fono Negocio</OPTION> <OPTION value="faxn">Fax Negocio</OPTION> 
              <OPTION value="otroa">Otroa</OPTION> <OPTION 
              value="otrob">Otrob</OPTION>
</SELECT> 
			
			</TD>
          <TD width=160 height=19>
		  <INPUT 
            style="FONT-SIZE: 9px; WIDTH: 150px; FONT-FAMILY: Verdana; HEIGHT: 18px" 
            name=palabra> </TD>
          <TD width=66 height=19><INPUT type=submit value=Buscar name=Buscar> 
          </TD></tr>
</body>
</html>
En busca.php en reemplazas la fila del select por
$palabra=$_POST['palabra'];
$campo=$_POST['campo'];
$sql="SELECT * FROM agenda WHERE ".$campo." LIKE '%".$palabra."%' ";
  #4 (permalink)  
Antiguo 18/03/2005, 16:35
 
Fecha de Ingreso: agosto-2003
Ubicación: santiago, chile
Mensajes: 303
Antigüedad: 21 años, 3 meses
Puntos: 0
vale por la ayuda...
me da error de consulta...no se q seria
-----
cambie ".$campo." por '.$campo.' y parece q mejora..., pero en cuanto a la busqueda, no busca, es cosa de colocar Al , y me ahorra todos.

$sql="SELECT * FROM agenda WHERE '.$campo.' LIKE '%".$palabra."%' ";

Última edición por byzard; 18/03/2005 a las 16:39
  #5 (permalink)  
Antiguo 18/03/2005, 16:37
Avatar de Seppo  
Fecha de Ingreso: marzo-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.284
Antigüedad: 19 años, 8 meses
Puntos: 17
aaaaah, perdón... me olvide de aclarar que en las options tenés que fijar como value el nombre de los campos que querés que busque.
si sigue dando error por favor, decime que error da.
  #6 (permalink)  
Antiguo 18/03/2005, 16:46
 
Fecha de Ingreso: agosto-2003
Ubicación: santiago, chile
Mensajes: 303
Antigüedad: 21 años, 3 meses
Puntos: 0
los nombres de los option estan correctas, pero la busqueda no va bien...
y respecto a la consulta, esta correcto cambiar los " " por ' ?

$sql="SELECT * FROM agenda WHERE '.$campo.' LIKE '%".$palabra."%' ";

Código:
<html>
<head>
<title>Ingrese el titulo</title>
<H1>Ingrese el familia </H1>
<table border=0><tr><td>
			<FORM ACTION="busca.php">
<SELECT name=campo            size=1 
            style="FONT-SIZE: 9px; WIDTH: 300px; FONT-FAMILY: Verdana; HEIGHT: 18px"> <OPTION value=0>Selecciona el Tipo de Busqueda 
              </OPTION> <OPTION value="Familia">Familia</OPTION> <OPTION value="Negocio">Negocio</OPTION> 
              <OPTION value="Direfamilia">Direccion Familia</OPTION> <OPTION 
              value="Direnegocio">Direccion Negocio</OPTION> <OPTION value="Fonof">Fono Familia</OPTION> 
              <OPTION value="faxf">Fax Familia</OPTION> <OPTION 
              value="fonon">Fono Negocio</OPTION> <OPTION value="faxn">Fax Negocio</OPTION> 
              <OPTION value="otroa">Otroa</OPTION> <OPTION 
              value="otrob">Otrob</OPTION>
</SELECT> 
			
			</TD>
          <TD width=160 height=19>
		  <INPUT 
            style="FONT-SIZE: 9px; WIDTH: 150px; FONT-FAMILY: Verdana; HEIGHT: 18px" 
            name=palabra> </TD>
          <TD width=66 height=19><INPUT type=submit value=Buscar name=Buscar> 
          </TD></tr>
</body>
</html>

Última edición por byzard; 18/03/2005 a las 16:49
  #7 (permalink)  
Antiguo 18/03/2005, 17:04
Avatar de Seppo  
Fecha de Ingreso: marzo-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.284
Antigüedad: 19 años, 8 meses
Puntos: 17
nnono... el cambio de comillas por apostrofes no mejora la situación... vos querés que la consulta sea, por ejemplo
SELECT * FROM agenda WHERE fonof LIKE '%lala%'

".$variable." es reemplazado por una variable PHP, si ponés los apostrofes no.
$sql="SELECT * FROM agenda WHERE ".$campo." LIKE '%".$palabra."%' ";
  #8 (permalink)  
Antiguo 18/03/2005, 20:03
 
Fecha de Ingreso: agosto-2003
Ubicación: santiago, chile
Mensajes: 303
Antigüedad: 21 años, 3 meses
Puntos: 0
Cita:
Iniciado por Seppo
nnono... el cambio de comillas por apostrofes no mejora la situación... vos querés que la consulta sea, por ejemplo
SELECT * FROM agenda WHERE fonof LIKE '%lala%'

".$variable." es reemplazado por una variable PHP, si ponés los apostrofes no.
$sql="SELECT * FROM agenda WHERE ".$campo." LIKE '%".$palabra."%' ";
tengo esto como consulta

$sql="SELECT * FROM agenda WHERE ".$campo." LIKE '%".$palabra."%' ";

pero no sale error
Error en SELECT * FROM agenda WHERE LIKE '%%' :You have an error in your SQL syntax near 'LIKE '%%' ' at line 1

busca.php
Código:
?php
 $conexio = mysql_connect("zz", "zz", "zzz");
 mysql_select_db ("zzz", $conexio) OR die ("No se puede conectar");

$palabra=$_POST['palabra'];
$campo=$_POST['campo'];
$sql="SELECT * FROM agenda WHERE ".$campo." LIKE '%".$palabra."%' ";


$result = mysql_query($sql,$conexio) or die ("Error en $sql :".mysql_error());


if ($row= mysql_fetch_array($result))
{
?>
<p><b>Busqueda por familia...</b></p>
<table width="80%" border="1" cellspacing="3" cellpadding="2">

<? DO
{

?>
<TR>
 <td colspan="2">Familia: <? echo $row["familia"];?> </td>
 <td colspan="2">Negocio: <? echo $row["negocio"]; ?></td>
</tr>
<tr>
<td colspan="2">direccionF: <? echo $row["direfamilia"]; ?></td>
<td colspan="2">direccionN: <? echo $row["direnegocio"]; ?></td>
</tr>

<tr>
<td>Fono F: <? echo $row["fonof"]; ?></td>
<td>Fax F: <? echo $row["faxf"]; ?></td>
<td>fono N: <? echo $row["fonon"]; ?></td>
<td>Fax N: <? echo $row["faxn"]; ?></td>
</tr>

<tr>
<td colspan="2">aaaaaaa: <? echo $row["otroa"]; ?></td>
<td colspan="2">bbbbbbb: <? echo $row["otrob"]; ?></td>
</tr>



<?
}

while ($row=mysql_fetch_array($result));

echo "</TABLE>";
}
mysql_close ($conexio); 

?>

ahora le puse el method busca
consulta.htm
Código:
<html>
<head>
<title>Ingrese el titulo</title>
<H1>Buscar por ... </H1>
<table border=0><tr><td>
			<FORM ACTION="busca.php" METHOD="POST"> 
<SELECT name=campo            size=1 
            style="FONT-SIZE: 9px; WIDTH: 300px; FONT-FAMILY: Verdana; HEIGHT: 18px"> <OPTION value=0>Selecciona el Tipo de Busqueda 
              </OPTION> <OPTION value="Familia">Familia</OPTION> <OPTION value="Negocio">Negocio</OPTION> 
              <OPTION value="Direfamilia">Direccion Familia</OPTION> <OPTION 
              value="Direnegocio">Direccion Negocio</OPTION> <OPTION value="Fonof">Fono Familia</OPTION> 
              <OPTION value="faxf">Fax Familia</OPTION> <OPTION 
              value="fonon">Fono Negocio</OPTION> <OPTION value="faxn">Fax Negocio</OPTION> 
              <OPTION value="otroa">Otroa</OPTION> <OPTION 
              value="otrob">Otrob</OPTION>
</SELECT> 
			
			</TD>
          <TD width=160 height=19>
		  <INPUT 
            style="FONT-SIZE: 9px; WIDTH: 150px; FONT-FAMILY: Verdana; HEIGHT: 18px" 
            name=palabra> </TD>
          <TD width=66 height=19><INPUT type=submit value=Buscar name=Buscar> 
          </TD></tr>
</body>
</html>
http://www.ctk.cl/byzard/php/agenda/consulta.htm

Última edición por byzard; 18/03/2005 a las 20:12
  #9 (permalink)  
Antiguo 18/03/2005, 20:07
Avatar de Seppo  
Fecha de Ingreso: marzo-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.284
Antigüedad: 19 años, 8 meses
Puntos: 17
Oh... veo que cuando abriste el form no pusiste el method a usar...
<FORM ACTION="busca.php" METHOD="POST"> y no sé si lo subiste hasta arriba del select
  #10 (permalink)  
Antiguo 18/03/2005, 20:13
 
Fecha de Ingreso: agosto-2003
Ubicación: santiago, chile
Mensajes: 303
Antigüedad: 21 años, 3 meses
Puntos: 0
le puse el method, pero no se q pasa con el select
  #11 (permalink)  
Antiguo 18/03/2005, 20:17
Avatar de Seppo  
Fecha de Ingreso: marzo-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.284
Antigüedad: 19 años, 8 meses
Puntos: 17
que en el primer mensaje cuando pusiste la pagina estaba primero el select, las opciones, el /select y después recién abrías el formulario...

quedaría
Código:
<H1>Ingrese el familia </H1>
			<FORM ACTION="busca.php" METHOD="post">
<SELECT name=familias 
            size=1 
            style="FONT-SIZE: 9px; WIDTH: 300px; FONT-FAMILY: Verdana; HEIGHT: 18px"> <OPTION value=0>Selecciona el Tipo de Busqueda 
              </OPTION> <OPTION value=1>Familia</OPTION> <OPTION value=2>Negocio</OPTION> 
              <OPTION value=3>Direccion Familia</OPTION> <OPTION 
              value=4>Direccion Negocio</OPTION> <OPTION value=5>Fono Familia</OPTION> 
              <OPTION value=6>Fax Familia</OPTION> <OPTION 
              value=7>Fono Negocio</OPTION> <OPTION value=8>Fax Negocio</OPTION> 
              <OPTION value=9>Otroa</OPTION> <OPTION 
              value=10>Otrob</OPTION>
</SELECT> 
			
			</TD>
          <TD width=160 height=19>
		  <INPUT 
            style="FONT-SIZE: 9px; WIDTH: 150px; FONT-FAMILY: Verdana; HEIGHT: 18px" 
            name=palabra> </TD>
          <TD width=66 height=19><INPUT type=submit value=Buscar name=Buscar> 
          </TD>


</body>
</html>
  #12 (permalink)  
Antiguo 18/03/2005, 20:22
 
Fecha de Ingreso: agosto-2003
Ubicación: santiago, chile
Mensajes: 303
Antigüedad: 21 años, 3 meses
Puntos: 0
me refiero al select, de bd, la consulta de mysql me sale error
  #13 (permalink)  
Antiguo 18/03/2005, 20:28
Avatar de Seppo  
Fecha de Ingreso: marzo-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.284
Antigüedad: 19 años, 8 meses
Puntos: 17
ah... copías y pegás el error? a ver si recupera las variables bien o no
  #14 (permalink)  
Antiguo 18/03/2005, 20:41
 
Fecha de Ingreso: agosto-2003
Ubicación: santiago, chile
Mensajes: 303
Antigüedad: 21 años, 3 meses
Puntos: 0
$palabra=$_POST['palabra'];
$campo=$_POST['campo'];
$sql="SELECT * FROM agenda WHERE ".$campo." LIKE '%".$palabra."%' ";




Error en SELECT * FROM agenda WHERE LIKE '%%' :You have an error in your SQL syntax near 'LIKE '%%' ' at line 1
  #15 (permalink)  
Antiguo 18/03/2005, 20:48
Avatar de Seppo  
Fecha de Ingreso: marzo-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.284
Antigüedad: 19 años, 8 meses
Puntos: 17
no lo puedo creer... soy un boludo... toy en cualquiera (viernes a la noche lara lara)

consulta.htm
Código:
<html>
<head>
<title>Ingrese el titulo</title>
<H1>Buscar por ... </H1>
<table border=0><tr><td>
<FORM ACTION="busca.php" METHOD="POST"> 
<SELECT name=campo size=1 style="FONT-SIZE: 9px; WIDTH: 300px; FONT-FAMILY: Verdana; HEIGHT: 18px">
<OPTION value=0>Selecciona el Tipo de Busqueda </OPTION>
<OPTION value="Familia">Familia</OPTION>
<OPTION value="Negocio">Negocio</OPTION> 
<OPTION value="Direfamilia">Direccion Familia</OPTION>
<OPTION value="Direnegocio">Direccion Negocio</OPTION>
<OPTION value="Fonof">Fono Familia</OPTION> 
<OPTION value="faxf">Fax Familia</OPTION>
<OPTION value="fonon">Fono Negocio</OPTION>
<OPTION value="faxn">Fax Negocio</OPTION> 
<OPTION value="otroa">Otroa</OPTION>
<OPTION value="otrob">Otrob</OPTION>
</SELECT> 
</TD>
<TD width=160 height=19>
<INPUT style="FONT-SIZE: 9px; WIDTH: 150px; FONT-FAMILY: Verdana; HEIGHT: 18px" name=palabra></TD>
<TD width=66 height=19><INPUT type=submit value=Buscar name=Buscar> 
</TD></tr>
</body>
</html>
  #16 (permalink)  
Antiguo 18/03/2005, 21:34
 
Fecha de Ingreso: agosto-2003
Ubicación: santiago, chile
Mensajes: 303
Antigüedad: 21 años, 3 meses
Puntos: 0
vale por toda la ayuda, ahora si va
  #17 (permalink)  
Antiguo 18/03/2005, 22:54
Avatar de Seppo  
Fecha de Ingreso: marzo-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.284
Antigüedad: 19 años, 8 meses
Puntos: 17
costó, eeeeeeeeeh =P
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 14:07.