Foros del Web » Programando para Internet » PHP »

Problema con sistema de busquedas.

Estas en el tema de Problema con sistema de busquedas. en el foro de PHP en Foros del Web. Hola, bueno tengo un problema, estoy haciendo un script que busque paginas web dentro de mi servidor con una base de datos bueno aqui estan ...

  #1 (permalink)  
Antiguo 13/01/2008, 09:13
Avatar de Carlmycol  
Fecha de Ingreso: diciembre-2007
Ubicación: Los Teques, Venezuela
Mensajes: 240
Antigüedad: 12 años
Puntos: 3
Problema con sistema de busquedas.

Hola, bueno tengo un problema, estoy haciendo un script que busque paginas web dentro de mi servidor con una base de datos bueno aqui estan mis codigos :S

Este es el documento con el formulario para bucar - form.htm

Código HTML:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Documento sin t&iacute;tulo</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<FORM METHOD=POST ACTION="buscar.php">
Buscar: <INPUT TYPE="text" NAME="busqueda">
</FORM>
</body>
</html> 
Este es el que busca - buscar.php

Código PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Documento sin t&iacute;tulo</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<?php
//cadena de conexion
mysql_connect("localhost","root","");
//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 REFERENCIA, TITULO FROM ARTICULOS WHERE VISIBLE =1 AND DESARROLLO 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 REFERENCIA, TITULO , MATCH ( TITULO, DESARROLLO ) AGAINST ( '$busqueda' ) AS Score FROM ARTICULOS WHERE MATCH ( TITULO, DESARROLLO ) AGAINST ( '$busqueda' ) ORDER BY Score DESC LIMIT 50";
}
$result=mysql("teleformacion"$cadbusca);
While(
$row=mysql_fetch_object($result))
{
   
//Mostramos los titulos de los articulos o lo que deseemos...
  
$referencia=$row->REFERENCIA;
   
$titulo=$row->TITULO;
   echo 
$referencia." - ".$titulo."<br>";;
}
?> 
</body>
</html>
este es el ejemplo que puse para que buscara - untitled.htm

Código HTML:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>ejemplo</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="keywords" lang="en" content="ejemplo" />
</head>

<body>
libros ejemplo
</body>
</html> 
y me da este error:

Parse error: parse error, unexpected $end in C:\AppServ\www\buscador\buscar.php on line 35

No se que puede ser :S

Nombre de la base de datos es articulos
nombre de tabla articulos
1 campo de tabla es titulo - vachar 100
2 campo de tabla es desarrollo - text

Desde ya muchas gracias. ;)

Salu2
  #2 (permalink)  
Antiguo 13/01/2008, 09:35
 
Fecha de Ingreso: enero-2008
Ubicación: Madrid
Mensajes: 32
Antigüedad: 11 años, 10 meses
Puntos: 1
Re: Problema con sistema de busquedas.

Bueno. Vamos por partes (como dijo Jack):
  • En la línea While($row=mysql_fetch_object($result)) el "while" lo tienes en mayúsculas. Colócalo en minúsculas.
  • Yo siepre usaría el MATCH ... AGAINST en la sentencia SQL aunque el usuario sólo hubiese querido buscar una palabra. Pregunta en el foro de MySQL el porqué
  • ¿Qué hace la función mysql que tienes aquí?
    $result=mysql("teleformacion", $cadbusca);
    Probablemente se te haya escapado y lo que debiste colocar es una función del tipo mysql_query

Empieza con esto y avísanos qué tal te va
  #3 (permalink)  
Antiguo 13/01/2008, 09:38
 
Fecha de Ingreso: noviembre-2002
Mensajes: 1.341
Antigüedad: 17 años, 1 mes
Puntos: 17
Re: Problema con sistema de busquedas.

Tienes un punto y coma de más al final de la instrucción.
  #4 (permalink)  
Antiguo 13/01/2008, 10:01
Avatar de Carlmycol  
Fecha de Ingreso: diciembre-2007
Ubicación: Los Teques, Venezuela
Mensajes: 240
Antigüedad: 12 años
Puntos: 3
Re: Problema con sistema de busquedas.

Cita:
¿Qué hace la función mysql que tienes aquí?
$result=mysql("teleformacion", $cadbusca);
Probablemente se te haya escapado y lo que debiste colocar es una función del tipo mysql_query
mmm... no entiendo lo que dices de mysql_query

ya arregle lo de while :S y quite el ;

Muchas Gracias, :D

Salu2
  #5 (permalink)  
Antiguo 13/01/2008, 10:17
 
Fecha de Ingreso: enero-2008
Ubicación: Madrid
Mensajes: 32
Antigüedad: 11 años, 10 meses
Puntos: 1
Re: Problema con sistema de busquedas.

Es que tienes una línea así:

$result=mysql("teleformacion", $cadbusca);

Es decir, estás llamando la función mysql con los parámetros "teleformación" y $cadbusca, pero es que esa función no existe en php, te debe debiste haber comido "un pedacito", es decir que la línea de arriba debe ser algo como:

$result=mysql_query($cadbusca);

Saludos
  #6 (permalink)  
Antiguo 13/01/2008, 10:45
Avatar de Carlmycol  
Fecha de Ingreso: diciembre-2007
Ubicación: Los Teques, Venezuela
Mensajes: 240
Antigüedad: 12 años
Puntos: 3
Re: Problema con sistema de busquedas.

hice lo que me estas pidiendo y me sigue saliendo el mismo error pero una linea mas abajo :S
  #7 (permalink)  
Antiguo 13/01/2008, 11:00
 
Fecha de Ingreso: noviembre-2002
Mensajes: 1.341
Antigüedad: 17 años, 1 mes
Puntos: 17
Re: Problema con sistema de busquedas.

¿Y por qué no te fijas en lo que pone en esa línea? ¿Has leído mi mensaje anterior?
  #8 (permalink)  
Antiguo 13/01/2008, 11:23
Avatar de Carlmycol  
Fecha de Ingreso: diciembre-2007
Ubicación: Los Teques, Venezuela
Mensajes: 240
Antigüedad: 12 años
Puntos: 3
Re: Problema con sistema de busquedas.

Si lo lei decia que habia dos punto y coma al final de la instrucción :S le quite uno pero el error siguio... o tal ves interprete mal tu mensaje anterior...

ahora es error sale en la linea 34 pero lo que hay en la linea 34 es </html> me sale un error por cerrar la etiqueta html? :S

Salu2 y gracias :)
  #9 (permalink)  
Antiguo 13/01/2008, 11:35
 
Fecha de Ingreso: noviembre-2002
Mensajes: 1.341
Antigüedad: 17 años, 1 mes
Puntos: 17
Re: Problema con sistema de busquedas.

Te falta la llave de cierre de esta condición:

elseif ($numero>1) {
  #10 (permalink)  
Antiguo 13/01/2008, 13:08
Avatar de Carlmycol  
Fecha de Ingreso: diciembre-2007
Ubicación: Los Teques, Venezuela
Mensajes: 240
Antigüedad: 12 años
Puntos: 3
Re: Problema con sistema de busquedas.

si esta cerrado :S creo que mejor uno el sistema de busquedas de adsense :S

Aunque no pude solucionar el proble les agradesco su ayuda

Salu2
  #11 (permalink)  
Antiguo 13/01/2008, 13:17
 
Fecha de Ingreso: noviembre-2002
Mensajes: 1.341
Antigüedad: 17 años, 1 mes
Puntos: 17
Re: Problema con sistema de busquedas.

No, no está cerrado, fijate bien.
  #12 (permalink)  
Antiguo 14/01/2008, 09:31
Avatar de Carlmycol  
Fecha de Ingreso: diciembre-2007
Ubicación: Los Teques, Venezuela
Mensajes: 240
Antigüedad: 12 años
Puntos: 3
Pregunta Re: Problema con sistema de busquedas.

Código PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Documento sin t&iacute;tulo</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<?php
//cadena de conexion
mysql_connect("localhost","root","");
//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 REFERENCIA, TITULO FROM ARTICULOS WHERE VISIBLE =1 AND DESARROLLO 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 REFERENCIA, TITULO , MATCH ( TITULO, DESARROLLO ) AGAINST ( '$busqueda' ) AS Score FROM ARTICULOS WHERE MATCH ( TITULO, DESARROLLO ) AGAINST ( '$busqueda' ) ORDER BY Score DESC LIMIT 50";
}
}
//<---------------Aqui esta cerrado xd
$result=mysql("teleformacion"$cadbusca);
while(
$row=mysql_fetch_object($result))//aqui esta en minuscula
{//<-----------------buelbe a abrir
   //Mostramos los titulos de los articulos o lo que deseemos...
  
$referencia=$row->REFERENCIA;
   
$titulo=$row->TITULO;
   echo 
$referencia." - ".$titulo."<br>";;
}
?> 
</body>
</html>
Si tienes razon no esta cerrada :)

pero ahora me salio este error :S

Warning: mysql_connect() [function.mysql-connect]: Can't connect to MySQL server on 'localhost' (10061) in C:\AppServ\www\buscador\buscar.php on line 18

Warning: mysql() [function.mysql]: Can't connect to MySQL server on 'localhost' (10061) in C:\AppServ\www\buscador\buscar.php on line 33

Warning: mysql() [function.mysql]: A link to the server could not be established in C:\AppServ\www\buscador\buscar.php on line 33

Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in C:\AppServ\www\buscador\buscar.php on line 34

Haria lo que fuese para hacer funcionar esto xD :S que falta?

GRacias y Salu2
  #13 (permalink)  
Antiguo 14/01/2008, 10:37
 
Fecha de Ingreso: febrero-2007
Ubicación: Jaén
Mensajes: 40
Antigüedad: 12 años, 10 meses
Puntos: 1
Re: Problema con sistema de busquedas.

Hola a todos.

Si no me equivoco todos los errores podrían ser consecuencia del primero. El problema está en que no conecta a la base de datos y puede ser porque el nombre del servidor, nombre de usuario o la contraseña con los que conectas al servidor MySQL son incorrectos. También puede ser porque no estás seleccionando una base de datos sobre la que ejecutar tus consultas a las tablas.

Esto último veo que no lo tienes puesto.

Utiliza
Código PHP:
mysql_select_db("tu_base_de_datos"); 
para conectar con la base de datos.

A ver si te funciona. Suerte!
  #14 (permalink)  
Antiguo 14/01/2008, 12:40
Avatar de Carlmycol  
Fecha de Ingreso: diciembre-2007
Ubicación: Los Teques, Venezuela
Mensajes: 240
Antigüedad: 12 años
Puntos: 3
Re: Problema con sistema de busquedas.

ahora me sale este :S

Warning: mysql_select_db() [function.mysql-select-db]: Access denied for user 'ODBC'@'localhost' (using password: NO) in C:\AppServ\www\buscar.php on line 18

Warning: mysql_select_db() [function.mysql-select-db]: A link to the server could not be established in C:\AppServ\www\buscar.php on line 18

Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in C:\AppServ\www\buscar.php on line 35

esto me tiene confundio :S cual es er problema de mi codigo :S

gracias, salu2
  #15 (permalink)  
Antiguo 14/01/2008, 13:40
Avatar de destor77  
Fecha de Ingreso: noviembre-2004
Ubicación: Gálvez, Santa Fe, Argentina
Mensajes: 2.654
Antigüedad: 15 años, 1 mes
Puntos: 43
Re: Problema con sistema de busquedas.

mira yo use el mismo ejemplo que vos y no me salia al final tuve que modificar algunas cosas y el codigo termino asi:
Código PHP:
/**
 * MODULO BUSCADOR
 * ----------------
 * Modulo para buscar dentro del blog
 */
?>
<h2>Resultados de la Busqueda:</h2><br><br>
<?
    $busqueda
=$_POST['search'];
    
/*$sql="SELECT  * , MATCH (titulo,texto, texto_a) AGAINST ('$busqueda') AS puntuacion
            FROM post WHERE  MATCH (titulo,texto, texto_a) AGAINST ('$busqueda')
            ORDER  BY puntuacion DESC";*/
    // 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  * FROM post WHERE texto LIKE  '%$busqueda%' OR titulo LIKE  '%$busqueda%' 
        OR texto_a LIKE  '%$busqueda%' "
;
      } 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  *, MATCH ( titulo,texto, texto_a )
          AGAINST (  '$busqueda' ) AS Score FROM post WHERE
          MATCH ( titulo,texto, texto_a ) AGAINST (  '$busqueda' ) ORDER  BY Score DESC"
;
      }

    }
    
$result mysql_query($cadbusca);
    if (!
$result){
        echo 
"No se encontraron datos para esa busqueda";
    }
    else{
    while ( 
$row mysql_fetch_array$resultMYSQL_ASSOC ) ){?>
        <h4><? echo'* - <a href="?mod=ver_post&amp;id='.$row['id_post'].'" title="'.$row['titulo'].'">'.$row['titulo'].'</a>';?></h4>
    <?      }
        }
?>
espero que te sirva salu2
  #16 (permalink)  
Antiguo 14/01/2008, 16:35
Avatar de Carlmycol  
Fecha de Ingreso: diciembre-2007
Ubicación: Los Teques, Venezuela
Mensajes: 240
Antigüedad: 12 años
Puntos: 3
Re: Problema con sistema de busquedas.

Muy bien me quedo asi. en la parte de mysql_select_db me dio un error y lo puse con function_mysql_select_db

Código PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Documento sin t&iacute;tulo</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Documento sin t&iacute;tulo</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<?php
//cadena de conexion
function.mysql-select-db("articulos"); 
mysql_connect("localhost","carlmycol","190594");
//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 REFERENCIA, TITULO FROM ARTICULOS WHERE VISIBLE =1 AND DESARROLLO 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 REFERENCIA, TITULO , MATCH ( TITULO, DESARROLLO ) AGAINST ( '$busqueda' ) AS Score FROM ARTICULOS WHERE MATCH ( TITULO, DESARROLLO ) AGAINST ( '$busqueda' ) ORDER BY Score DESC LIMIT 50";
}
}
//<---------------Aqui esta cerrado xd
$result=mysql("teleformacion"$cadbusca);
while(
$row=mysql_fetch_object($result))//aqui esta en minuscula
{//<-----------------buelbe a abrir
   //Mostramos los titulos de los articulos o lo que deseemos...
  
$referencia=$row->REFERENCIA;
   
$titulo=$row->TITULO;
   echo 
$referencia." - ".$titulo."<br>";;
}
?> 
</body>
</html>
</body>
</html>
ahora no me da error conectandose con la base de datos :) me dio este error

Parse error: syntax error, unexpected '.', expecting T_STRING in C:\AppServ\www\buscar.php on line 18

desde mi pundo de vista es un gran avance ;) ahora cual es el problema :S

Te lo agradesco, muchas gracias ;)

salu2
  #17 (permalink)  
Antiguo 14/01/2008, 16:58
Avatar de destor77  
Fecha de Ingreso: noviembre-2004
Ubicación: Gálvez, Santa Fe, Argentina
Mensajes: 2.654
Antigüedad: 15 años, 1 mes
Puntos: 43
Re: Problema con sistema de busquedas.

el error esta aca function.mysql-select-db("articulos");
creo que va asi function mysql-select-db("articulos");
nose supongo ya que no uso esa sentencia en mi codigo
  #18 (permalink)  
Antiguo 14/01/2008, 17:03
okram
Invitado
 
Mensajes: n/a
Puntos:
Re: Problema con sistema de busquedas.

Yo diría que no, pues ahora está devolviendo un error de sintaxis . Tu problema parte desde la conexion al servdor MySQL y la seleccion de la base de datos.

Para conectarse adecuandamente a una base de datos, debes usar las funciones mysql_connect() y mysql_select_db():

Código PHP:
mysql_connect("localhost","root","");
mysql_select_db("base de datos"); 
Asegúrate de que tus datos de conexión sean los correctos y de que tu base de datos existe y tienes los permisos para acceder a ella.

Un saludo,
  #19 (permalink)  
Antiguo 14/01/2008, 17:34
Avatar de Carlmycol  
Fecha de Ingreso: diciembre-2007
Ubicación: Los Teques, Venezuela
Mensajes: 240
Antigüedad: 12 años
Puntos: 3
Re: Problema con sistema de busquedas.

aaaaleluya aleeeluya xD alfin funciono ahora como hago para que salgan resultados? xD
  #20 (permalink)  
Antiguo 14/01/2008, 18:19
okram
Invitado
 
Mensajes: n/a
Puntos:
Re: Problema con sistema de busquedas.

Al parecer defines internamente la funcion mysql() (?) Podrías poner cómo es que está estructurada?

Un saludo,
  #21 (permalink)  
Antiguo 14/01/2008, 18:26
Avatar de Carlmycol  
Fecha de Ingreso: diciembre-2007
Ubicación: Los Teques, Venezuela
Mensajes: 240
Antigüedad: 12 años
Puntos: 3
Re: Problema con sistema de busquedas.

No entendi lo que dijistes :S

Gracias y salu2
  #22 (permalink)  
Antiguo 14/01/2008, 18:39
okram
Invitado
 
Mensajes: n/a
Puntos:
Re: Problema con sistema de busquedas.

Código PHP:
$result=mysql("teleformacion"$cadbusca); 
Que pretendes hacer en esa linea? Que significa "teleformacion" en ese contexto? Por qué no usas mysql_query() para realizar la consulta?
Código PHP:
$result mysql_query($cadbusca); 
Un saludo,
  #23 (permalink)  
Antiguo 14/01/2008, 19:23
Avatar de Carlmycol  
Fecha de Ingreso: diciembre-2007
Ubicación: Los Teques, Venezuela
Mensajes: 240
Antigüedad: 12 años
Puntos: 3
Re: Problema con sistema de busquedas.

Código PHP:
/**
 * MODULO BUSCADOR
 * ----------------
 * Modulo para buscar dentro del blog
 */
?>
<h2>Resultados de la Busqueda:</h2><br><br>
<?
mysql_connect
("localhost","carlmycol","190594");
mysql_select_db("articulos");  
    
$busqueda=$_POST['search'];
    
/*$sql="SELECT  * , MATCH (titulo,texto, texto_a) AGAINST ('$busqueda') AS puntuacion
            FROM post WHERE  MATCH (titulo,texto, texto_a) AGAINST ('$busqueda')
            ORDER  BY puntuacion DESC";*/
    // 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  * FROM post WHERE texto LIKE  '%$busqueda%' OR titulo LIKE  '%$busqueda%' 
        OR texto_a LIKE  '%$busqueda%' "
;
      } 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  *, MATCH ( titulo,texto, texto_a )
          AGAINST (  '$busqueda' ) AS Score FROM post WHERE
          MATCH ( titulo,texto, texto_a ) AGAINST (  '$busqueda' ) ORDER  BY Score DESC"
;
      }

    }
    
$result mysql_query($cadbusca);
    if (!
$result){
        echo 
"No se encontraron datos para esa busqueda";
    }
    else{
    while ( 
$row mysql_fetch_array$resultMYSQL_ASSOC ) ){?>
        <h4><? echo'* - <a href="?mod=ver_post&amp;id='.$row['id_post'].'" title="'.$row['titulo'].'">'.$row['titulo'].'</a>';?></h4>
    <?      }
        }
?>
El codigo ya funciona solo que no salen resultados :S

No se encontraron datos para esa busqueda

De resto no sale ni un solo error ni de sintaxis ni de consulta a la base de datos

Gracias y Salu2
  #24 (permalink)  
Antiguo 14/01/2008, 19:52
okram
Invitado
 
Mensajes: n/a
Puntos:
Re: Problema con sistema de busquedas.

Haber, recuerda que para poder utilizar MATCH en tus búsquedas debes tener índices de tipo FULLTEXT. Si no sabías esto, date una vuelta por

http://blog.unijimpe.net/busquedas-fulltext-en-mysql/

Si eso ya lo había tomado en cuenta, te sugeríría que cambies esto:
Código PHP:
$result = mysql_query($cadbusca); 
if (!$result){ 
        echo "No se encontraron datos para esa busqueda"; 
    } 
    else{ 
    while ( $row = mysql_fetch_array( $result, MYSQL_ASSOC ) ){?> 
        <h4><? echo'* - <a href="?mod=ver_post&amp;id='.$row['id_post'].'" title="'.$row['titulo'].'">'.$row['titulo'].'</a>';?></h4> 
    <?      
        }
por
Código PHP:
$result mysql_query($cadbusca) or die("Hubo un error en la consulta: ".mysql_error()); 
if(
mysql_num_rows($result) < 1) {
    echo 
'No hay resultados que coincidan con la búsqueda';
} else {
    while ( 
$row mysql_fetch_assoc$result ) ) {
        echo 
"<h4>* - <a href=\"?mod=ver_post&amp;id=$row[id_post]\" title=\"$row[titulo]\">$row[titulo]</a></h4>";
    } 

Esto es simplemente para hacer más legible tu código. Además cambié la función mysql_fetch_array() por mysql_fetch_assoc(), que era lo que estabas buscando en realidad. Mediante el uso de la función mysql_num_rows() determinamos el número de filas devueltas por la consulta. Si te sale el mensaje de que no hay resultados, entonces el problema está en tu tabla. Asegúrate de crear los índices que te mencioné

Un saludo,
  #25 (permalink)  
Antiguo 14/01/2008, 20:08
Avatar de Carlmycol  
Fecha de Ingreso: diciembre-2007
Ubicación: Los Teques, Venezuela
Mensajes: 240
Antigüedad: 12 años
Puntos: 3
Pregunta Re: Problema con sistema de busquedas.

Cita:
/** * MODULO BUSCADOR * ---------------- * Modulo para buscar dentro del blog */ ?>
Resultados de la Busqueda:


Hubo un error en la consulta: Query was empty
Me sale este error. recuerda que yo no estoy haciendo un blog sino una pagina xd

Una pregunta ya tu provaste el codgo en tu web o algo, solo quiero saber si te funciona a ti para saber si el problema es mi pagina o algo por el estilo...

Muchas Gracias y Salu2
  #26 (permalink)  
Antiguo 14/01/2008, 20:22
okram
Invitado
 
Mensajes: n/a
Puntos:
Re: Problema con sistema de busquedas.

El buscador de mi blog usa exactamente el mismo sistema, y funciona perfecto. Al parecer no se está definiendo el contenido de la consulta. Prueba cambiando

Código PHP:
if ($busqueda<>''){ 
por
Código PHP:
if (!empty($busqueda)){ 
Un saludo,
  #27 (permalink)  
Antiguo 15/01/2008, 08:38
Avatar de Carlmycol  
Fecha de Ingreso: diciembre-2007
Ubicación: Los Teques, Venezuela
Mensajes: 240
Antigüedad: 12 años
Puntos: 3
Re: Problema con sistema de busquedas.

No me salen resultados en la busqueda como puedo hacer para que salgan resultados. poner meta tags que? que puedo hacer?
  #28 (permalink)  
Antiguo 15/01/2008, 18:24
okram
Invitado
 
Mensajes: n/a
Puntos:
Re: Problema con sistema de busquedas.

Con decir "no me sale, no me sale" creo que no vas a solucionar nada. Hiciste el cambio que te dije? Qué mensaje te devuelve ahora? Algún error?

Un saludo,
  #29 (permalink)  
Antiguo 15/01/2008, 19:53
Avatar de Carlmycol  
Fecha de Ingreso: diciembre-2007
Ubicación: Los Teques, Venezuela
Mensajes: 240
Antigüedad: 12 años
Puntos: 3
De acuerdo Re: Problema con sistema de busquedas.

Si hice el cambio pero no salen resultados :S, por eso te digo que no estoy haciendo un blog sino una pagina web, no sera ese el problema?

Asi me quedo el codigo con lo que me dijiste

Código PHP:
<?
/**
 * MODULO BUSCADOR
 * ----------------
 * Modulo para buscar dentro del blog
 */
?>
<h2>Resultados de la Busqueda:</h2><br><br>
<?
mysql_connect
("localhost","carlmycol","190594");
mysql_select_db("articulos");  
    
$busqueda=$_POST['search'];
    
/*$sql="SELECT  * , MATCH (titulo,texto, texto_a) AGAINST ('$busqueda') AS puntuacion
            FROM post WHERE  MATCH (titulo,texto, texto_a) AGAINST ('$busqueda')
            ORDER  BY puntuacion DESC";*/
    // DEBO PREPARAR LOS TEXTOS QUE VOY A BUSCAR si la cadena existe
    
if (!empty($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  * FROM post WHERE texto LIKE  '%$busqueda%' OR titulo LIKE  '%$busqueda%' 
        OR texto_a LIKE  '%$busqueda%' "
;
      } 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  *, MATCH ( titulo,texto, texto_a )
          AGAINST (  '$busqueda' ) AS Score FROM post WHERE
          MATCH ( titulo,texto, texto_a ) AGAINST (  '$busqueda' ) ORDER  BY Score DESC"
;
      }

    }
$result mysql_query($cadbusca) or die("Hubo un error en la consulta: ".mysql_error()); 
if(
mysql_num_rows($result) < 1) {
    echo 
'No hay resultados que coincidan con la búsqueda';
} else {
    while ( 
$row mysql_fetch_assoc$result ) ) {
        echo 
"<h4>* - <a href=\"?mod=ver_post&amp;id=$row[id_post]\" title=\"$row[titulo]\">$row[titulo]</a></h4>";
    } 
}  
?>
Salu2, espero que me puedas ayudar ;)

Muchas gracias por tu atencion ;)
  #30 (permalink)  
Antiguo 15/01/2008, 20:06
okram
Invitado
 
Mensajes: n/a
Puntos:
Re: Problema con sistema de busquedas.

Pues no veo error en el codigo, y debería mostrarte los resultados correctamente. Creaste los índices FULLTEXT en tu base de datos como te indiqué? El error debe estar en ese punto.

Un saludo,
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 16:30.