Foros del Web » Programando para Internet » PHP »

Buscador con grupo de opciones

Estas en el tema de Buscador con grupo de opciones en el foro de PHP en Foros del Web. Hola gracia x leerme: Debo hacer un buscado con un grupo de opciones y no me marca errores pero no me devuelve ningun resultado. estoy ...
  #1 (permalink)  
Antiguo 28/07/2005, 11:32
 
Fecha de Ingreso: julio-2005
Mensajes: 31
Antigüedad: 18 años, 8 meses
Puntos: 0
Pregunta Buscador con grupo de opciones

Hola gracia x leerme:
Debo hacer un buscado con un grupo de opciones y no me marca errores pero no me devuelve ningun resultado. estoy trabajando con php, mysql y dreamweaver.
Necesito hacer consultas q involucran varias tablas.
Esto es el codigo:para hacer la conexion
<?PHP $bd_servidor = "localhost";
$bd_usuario = "root";
$bd_contraseña = "xxxxxxxxxxxx";
$bd_bdname = "nom_mibd";
$bd_tabla1 = "tab1"; // Tabla donde se harán las búsquedas
$bd_tabla2 = "tab2";
$bd_tabla3 = "tab3";
$bd_tabla4 = "tab3";
$link = mysql_connect($bd_servidor,$bd_usuario,$bd_contras eña);
mysql_select_db($bd_bdname,$link);
?>

//luego tengo una forma con un grupo de opciones radio (la edite)
<form name="form1" method="POST" action="notica.php">
<label>
<input type="radio" name="GrupoOpciones1" value="num">
<label>
<label>
<input type="radio" name="GrupoOpciones1" value="med">
Medio</label>
<br>
<label>
<input type="radio" name="GrupoOpciones1" value="niv">
Nivel</label>
</p>
</form>

//otra forma donde tngo el boton
<form name="form2" method="post" action="noticia.php" >
<input type="text" name="criterio">
<input type="submit" name="enviar" value="Buscar">
</form>

//luego en donde muestro las noticias tengo esto:
<?php
if(isset($_POST['enviar'])){
// Solo se ejecuta si se ha enviado el formulario si se ha oprimido el boton de Buscar
if (isset($_POST['GrupoOpciones1'])){
if ($_POST['GrupoOpciones1'] = 'num')
$result = mysql_query("SELECT * FROM noticia WHERE id_noticia LIKE '%{$_POST['criterio']}%'", $link);
if ($_POST['GrupoOpciones1'] = 'med')
$result = mysql_query("SELECT * FROM noticia left JOIN medio ON noticia.id_medio = medio.id_medio WHERE medio.nombre_medio LIKE '%{$_POST['criterio']}%'", $link);
if ($_POST['GrupoOpciones1'] = 'niv')
$result = mysql_query("SELECT * FROM noticia left JOIN nivel ON noticia.id_nivel_noticia=nivel.id_nivel_noticia WHERE noticia.nivel LIKE '%{$_POST['criterio']}%'", $link);
if ($_POST['GrupoOpciones1'] = 'fec')
$result = mysql_query("SELECT * FROM noticia WHERE fecha_noticia LIKE '%{$_POST['criterio']}%'", $link);
If ($_POST['GrupoOpciones1'] = 'tit')
$result = mysql_query("SELECT * FROM noticia WHERE titulo_noticia LIKE '%{$_POST['criterio']}%'", $link);
if ($_POST['GrupoOpciones1'] = 'con')
$result = mysql_query("SELECT * FROM noticia WHERE contenido_noticia LIKE '%{$_POST['criterio']}%'", $link);
if ($_POST['GrupoOpciones1'] = 'aut')
$result = mysql_query("SELECT * FROM noticia WHERE autor_noticia LIKE '%{$_POST['criterio']}%'", $link);
$found = false;
while ($row = mysql_fetch_array($result)) {
$found = true;
echo "<p>";
foreach($row as $nombre_campo => $valor_campo)
{if(is_int($nombre_campo))
{continue;}
echo "<b>".$nombre_campo."</b> : ".$valor_campo."<br>";}
echo '"</p>"';}
if(!$found)
{echo "No se encontró la palabra introducida";}
}
}
?>
pero nunca encuentra nada y no tengo idea
alguien puede ayudarme x favor?
mm :(

Última edición por lice; 28/07/2005 a las 11:51
  #2 (permalink)  
Antiguo 28/07/2005, 12:02
 
Fecha de Ingreso: julio-2005
Mensajes: 31
Antigüedad: 18 años, 8 meses
Puntos: 0
MM tal vez me la fume, o q quiero saber es como hacer un buscador inclcuyendo variables de un grupo de opciones y que busque en la tabla o en mas de una tabla dependiendo d lo que el usuario elija ne el grupo de opciones.
  #3 (permalink)  
Antiguo 28/07/2005, 16:44
Avatar de aichiche  
Fecha de Ingreso: marzo-2004
Ubicación: Valparaíso
Mensajes: 35
Antigüedad: 20 años
Puntos: 0
jaja he hecho de más de 20 opciones en diferentes tablas.. ;)..
mi la cosa es relativamente facil.
en la página que recibe las variables del formulario
en una variable almacenas el select básico
es decir por ejemplo $sql="select tb1.campo1,tb2,campo2,tb3.campo3 from tb1,tb2,tb3 where1=1"...

importante el 1=1..ya que te dará la opción de que se desplieguen todos lo datos en caso de no hacber filtro.

luego por cada opción haces los siguiente
if($opcion1!=""){$op1=" and tb1.campo=valor";}else{$op1="";} etc...
el espacio antes del and es importante

luego simple
concatenas $sql=$sql.$op1.$op2.....etc
y ejecutas la consulta...
asi se te arma dinámicamente...


bueno usando el moismo concepti y poniendote más esquicito puedes hace r lo mismo con el texto luego del from para armar joins etcc... y copncatener en el select.. etc.

bueno espero que de algo ayude
__________________
"Sólo dime qué quieres.."
  #4 (permalink)  
Antiguo 29/07/2005, 09:21
 
Fecha de Ingreso: julio-2005
Mensajes: 31
Antigüedad: 18 años, 8 meses
Puntos: 0
Que quieres decir con el select basico? T refieres a un selectsote gigante, o sea una consulta q incluya todo de todo??
Deja veo que onda, estoy haciendo eso q me dices a ver si lo enteni bien
Gracias
Atte la fumada
  #5 (permalink)  
Antiguo 29/07/2005, 11:00
 
Fecha de Ingreso: julio-2005
Mensajes: 31
Antigüedad: 18 años, 8 meses
Puntos: 0
No entendi muy bien eso de opcion y de campo, la variable d campo c refiere a cualquier campo o como???
estoy mas confundida q nunca
Gracias x fa ayudenme
  #6 (permalink)  
Antiguo 29/07/2005, 12:25
Avatar de aichiche  
Fecha de Ingreso: marzo-2004
Ubicación: Valparaíso
Mensajes: 35
Antigüedad: 20 años
Puntos: 0
con el select básico me refiero a la primera parte de la consulta, pues supongo que ya que es un filtro de búsqueda loq ue estás haciendo, los tipos de datos a mostrar son los mismos, lo que varía es la cantidad (los que pasaron el filtro).

entonces..el select básico de la consulta sql sería como dije anteriromente "select ( listadoi de tablas.campo) from (tablas) where 1=1"
es importante que los campos a los que refiera el select sean indicados con la tablas a la que pertenecen.

campos son los campos te tus tablas, opciones son los items de tu formualrio...
al al crear luego la lista de if..como indique anteriormente..estas creando las restricciones a tu select ...luego concatenas todas la variables como indique..

el select si lo muestras pro pantalla es henorme..pero si lo vez lógicamente así debe ser ya que son muchas tus posibles variables de filtro.

espero que haya quedado más claro :D
Salu2
__________________
"Sólo dime qué quieres.."
  #7 (permalink)  
Antiguo 01/08/2005, 09:38
 
Fecha de Ingreso: julio-2005
Mensajes: 31
Antigüedad: 18 años, 8 meses
Puntos: 0
Hola:
Si me quedo más claro, el select es un producto de todas las tablas y en base a lo q el usuario busque es lo q obtendra, eso es el filtro ¿no es asi?
Ahora, tengo problema con los items del formulario. Este es el que hice (por supuesto que lleva estilos etc, pero lo omiti por el espacio.
<form name="form1" method="POST" action="resultadosconsulta.php">
<p>
<label><input type="radio" name="GrupoOpciones1" value="num">No.de noticia</label>
<br>
<label><input type="radio" name="GrupoOpciones1" value="med">Medio</label>
<br>
<label><input type="radio" name="GrupoOpciones1" value="niv">Nivel</label>
<br>
<label><input type="radio" name="GrupoOpciones1" value="fec">Fecha</label>
<br>
<label><input type="radio" name="GrupoOpciones1" value="tit">T&iacute;tulo</label>
<br>
<label><input type="radio" name="GrupoOpciones1" value="con">Contenido</label>
<br>
<label><input type="radio" name="GrupoOpciones1" value="aut">Autor</label>
</p>
</form>
Entonces segun entiendo mis items son GrupoOpciones1, o cada uno debe llamarse diferente?
y los valores q toman son por ejemplo "num", "fec", etc.
Se puede hacer una comparacion asi?:
if($_POST['GrupoOpciones1.value'] = 'num')
por q no me la acepta, o deberia cambiar a GrupoOpciones1, GrupoOpciones2, etc...???
y comparar asi:
if(isset($_POST['GrupoOpciones1']))
if(isset($_POST['GrupoOpciones2']))
o tiene algo q ver el checked??
:( confundida
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 09:15.