Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Problema con buscador en PHP

Estas en el tema de Problema con buscador en PHP en el foro de PHP en Foros del Web. Saludos muchachos, Estoy haciendo un buscador donde al hacer la consulta me arroja un error que no el consigo la vuelta.. me dice que "final ...

  #1 (permalink)  
Antiguo 27/02/2013, 08:22
Avatar de T4ke0veR  
Fecha de Ingreso: agosto-2007
Ubicación: Quito - Ecuador
Mensajes: 1.720
Antigüedad: 16 años, 8 meses
Puntos: 28
Problema con buscador en PHP

Saludos muchachos,

Estoy haciendo un buscador donde al hacer la consulta me arroja un error que no el consigo la vuelta.. me dice que "final inesperado" pero no se donde deje de cerrar pues busco y busco y no veo el error, quizas alguno de ustedes que sea mas diestro pueda ayudarme...

aqui esta el codigo..

Código PHP:
<?php
//cadena de conexion
mysql_connect("localhost","usuario","clave");
//DEBO PREPARAR LOS TEXTOS QUE VOY A BUSCAR si la cadena existe
if ($busqueda<>''){
   
//CUENTA EL NUMERO DE PALABRAS
   
$trozos=explode(" ",$busqueda);
   
$numero=count($trozos);
  if (
$numero==1) {
   
//SI SOLO HAY UNA PALABRA DE BUSQUEDA SE ESTABLECE UNA INSTRUCION CON LIKE
   
$cadbusca="SELECT descripcion, titulo FROM hoteles WHERE descripcion LIKE '%$busqueda%' OR titulo LIKE '%$busqueda%' LIMIT 50";
  } elseif (
$numero>1) {
  
//SI HAY UNA FRASE SE UTILIZA EL ALGORTIMO DE BUSQUEDA AVANZADO DE MATCH AGAINST
  //busqueda de frases con mas de una palabra y un algoritmo especializado
  
$cadbusca="SELECT descripcion, titulo , MATCH ( titulo, descripcion ) AGAINST ( '$busqueda' ) AS Score FROM hoteles WHERE MATCH ( titulo, descripcion ) AGAINST ( '$busqueda' ) ORDER BY titulo ASC LIMIT 50";
}
$result=mysql("morr0113_2012"$cadbusca);
While(
$row=mysql_fetch_object($result))
{
   
//Mostramos los titulos de los articulos o lo que deseemos...
  
$descripcion=$row->descripcion;
   
$titulo=$row->titulo;
   echo 
$descripcion." - ".$titulo."<br>";;
}
?>
__________________
Diseño gráfico, Web, imagen corporativa, publicidad ...
  #2 (permalink)  
Antiguo 27/02/2013, 08:44
Avatar de catpaw  
Fecha de Ingreso: mayo-2010
Ubicación: xalapa
Mensajes: 856
Antigüedad: 13 años, 11 meses
Puntos: 23
Respuesta: Problema con buscador en PHP

Creo que te falta cerrar el elseif
  #3 (permalink)  
Antiguo 27/02/2013, 09:04
Avatar de T4ke0veR  
Fecha de Ingreso: agosto-2007
Ubicación: Quito - Ecuador
Mensajes: 1.720
Antigüedad: 16 años, 8 meses
Puntos: 28
Respuesta: Problema con buscador en PHP

esta cerrado hermano... fijate para que veas!!!!
__________________
Diseño gráfico, Web, imagen corporativa, publicidad ...
  #4 (permalink)  
Antiguo 27/02/2013, 09:05
Avatar de informacionsys  
Fecha de Ingreso: mayo-2011
Ubicación: Bogota D.C
Mensajes: 793
Antigüedad: 12 años, 11 meses
Puntos: 76
Respuesta: Problema con buscador en PHP

hum

pues yo lo veo abierto compa... cierra el else if
  #5 (permalink)  
Antiguo 27/02/2013, 09:09
Avatar de T4ke0veR  
Fecha de Ingreso: agosto-2007
Ubicación: Quito - Ecuador
Mensajes: 1.720
Antigüedad: 16 años, 8 meses
Puntos: 28
Respuesta: Problema con buscador en PHP

Cita:
Iniciado por informacionsys Ver Mensaje
hum

pues yo lo veo abierto compa... cierra el else if
Tienen razon.. cerre y no me da el error... pero aun no me muestra resultados... Score es un algoritmo??? o algo?
__________________
Diseño gráfico, Web, imagen corporativa, publicidad ...
  #6 (permalink)  
Antiguo 27/02/2013, 09:13
Avatar de informacionsys  
Fecha de Ingreso: mayo-2011
Ubicación: Bogota D.C
Mensajes: 793
Antigüedad: 12 años, 11 meses
Puntos: 76
Respuesta: Problema con buscador en PHP

hola

en esta linea

Código PHP:
Ver original
  1. $result=mysql("morr0113_2012", $cadbusca);

No deberia ir mas bien

Código PHP:
Ver original
  1. $result=mysql_query($cadbusca, $conexion);

checa este manual de conexion

http://www.pablin.com.ar/computer/cu...l/conexion.htm
  #7 (permalink)  
Antiguo 27/02/2013, 09:16
Avatar de T4ke0veR  
Fecha de Ingreso: agosto-2007
Ubicación: Quito - Ecuador
Mensajes: 1.720
Antigüedad: 16 años, 8 meses
Puntos: 28
Respuesta: Problema con buscador en PHP

mysql_connect("localhost","usuario","clave");

revisa para que veas... esta al principio...

algo asi???

Código PHP:
<?php
//cadena de conexion
$conexion mysql_connect("localhost","morr0113_admin","morro2012");
//DEBO PREPARAR LOS TEXTOS QUE VOY A BUSCAR si la cadena existe
if ($busqueda<>''){
   
//CUENTA EL NUMERO DE PALABRAS
   
$trozos=explode(" ",$busqueda);
   
$numero=count($trozos);
  if (
$numero==1) {
   
//SI SOLO HAY UNA PALABRA DE BUSQUEDA SE ESTABLECE UNA INSTRUCION CON LIKE
   
$cadbusca="SELECT descripcion, titulo FROM hoteles WHERE descripcion LIKE '%$busqueda%' OR titulo LIKE '%$busqueda%' LIMIT 50";
  } elseif (
$numero>1) {
  
//SI HAY UNA FRASE SE UTILIZA EL ALGORTIMO DE BUSQUEDA AVANZADO DE MATCH AGAINST
  //busqueda de frases con mas de una palabra y un algoritmo especializado
  
$cadbusca="SELECT descripcion, titulo , MATCH ( titulo, descripcion ) AGAINST ( '$busqueda' ) AS Score FROM hoteles WHERE MATCH ( titulo, descripcion ) AGAINST ( '$busqueda' ) ORDER BY titulo ASC LIMIT 50";
}
$result=mysql("morr0113_2012"$conexion);
While(
$row=mysql_fetch_object($result))
{
   
//Mostramos los titulos de los articulos o lo que deseemos...
  
$descripcion=$row->descripcion;
   
$titulo=$row->titulo;
   echo 
$descripcion." - ".$titulo."<br>";;
   } }
?>
__________________
Diseño gráfico, Web, imagen corporativa, publicidad ...

Última edición por T4ke0veR; 27/02/2013 a las 09:36
  #8 (permalink)  
Antiguo 27/02/2013, 10:17
Avatar de catpaw  
Fecha de Ingreso: mayo-2010
Ubicación: xalapa
Mensajes: 856
Antigüedad: 13 años, 11 meses
Puntos: 23
Respuesta: Problema con buscador en PHP

ya pero tu no puedes poner así:

$result=mysql("morr0113_2012", $conexion);

porque en ningun momento estas ejecutando tu select, por dos cosas:

- no le estas pasando la consulta que esta en la variable $cadbusca
- no le estas poniendo mysql y no la funcion mysql_query

para que lo ejecutes debes poner la variable que contiene tu consulta dentro del mysql_query como bien te apunta informacionsys

o poner esto:

$result=mysql_query(""SELECT descripcion, titulo , MATCH ( titulo, descripcion ) AGAINST ( '$busqueda' ) AS Score FROM hoteles WHERE MATCH ( titulo, descripcion ) AGAINST ( '$busqueda' ) ORDER BY titulo ASC LIMIT 50", $conexion);

o lo que es igual:

$result=mysql_query($cadbusca, $conexion);
  #9 (permalink)  
Antiguo 27/02/2013, 10:24
Avatar de T4ke0veR  
Fecha de Ingreso: agosto-2007
Ubicación: Quito - Ecuador
Mensajes: 1.720
Antigüedad: 16 años, 8 meses
Puntos: 28
Respuesta: Problema con buscador en PHP

Quedo así
Código PHP:
<?php
//cadena de conexion
$conexion mysql_connect("localhost","morr0113_admin","morro2012");
mysql_select_db("morr0113_2012"$conexion);
//DEBO PREPARAR LOS TEXTOS QUE VOY A BUSCAR si la cadena existe
if ($busqueda<>''){
   
//CUENTA EL NUMERO DE PALABRAS
   
$trozos=explode(" ",$busqueda);
   
$numero=count($trozos);
  if (
$numero==1) {
   
//SI SOLO HAY UNA PALABRA DE BUSQUEDA SE ESTABLECE UNA INSTRUCION CON LIKE
   
$result=mysql_query("SELECT descripcion, titulo FROM hoteles WHERE descripcion LIKE '%$busqueda%' OR titulo LIKE '%$busqueda%' LIMIT 50"$conexion);
  } elseif (
$numero>1) {
  
//SI HAY UNA FRASE SE UTILIZA EL ALGORTIMO DE BUSQUEDA AVANZADO DE MATCH AGAINST
  //busqueda de frases con mas de una palabra y un algoritmo especializado
  
$result=mysql_query("SELECT descripcion, titulo , MATCH ( titulo, descripcion ) AGAINST ( '$busqueda' ) AS Score FROM hoteles WHERE MATCH ( titulo, descripcion ) AGAINST ( '$busqueda' ) ORDER BY titulo ASC LIMIT 50"$conexion);
}
$result=mysql("morr0113_2012"$conexion);
While(
$row=mysql_fetch_object($result))
{
   
//Mostramos los titulos de los articulos o lo que deseemos...
  
$descripcion=$row->descripcion;
   
$titulo=$row->titulo;
   echo 
$descripcion." - ".$titulo."<br>";
   } }
?>
Pero aun sigue sin mostrar resultados :(
__________________
Diseño gráfico, Web, imagen corporativa, publicidad ...
  #10 (permalink)  
Antiguo 27/02/2013, 10:38
Avatar de catpaw  
Fecha de Ingreso: mayo-2010
Ubicación: xalapa
Mensajes: 856
Antigüedad: 13 años, 11 meses
Puntos: 23
Respuesta: Problema con buscador en PHP

No has entendido como formular la consulta, le has cambiado el $result pero vuelves asignar un result antes del mysql_fetch_object, lo siento pero asi no te funcionara

y creo que tienes mal estructurados tus condiciones,

bueno te marca algun error o algo?

Mira nose prueba tal cual te lo pongo a continuacion:

Código PHP:
//cadena de conexion 
$conexion mysql_connect("localhost","morr0113_admin","morro2012"); 
mysql_select_db("morr0113_2012"$conexion); 
//DEBO PREPARAR LOS TEXTOS QUE VOY A BUSCAR si la cadena existe 
if ($busqueda<>''){ 
   
//CUENTA EL NUMERO DE PALABRAS 
   
$trozos=explode(" ",$busqueda); 
   
$numero=count($trozos); 
   if (
$numero==1) { 
         
//SI SOLO HAY UNA PALABRA DE BUSQUEDA SE ESTABLECE UNA INSTRUCION CON LIKE 
         
$sql="SELECT descripcion, titulo FROM hoteles WHERE descripcion LIKE '%$busqueda%' OR titulo LIKE '%$busqueda%' LIMIT 50";
   } elseif (
$numero>1) { 
         
//SI HAY UNA FRASE SE UTILIZA EL ALGORTIMO DE BUSQUEDA AVANZADO DE MATCH AGAINST
         //busqueda de frases con mas de una palabra y un algoritmo especializado 
         
$sql="SELECT descripcion, titulo , MATCH ( titulo, descripcion ) AGAINST ( '$busqueda' ) AS Score FROM hoteles WHERE MATCH ( titulo, descripcion ) AGAINST ( '$busqueda' ) ORDER BY titulo ASC LIMIT 50";
    }
   
$result=mysql($sql$conexion); 
   While(
$row=mysql_fetch_object($result)) { 
      
//Mostramos los titulos de los articulos o lo que deseemos... 
      
$descripcion=$row->descripcion
      
$titulo=$row->titulo
      echo 
$descripcion." - ".$titulo."<br>"
   }

  #11 (permalink)  
Antiguo 27/02/2013, 10:43
Avatar de T4ke0veR  
Fecha de Ingreso: agosto-2007
Ubicación: Quito - Ecuador
Mensajes: 1.720
Antigüedad: 16 años, 8 meses
Puntos: 28
Respuesta: Problema con buscador en PHP

Muestra esto

Warning: mysql() expects parameter 2 to be string, resource given in /home/morr0113/public_html/buscar.php on line 19

Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /home/morr0113/public_html/buscar.php on line 20
__________________
Diseño gráfico, Web, imagen corporativa, publicidad ...
  #12 (permalink)  
Antiguo 27/02/2013, 10:48
Avatar de catpaw  
Fecha de Ingreso: mayo-2010
Ubicación: xalapa
Mensajes: 856
Antigüedad: 13 años, 11 meses
Puntos: 23
Respuesta: Problema con buscador en PHP

Esos warning son con mi ejemplo o con tu codigo?

De todos modos tambien si ninguna condicion se cumple el $cadbusca estara vacia y al ejecutar la consulta $result=mysql_query($cadbusca,$conexion) marcara error

perdon mi ejemplo le falto mysql_query, mejor aca te lo vuelvo a poner:

Código PHP:
//cadena de conexion 
$conexion mysql_connect("localhost","morr0113_admin","morro2012"); 
mysql_select_db("morr0113_2012"$conexion); 
//DEBO PREPARAR LOS TEXTOS QUE VOY A BUSCAR si la cadena existe 
if ($busqueda<>''){ 
   
//CUENTA EL NUMERO DE PALABRAS 
   
$trozos=explode(" ",$busqueda); 
   
$numero=count($trozos); 
   if (
$numero==1) { 
         
//SI SOLO HAY UNA PALABRA DE BUSQUEDA SE ESTABLECE UNA INSTRUCION CON LIKE 
         
$cadbusca="SELECT descripcion, titulo FROM hoteles WHERE descripcion LIKE '%$busqueda%' OR titulo LIKE '%$busqueda%' LIMIT 50";
   } elseif (
$numero>1) { 
         
//SI HAY UNA FRASE SE UTILIZA EL ALGORTIMO DE BUSQUEDA AVANZADO DE MATCH AGAINST
         //busqueda de frases con mas de una palabra y un algoritmo especializado 
         
$cadbusca="SELECT descripcion, titulo , MATCH ( titulo, descripcion ) AGAINST ( '$busqueda' ) AS Score FROM hoteles WHERE MATCH ( titulo, descripcion ) AGAINST ( '$busqueda' ) ORDER BY titulo ASC LIMIT 50";
   }
   
$result=mysql_query($cadbusca$conexion); 
   While(
$row=mysql_fetch_object($result)) { 
      
//Mostramos los titulos de los articulos o lo que deseemos... 
      
$descripcion=$row->descripcion
      
$titulo=$row->titulo
      echo 
$descripcion." - ".$titulo."<br>"
   }

  #13 (permalink)  
Antiguo 27/02/2013, 10:52
Avatar de T4ke0veR  
Fecha de Ingreso: agosto-2007
Ubicación: Quito - Ecuador
Mensajes: 1.720
Antigüedad: 16 años, 8 meses
Puntos: 28
Respuesta: Problema con buscador en PHP

con tu codigo... de verdad no se que ocurre, pues ahora los resultados no los imprime...

fijate

http://www.morrocoycincoestrellas.com/probando.php
__________________
Diseño gráfico, Web, imagen corporativa, publicidad ...
  #14 (permalink)  
Antiguo 27/02/2013, 11:01
Avatar de catpaw  
Fecha de Ingreso: mayo-2010
Ubicación: xalapa
Mensajes: 856
Antigüedad: 13 años, 11 meses
Puntos: 23
Respuesta: Problema con buscador en PHP

Bueno es que en realidad la logica debes revisarla tu, aca lo importante es que la consulta se arma de:

la conexion:
$conexion = mysql_connect("localhost","morr0113_admin","morro2 012");

seleccionar la base:
mysql_select_db("morr0113_2012", $conexion);

la consulta:
$cadbusca="SELECT descripcion, titulo FROM hoteles WHERE descripcion LIKE '%$busqueda%' OR titulo LIKE '%$busqueda%' LIMIT 50";

ejecutar la consulta:
$result=mysql_query($cadbusca, $conexion);

recorrer resultados:
While($row=mysql_fetch_object($result)) {

}

Revisa tus condiciones, donde abren y donde cierran, eso no lo se yo como deberia ir
  #15 (permalink)  
Antiguo 27/02/2013, 11:03
Avatar de T4ke0veR  
Fecha de Ingreso: agosto-2007
Ubicación: Quito - Ecuador
Mensajes: 1.720
Antigüedad: 16 años, 8 meses
Puntos: 28
Respuesta: Problema con buscador en PHP

Ok.. pero como chequeo que la consulta este funcionando perfectamente??? hay alguna linea de coddigo???
__________________
Diseño gráfico, Web, imagen corporativa, publicidad ...
  #16 (permalink)  
Antiguo 27/02/2013, 11:06
Avatar de catpaw  
Fecha de Ingreso: mayo-2010
Ubicación: xalapa
Mensajes: 856
Antigüedad: 13 años, 11 meses
Puntos: 23
Respuesta: Problema con buscador en PHP

Puedes hacerla directamente a la base de datos, las dos posibles consultas y fijate que resultados arroja, puede ser que no estan bien formuladas tambien

despues verifica que trae la variable $busqueda para que veas en que condicion entra si en la de $numero==1 o $numero>1

te recomiendo imprimir todas las variables

y tambien imprime $cadbusqueda para ver como esta quedando la consulta
  #17 (permalink)  
Antiguo 27/02/2013, 11:18
Avatar de T4ke0veR  
Fecha de Ingreso: agosto-2007
Ubicación: Quito - Ecuador
Mensajes: 1.720
Antigüedad: 16 años, 8 meses
Puntos: 28
Respuesta: Problema con buscador en PHP

Bueno al parecer el formulario no esta pasando la variable...
hice esto
Código PHP:
echo mysql_errno($conexion) . ": " mysql_error($conexion) . "\n";
echo 
"".$busqueda."" 
En errores me da 0 y cuando imprimo la variable no me muestra nada.. estoy en lo correcto?

mi formulario
Código PHP:
<form method="POST" action="buscar.php"><input type="text" name="busqueda" size="20" id="busqueda"><br>
         <
input type="submit" value="busqueda" name="busqueda" id="busqueda">
</
form
__________________
Diseño gráfico, Web, imagen corporativa, publicidad ...

Última edición por T4ke0veR; 27/02/2013 a las 11:20 Razón: faltó información
  #18 (permalink)  
Antiguo 27/02/2013, 11:39
Avatar de catpaw  
Fecha de Ingreso: mayo-2010
Ubicación: xalapa
Mensajes: 856
Antigüedad: 13 años, 11 meses
Puntos: 23
Respuesta: Problema con buscador en PHP

Bueno en el codigo que muestras en ningun momento la estas recibiendo

$busqueda = $_POST['busqueda']; echo $busqueda;
  #19 (permalink)  
Antiguo 27/02/2013, 11:44
Avatar de T4ke0veR  
Fecha de Ingreso: agosto-2007
Ubicación: Quito - Ecuador
Mensajes: 1.720
Antigüedad: 16 años, 8 meses
Puntos: 28
Respuesta: Problema con buscador en PHP

ajajajajajaja ya va hermano, estoy muerto de la risa pero del coraje... no se si es que soy muy bruto para esto o que...
fijate
Código PHP:
<?php
 $busqueda 
$_POST['busqueda'];
 echo 
$busqueda;
//cadena de conexion 
$conexion mysql_connect("localhost","morr0113_admin","morro2012"); 
mysql_select_db("morr0113_2012"$conexion); 
//DEBO PREPARAR LOS TEXTOS QUE VOY A BUSCAR si la cadena existe 
if ($busqueda<>''){ 
   
//CUENTA EL NUMERO DE PALABRAS 
   
$trozos=explode(" ",$busqueda); 
   
$numero=count($trozos); 
   if (
$numero==1) { 
         
//SI SOLO HAY UNA PALABRA DE BUSQUEDA SE ESTABLECE UNA INSTRUCION CON LIKE 
         
$cadbusca="SELECT descripcion, titulo FROM hoteles WHERE descripcion LIKE '%$busqueda%' OR titulo LIKE '%$busqueda%' LIMIT 50";
   } elseif (
$numero>1) { 
         
//SI HAY UNA FRASE SE UTILIZA EL ALGORTIMO DE BUSQUEDA AVANZADO DE MATCH AGAINST
         //busqueda de frases con mas de una palabra y un algoritmo especializado 
         
$cadbusca="SELECT descripcion, titulo , MATCH ( titulo, descripcion ) AGAINST ( '$busqueda' ) AS Score FROM hoteles WHERE MATCH ( titulo, descripcion ) AGAINST ( '$busqueda' ) ORDER BY titulo ASC LIMIT 50 or die(mysql_error()";
         
   }
   
$result=mysql_query($cadbusca$conexion); 
   While(
$row=mysql_fetch_object($result)) { 
      
//Mostramos los titulos de los articulos o lo que deseemos... 
      
$descripcion=$row->descripcion
      
$titulo=$row->titulo
      echo 
$descripcion." - ".$titulo."<br>"
   }
}
echo 
mysql_errno($conexion) . ": " mysql_error($conexion) . "\n";
?>
http://www.morrocoycincoestrellas.com/probando.php

ve lo que da de resultado al buscar
__________________
Diseño gráfico, Web, imagen corporativa, publicidad ...
  #20 (permalink)  
Antiguo 27/02/2013, 12:12
Avatar de catpaw  
Fecha de Ingreso: mayo-2010
Ubicación: xalapa
Mensajes: 856
Antigüedad: 13 años, 11 meses
Puntos: 23
Respuesta: Problema con buscador en PHP

ya vi tu error en el form tienes los dos inputs con name igual, esto no puede ser, deja el imput text con name='busqueda' y al input submit no es necesario que le pongas name ni id y prueba
  #21 (permalink)  
Antiguo 27/02/2013, 12:18
Avatar de T4ke0veR  
Fecha de Ingreso: agosto-2007
Ubicación: Quito - Ecuador
Mensajes: 1.720
Antigüedad: 16 años, 8 meses
Puntos: 28
Respuesta: Problema con buscador en PHP

Jajaja si eso vi.. ese era el error... pero lo que si noto es que solo me funciona colocando una sola palabra... si digo por ejemplo "hoteles en tucacas" me sale un error en vez de mostrarme las coincidencias que si estan en la base de datos...
__________________
Diseño gráfico, Web, imagen corporativa, publicidad ...
  #22 (permalink)  
Antiguo 27/02/2013, 12:25
Avatar de catpaw  
Fecha de Ingreso: mayo-2010
Ubicación: xalapa
Mensajes: 856
Antigüedad: 13 años, 11 meses
Puntos: 23
Respuesta: Problema con buscador en PHP

pero recibes la frase completa o solo la primer palabra?

y bueno debe ser por estas instrucciones aca:

$trozos=explode(" ",$busqueda);
$numero=count($trozos);

no se porque haces el explode, bueno a ver cual es la idea de separar busqueda??

como es la consulta que deseas realizar?

que quieres obtener de ella?
  #23 (permalink)  
Antiguo 27/02/2013, 12:32
Avatar de T4ke0veR  
Fecha de Ingreso: agosto-2007
Ubicación: Quito - Ecuador
Mensajes: 1.720
Antigüedad: 16 años, 8 meses
Puntos: 28
Respuesta: Problema con buscador en PHP

bueno eso es una pagina que es un directoria comercial... por ejemplo si quiero obtener hoteles en miami coloco mi palabra y que el me liste eso... ahora bien.. si coloca la frase me lanza este error
Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /home/morr0113/public_html/buscar.php on line 22
si coloco una sola palabra si me lo hace...
__________________
Diseño gráfico, Web, imagen corporativa, publicidad ...
  #24 (permalink)  
Antiguo 27/02/2013, 12:54
Avatar de catpaw  
Fecha de Ingreso: mayo-2010
Ubicación: xalapa
Mensajes: 856
Antigüedad: 13 años, 11 meses
Puntos: 23
Respuesta: Problema con buscador en PHP

Bueno yo en tu lugar usaria un simple like en la consulta y me ahorro eso del explode hasta las condiciones

y para recorrer los registros un mysql_fecth_array y recupero $variable = $row['campo']; echo $variable
  #25 (permalink)  
Antiguo 27/02/2013, 13:30
Avatar de T4ke0veR  
Fecha de Ingreso: agosto-2007
Ubicación: Quito - Ecuador
Mensajes: 1.720
Antigüedad: 16 años, 8 meses
Puntos: 28
Respuesta: Problema con buscador en PHP

o sea tu me recomiendas algo como esto
$cadbusca="SELECT descripcion, titulo FROM hoteles WHERE descripcion LIKE '%$busqueda%' OR titulo LIKE '%$busqueda%' LIMIT 50";
.. asi de simple
__________________
Diseño gráfico, Web, imagen corporativa, publicidad ...
  #26 (permalink)  
Antiguo 27/02/2013, 14:26
Avatar de catpaw  
Fecha de Ingreso: mayo-2010
Ubicación: xalapa
Mensajes: 856
Antigüedad: 13 años, 11 meses
Puntos: 23
Respuesta: Problema con buscador en PHP

algo asi, pero pensandolo bien igual si necesitas dividir la frase como lo haces pero siguiendo con like, es decir:

Código PHP:
$trozos=explode(" ",$busqueda);

$cadbuscar = array();

foreach(
$trozos as $palabra){
     
$cadbuscar[] = "descripcion LIKE '%$palabra%' OR titulo LIKE '%$palabra%'";
}
$query "SELECT descripcion, titulo FROM hoteles WHERE ";
$query .= "and ".implode(' or '$cadbuscar);
$query .= " LIMIT 50";

$result=mysql_query($query$conexion);  

While(
$row=mysql_fetch_object($result)) {
  
//muestras resultados

algo asi, te recomiendo que le hagas un echo a $query para ver como se esta armando la consulta
  #27 (permalink)  
Antiguo 27/02/2013, 14:48
Avatar de T4ke0veR  
Fecha de Ingreso: agosto-2007
Ubicación: Quito - Ecuador
Mensajes: 1.720
Antigüedad: 16 años, 8 meses
Puntos: 28
Respuesta: Problema con buscador en PHP

Probe asi..
Código PHP:
<?php
@$busqueda $_POST["for"] ;

//cadena de conexion 
$conexion mysql_connect("localhost","morr0113_admin","morro2012"); 
mysql_select_db("morr0113_2012"$conexion); 
//DEBO PREPARAR LOS TEXTOS QUE VOY A BUSCAR si la cadena existe 
if ($busqueda<>''){ 
   
//CUENTA EL NUMERO DE PALABRAS 
  
$trozos=explode(" ",$busqueda);

$cadbuscar = array();

foreach(
$trozos as $palabra){
     
$cadbuscar[] = "descripcion LIKE '%$palabra%' OR titulo LIKE '%$palabra%'";
}
$query "SELECT descripcion, titulo FROM hoteles WHERE ";
$query .= "and ".implode(' or '$cadbuscar);
$query .= " LIMIT 50";

$result=mysql_query($query$conexion);  

While(
$row=mysql_fetch_object($result)) {
  
//muestras resultados
}  
      
//Mostramos los titulos de los articulos o lo que deseemos... 
      
$descripcion=$row->descripcion
      
$titulo=$row->titulo
      echo 
$descripcion." - ".$titulo."<br>"
   }
?>
pero me da este error
Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /home/morr0113/public_html/buscar.php on line 23
__________________
Diseño gráfico, Web, imagen corporativa, publicidad ...
  #28 (permalink)  
Antiguo 27/02/2013, 14:54
Avatar de catpaw  
Fecha de Ingreso: mayo-2010
Ubicación: xalapa
Mensajes: 856
Antigüedad: 13 años, 11 meses
Puntos: 23
Respuesta: Problema con buscador en PHP

ok mira imprime $query porfas y me lo pones

tienes una llave de mas despues del while

y insisto en no usar mysql_fetch_object

a mi en lo personal me gusta mas mysql_fetch_array:

Código PHP:
while($row=mysql_fetch_array($result)) { 
      
//Mostramos los titulos de los articulos o lo que deseemos...  
      
$descripcion=$row['descripcion'];  
      
$titulo=$row['titulo'];  
      echo 
$descripcion." - ".$titulo."<br>";  

  #29 (permalink)  
Antiguo 27/02/2013, 14:59
Avatar de T4ke0veR  
Fecha de Ingreso: agosto-2007
Ubicación: Quito - Ecuador
Mensajes: 1.720
Antigüedad: 16 años, 8 meses
Puntos: 28
Respuesta: Problema con buscador en PHP

jajaja la llave al final son dos o me da final inesperado... y ahora me dice

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in /home/morr0113/public_html/buscar.php on line 37

=/
__________________
Diseño gráfico, Web, imagen corporativa, publicidad ...
  #30 (permalink)  
Antiguo 27/02/2013, 15:00
Avatar de catpaw  
Fecha de Ingreso: mayo-2010
Ubicación: xalapa
Mensajes: 856
Antigüedad: 13 años, 11 meses
Puntos: 23
Respuesta: Problema con buscador en PHP

Cita:
ok mira imprime $query porfas y me lo pones

Etiquetas: buscador, mysql, select, sql
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 22:19.