Foros del Web » Programando para Internet » PHP »

Buscador avanzado

Estas en el tema de Buscador avanzado en el foro de PHP en Foros del Web. Hola, como estais. Bien lo q keria hacer es un buscador q busque x la base de datos. Yo le paso unos parametros, en concreto ...
  #1 (permalink)  
Antiguo 23/08/2005, 15:03
 
Fecha de Ingreso: agosto-2005
Mensajes: 65
Antigüedad: 18 años, 8 meses
Puntos: 0
Buscador avanzado

Hola, como estais.

Bien lo q keria hacer es un buscador q busque x la base de datos.
Yo le paso unos parametros, en concreto le paso si esta en la tabla noticias o en la tabla equipos, y a continuacion un texto q kiero q busque.
Por ejemplo, yo kiero q busque una frase dentro de la tabla noticias, o una simple palabra, la palabra futbol, pero kiero q si dentro del campo noticia de la tabla noticias esta la palabra futbol, me muestre el titular de la noticia. pues bien, no se como hacer eso.

Como yo lo tengo me muestra algo solo si tengo un campo con la palabra futbol unicamente :S
aqui tengo el codigo:

Código PHP:
<?php
include("Conexion.php");
$link=Conectarse();

    if((isset(
$_POST['opc'])) And (isset($_POST['busqueda']))){
    
$opc=$_POST['opc'];
    
$busqueda=$_POST['busqueda'];
    
$numfilas=0;
    
    
$result=mysql_query("SELECT * From $opc Where Noticia='$busqueda%'",$link);
  while(
$row=mysql_fetch_array($result))
  {
  
$numfilas++;
   
echo 
"hay ".$numfilas." resultados.";
   echo 
$row["Titular1"];
  }
  if(
$numfilas==0){
  echo 
"no hay resultados";}
}

?>
Gracias y un saludo!

Última edición por roberJ; 23/08/2005 a las 15:05 Razón: me equivoque en el codigo
  #2 (permalink)  
Antiguo 24/08/2005, 06:03
 
Fecha de Ingreso: agosto-2005
Mensajes: 65
Antigüedad: 18 años, 8 meses
Puntos: 0
nadie sabe?
  #3 (permalink)  
Antiguo 24/08/2005, 06:39
 
Fecha de Ingreso: agosto-2005
Mensajes: 143
Antigüedad: 18 años, 8 meses
Puntos: 0
Holas.

Prueba con este:
Código PHP:
<?php
include("Conexion.php");
$link=Conectarse();

if((isset(
$_POST['opc'])) And (isset($_POST['busqueda'])))
{
    
$opc addslashes($_POST['opc']);
    
$busqueda addslashes($_POST['busqueda']);

    
$result mysql_query("SELECT * From $opc Where Noticia='$busqueda%'",$link);
    
$total mysql_num_rows($result);

    if(
$total != 0)
    {
        while(
$row=mysql_fetch_assoc($result))
        {
            echo 
'Hay '.$total.' resultados.<br>';
            echo 
$row['Titular1'].'<br>';
        }
    }else
        echo 
'No hay ningún resultado en la búsqueda';
}
?>
Es muy inseguro que la tabla en la que quieres buscar la pases mediante un formulario de esa forma...bueno, a no ser que solo tu tengas permisos de ejecución en este archivo.

Saludos ;)
  #4 (permalink)  
Antiguo 24/08/2005, 06:43
 
Fecha de Ingreso: junio-2005
Mensajes: 343
Antigüedad: 18 años, 10 meses
Puntos: 10
En www.maniacosdigitales.labarana.com tienes un articulo de como hacer busquedas en una base de datos.
  #5 (permalink)  
Antiguo 24/08/2005, 16:14
 
Fecha de Ingreso: agosto-2005
Mensajes: 65
Antigüedad: 18 años, 8 meses
Puntos: 0
gracias x las respuestas.

jorgivaz el vinculo no va.

$thisone he hecho lo q me decias pero no funciona, ademas no se lo que hago :S no se lo q kiere decir los cambios q has añadido, xo no funciona. Gracias otra vez!!

saludos
  #6 (permalink)  
Antiguo 24/08/2005, 16:49
 
Fecha de Ingreso: agosto-2005
Mensajes: 143
Antigüedad: 18 años, 8 meses
Puntos: 0
Holas.

Si muestras como es la estructura de la tabla sería más fácil.
¿La columna donde almacenas los titulares se llama Titular1? ¿No es Titular solamente?

Respecto a que no entiendes el script. Lo único que e cambiado es, a la hora de contar los resultados tu usabas una variable que la aumentabas en while() y yo e usado una función que existe para eso mysql_num_rows(). El otro cambio que he echo no teine ninguna importancia...he cambiado mysql_fetch_array() por mysql_fetch_assoc(). Puedes volver a cambiarlo si quieres.

http://php.grn.es/manual/es/function.mysql-num-rows.php
http://php.grn.es/manual/es/function...etch-array.php
http://php.grn.es/manual/es/function...etch-assoc.php

Saludos ;)
  #7 (permalink)  
Antiguo 24/08/2005, 19:12
Avatar de jorpcolombia  
Fecha de Ingreso: junio-2005
Ubicación: Bogotá
Mensajes: 105
Antigüedad: 18 años, 10 meses
Puntos: 0
entiendo tu duda... yo en una web, programé un buscador que encuentre la(s) palabras dentro de descripciones de fotos...El método que utilice, y la clave del sistema de busqueda es la función eregi (http://www.php.net/eregi), que además de encontrar las coincidencia, no reconoce entre mayúsculas y minúsculas.

Podrias hacer algo así:
while....{
if(!(eregi($busqueda))){
echo $row[$titular];
}
}

__________________
:pensando:¡No a lo inaccesible! ¡Sí a lo simple!:pensando
  #8 (permalink)  
Antiguo 24/08/2005, 19:21
 
Fecha de Ingreso: mayo-2004
Mensajes: 903
Antigüedad: 19 años, 11 meses
Puntos: 4
yo estoy usando este:
Código PHP:
<?php
//cadena de conexion
$link=mysql_connect("localhost","","");
mysql_select_db("");

// DEBO PREPARAR LOS TEXTOS QUE VOY A BUSCAR si la cadena existe
if ($_POST["busqueda"]!="")
{
//CUENTA EL NUMERO DE PALABRAS
$trozos=explode(" ",$_POST["busqueda"]);
$numero=count($trozos);

if (
$numero==1) {
//SI SOLO HAY UNA PALABRA DE BUSQUEDA SE ESTABLECE UNA INSTRUCION CON LIKE
$cadbusca="SELECT  palac, link FROM contenido WHERE palac =1
       AND titulo LIKE  '%$busqueda%' OR comentarios 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  palac,link, MATCH ( titulo,comentarios )
      AGAINST (  '$busqueda' ) AS Score FROM contenido WHERE
      MATCH ( titulo,comentarios ) AGAINST (  '$busqueda' ) ORDER  BY Score DESC LIMIT 50"
;
}

$result=mysql_query($cadbusca,$link) or die(mysql_error());
While(
$row=mysql_fetch_object($result))
{
//Mostramos los titulos de los articulos o lo que deseemos...
$referencia=$row->link;
$titulo=$row->palac;
echo 
$referencia." ".$titulo."<br>"; echo "<a href='".$fila['titulo']."'>".$fila['titulo']."</a>";
}
}
?>
Código HTML:
<FORM METHOD=POST ACTION="buscador1.php">
                    <font size="1" face="Verdana, Arial, Helvetica, sans-serif">Ingrese el producto</font> 
                          <input name="busqueda" type="text" size="16">
<input type="submit" name="Submit" value="Buscar">
                        </FORM> 

busca en una tabla, con 5 campos.
  #9 (permalink)  
Antiguo 25/08/2005, 05:25
 
Fecha de Ingreso: agosto-2005
Mensajes: 65
Antigüedad: 18 años, 8 meses
Puntos: 0
mvlsistemas te funciona bien?

las respuestas anteriores las he probado y no funciona :S
y el titular1 , no titular, ya q hay 2 titulares.
probare el q dices

Gracias y un saludo!
  #10 (permalink)  
Antiguo 25/08/2005, 05:27
 
Fecha de Ingreso: junio-2005
Mensajes: 343
Antigüedad: 18 años, 10 meses
Puntos: 10
El vinculo ya funciona, esq stan de actualización en el server.
  #11 (permalink)  
Antiguo 25/08/2005, 16:25
 
Fecha de Ingreso: mayo-2004
Mensajes: 903
Antigüedad: 19 años, 11 meses
Puntos: 4
si funciona bien

Última edición por mvlsistemas; 25/08/2005 a las 21:33
  #12 (permalink)  
Antiguo 28/08/2005, 13:24
 
Fecha de Ingreso: noviembre-2004
Mensajes: 82
Antigüedad: 19 años, 5 meses
Puntos: 0
hola chicos, está bueno el buscador de mvlsistemas, pero como se puede hacer para que te redireccione directamente a la página del resultado?
Si alguien pude hacer ese script nos vendría perfecto.
  #13 (permalink)  
Antiguo 29/08/2005, 01:39
 
Fecha de Ingreso: agosto-2005
Mensajes: 65
Antigüedad: 18 años, 8 meses
Puntos: 0
hola martina.
puedes usar esto al final del archivo buscar1:

Código PHP:
echo "<META http-equiv=\"refresh\" content=\"0;url=resultados.php\">"
y tambien esto:

Código PHP:
header("Location:resultados.php?"); 
bueno, suerte xq a mi no me va. No entiendo muy bien lo del Score y lo he dejado x imposible
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 21:57.