Foros del Web » Programando para Internet » PHP »

buscador

Estas en el tema de buscador en el foro de PHP en Foros del Web. hola necesito hacer un buscador, es decir yo tengo unos documento s y proyectos en una base de datos, la busqueda la tengo que hacer ...
  #1 (permalink)  
Antiguo 18/11/2004, 10:13
 
Fecha de Ingreso: agosto-2004
Mensajes: 440
Antigüedad: 13 años, 3 meses
Puntos: 2
buscador

hola necesito hacer un buscador, es decir yo tengo unos documento s y proyectos en una base de datos, la busqueda la tengo que hacer por medio de palabras claves por lo tanto existe una tabla de palabras claves y los documentos y proyectos tienen las palabras claves...........necesito que al ingresr una o varias palabras (si son varia palabras van a ir separadas solo por comas) me salga un listado con los proyectos y documentos donde existen esas palabras......la verdad q no tengo idea de como se hace porfavor si alguien me puede ayudar...
aclaro que el buscador es para buscar palabras claves en una base de datos....obvio todo esto en PHP.....gracias
__________________
paty :adios:
  #2 (permalink)  
Antiguo 18/11/2004, 10:18
 
Fecha de Ingreso: septiembre-2004
Ubicación: Viviendo en Manresa(Barcelona)
Mensajes: 230
Antigüedad: 13 años, 2 meses
Puntos: 0
La idea seria la siguiente:

Con un formulario recojes en una variable la/s palabra/s clave, luego con alguna funcion de php(que ahora no recuerdo) las separas en diferentes variables, tantas como palabras clave haya

Una vez echo esto, haces un select del titulo del pryecto segun:

WHERE campo LIKE '%palabra_clave%

y esto tantas veces como palabras clave(con un foreach o while), entonces vas poneniendo en una variable todos los titulos. Y finalmente los enseñas por pantalla.
  #3 (permalink)  
Antiguo 18/11/2004, 11:30
 
Fecha de Ingreso: agosto-2004
Mensajes: 440
Antigüedad: 13 años, 3 meses
Puntos: 2
buscador

si pero la verdad no se como hacer, si me puedes ayudar con un ejemplo o dende puedo buscar un ejemplo
__________________
paty :adios:
  #4 (permalink)  
Antiguo 18/11/2004, 20:36
 
Fecha de Ingreso: agosto-2004
Mensajes: 440
Antigüedad: 13 años, 3 meses
Puntos: 2
buscador

por favor si alguien me puede ayudar es urgente gracias
__________________
paty :adios:
  #5 (permalink)  
Antiguo 18/11/2004, 20:47
 
Fecha de Ingreso: septiembre-2004
Mensajes: 55
Antigüedad: 13 años, 3 meses
Puntos: 0
Código HTML:
<form name="form1" method="post" action="buscar.php">
  <div align="center">
    <input name="buscar" type="text" id="buscar">
    <input type="submit" name="Submit" value="Buscar">
  </div>
</form> 

Luego el codigo PHP

Código PHP:
include("config.php");

$busqueda $_POST["buscar"];

$con mysql_connect("localhost","$userdb","$passdb"); 

mysql_select_db("$basedatos",$con);

$result=mysql_query("SELECT * FROM busqueda WHERE descripcion LIKE '%$busqueda%' ORDER BY id desc"$con) or die ("No se han Encontrado Resultados");

if(empty(
$busqueda)){ 

echo 
"Debes ingresar Una Palabra para Realizar la busqueda";
 
}elseif(
mysql_num_rows($result)==0){
echo 
"Disculpanos Pero no hay Resultados para tu busqueda n_nU";
}else{
while(
$row=mysql_fetch_array($result))
{

$nombre $row["nombre"];
$descripcion $row["descripcion"];
$categoria $row["categoria"];
$url $row["url"];
$urlbanner $row["banner"];


  echo  
'<a href="'$url .'">'.$nombre.'</a><br /><br>'$descripcion'<br><br>';
 
 echo 
'<br><img src="'$urlbanner'"><br><br>';}


En el config...

Código PHP:
<? 

$userdb
="el usuario de la db";

$passdb="la pass de la db";

$basedatos="la base de datos";

$tabla="la tabla en que se debe buscar";

?>
Pso orale ojala te sirva y que alguien lo mejore.
__________________
Proximamente Rincon Ota on line.
  #6 (permalink)  
Antiguo 18/11/2004, 20:54
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
La función que necesitas para separar tus palabras usando tu separador (coma .. podría ser un simple espacio ...) es:

explode()
www.php.net/explode

LLegado a este punto .. te recomendaría usar busquedas tipo "texto completo" (Full text search) que ofrecen a su vez otras ventajas para este tipo de busquedas (por ejemplo poder ordenar por apariciones de estas palabras en tus campos a buscar) ..

Tienes un tutorial al respecto en:
http://www.mysql-hispano.org/page.php?id=15

Más ejemplos de buscadores para "base de datos" tienes en sitios como www.phpclasss.org ahí tienes classes que implementan bien busquedas a base de "Full text search" para Mysql . o bien componen la sentencia SQL a base de grupos de "campo LIKE '%$termino1%' AND ... campo LIKE '%$termino2%' ... etc" para llegar a una sentencia SQL condicional de ese estilo.

Un saludo,
  #7 (permalink)  
Antiguo 19/11/2004, 08:35
 
Fecha de Ingreso: septiembre-2004
Ubicación: Viviendo en Manresa(Barcelona)
Mensajes: 230
Antigüedad: 13 años, 2 meses
Puntos: 0
Yo tengo este trozo de codigo para ir agregando AND's a la sentencia segun un select:

Código PHP:
$sql=''
    if(
$variable1!="valor"){ 
    
$sql="AND campo1 LIKE '%$variable1%'"
    } 
    if(
$variable2!="valor"){ 
    
$sql.=" AND campo2 LIKE '%$variable2%'"
    } 
    if(
$variable3!="valor"){ 
    
$sql.=" AND campo3 LIKE '%$variable3%'"
    } 
    if(
$variable4!="valor"){ 
    
$sql.=" AND campo4 LIKE '%$variable4%'"
    } 
    
$sql=substr($sql,4); 
Es para 4 campos de un select,donde valor puede ser todos,y entonces si es diferente de todos los productos de ese campo lo agrega a la sentecia.
  #8 (permalink)  
Antiguo 19/11/2004, 08:41
 
Fecha de Ingreso: agosto-2004
Mensajes: 440
Antigüedad: 13 años, 3 meses
Puntos: 2
busqueda

el codigo que tengo es algo asi hasta el moemnto solo estoy probando que busque bien las palabras pero cusno ingreso una palabra que no existe me sale el letrero que puse que no existe pero ademas me dice que si existe en proyecto y documento,,,nose que puede ser:

***************************************
<HTML>
<HEAD>
<TITLE>ASSYS LTD</TITLE>
<? require_once('../clases/conexion.php'); ?>
<link href="../estilos/estilo.css" rel="stylesheet" type="text/css">

<?

$palabras = $_POST["palabras"];
//convierte las palabras en mayusculas
$palabras = strtoupper($palabras);
echo "la palabra es: $palabras<br>";
//dividir cadena
$cadenas = explode(",", $palabras);


global $connection;
conexion();

$idpalabras="";
$nompalabras="";

while (list($indice, $palabra)=each($cadenas))
{
if ($palabra !="")
{

//consultar palabras para verificar si existen o no
[email protected]_query($connection, "select * from pal_claves where nom_palclave='$palabra'");
$verificar = 0;
$verificar= pg_num_rows($resultado);

//la plabra no existe
if($verificar==0){ ?>

<center>
<?
echo "<font color= '#CC0000'><br>La palabra '$palabra' no existe </font>";
?>
</center>
<?
//consultamos
[email protected]_query($connection, "select * from pal_claves where nom_palclave='$palabra'");
$verificar= pg_num_rows($resultado);
}

//la palabra si existe
if($verificar!=0){

//consultamos
$resultado=pg_query($connection, "select * from pal_claves where nom_palclave='$palabra'");
$verificar= pg_num_rows($resultado);

//saca valor de id_palclave y se almacena en un variable
while($x = pg_fetch_array($resultado)){

if ($idpalabras == "")
$idpalabras.= $x["id_palclave"];
else
$idpalabras.= "," . $x["id_palclave"];
}
echo "$idpalabras<br>";
}

//corchetes while
}}


//////////////////////////////////////////
[email protected]_query($connection,"select * from proyecto where palabras like '%$idpalabras%'");
$verificar1 = pg_num_rows($resultado1);
echo "verif proyecto: $verificar1<br>";

if($verificar1!=0){ ?>
<center>
<?
echo "<font color= '#CC0000'><br>La palabra existe en Proyecto </font>";
}
?>
</center>
<?
[email protected]_query($connection,"select * from documento where palabras like '%$idpalabras%'");
$verificar2 = pg_num_rows($resultado2);
echo "verif documento: $verificar2<br>";

if($verificar2!=0){ ?>
<center>
<?
echo "<font color= '#CC0000'><br>La palabra existe en Documento </font>";
}
?>
</center>
<?
if($verificar1==""){ if($verificar2==""){
//$resultado=pg_query($connection, "delete from pal_claves where id_palclave like '%$palabra%'");
echo "<font color= '#CC0000'><br>La palabra no existe en Documento ni en Proyecto </font>";
}
}

@pg_close($connection);

?>
<link href="estilos/estilo.css" rel="stylesheet" type="text/css">

</HEAD>

<body>

<?

//seleccionar la tabla palabras para mostrar los resultados
global $connection;
conexion();

[email protected]_query($connection,"select * from pal_claves order by nom_palclave");
$verificar= pg_result_status($resultado);

if($verificar===2){
$w1=0;
// echo '<br>verificacion correcta<br>';
} else {
$w1=1;
// echo '<br>verificacion incorrecta';
}


@pg_close($connection);

if($w1==0)
{
?>
<br>
<br>
<br>


<center>

<h2><i>Resultados de la Eliminacion </i></h2>
<table border="1" align = "center">
<tr>

</tr>
<br>
<br>

<?
$num_filas = pg_num_rows($resultado);
$num_campos = pg_num_fields($resultado);


$i = pg_num_fields($resultado);
for ($j = 0; $j < $i; $j++) {

$fieldname = pg_field_name($resultado, $j);

echo "<td><b> $fieldname\n";
echo "</b></td>";
}

while ($fila = pg_fetch_row($resultado))
{

echo "<tr>";
for($i=0; $i<$num_campos; $i++)
{
echo "<td>";

print " ".$fila[$i]."<br>";
echo "</td>";
}

echo "</tr>";
}

}

?>

</table>

<br>

<input name="aceptar" type="button" id="aceptar" value="Aceptar" onClick="javascript:correct=confirm('¿Desea realizar otra Búsqueda?'); if(correct == true){location.replace('../buscar.php');}else{location.replace('../inicio.php');}">
<br>

<style type="text/css">
<!--
body { cursor: crosshair}
-->
</style>

</BODY>
</HTML>

***************************
__________________
paty :adios:
  #9 (permalink)  
Antiguo 19/11/2004, 09:05
 
Fecha de Ingreso: septiembre-2004
Ubicación: Viviendo en Manresa(Barcelona)
Mensajes: 230
Antigüedad: 13 años, 2 meses
Puntos: 0
Si te lees el articulo que puso Cluster de mysql hispano, veras que lo del indici FULLTEXT te puede ir como anillo al dedo,y simplificarte mucho el codigo. Yo lo acabo de leer y creo que es una herramienta potente para buscar palabras clave, ya que te permite incluir +,-,es decir, parametros Booleanos para busqueda, sin tener que separar la cadena.

Recuerdos!
  #10 (permalink)  
Antiguo 19/11/2004, 09:12
 
Fecha de Ingreso: agosto-2004
Mensajes: 440
Antigüedad: 13 años, 3 meses
Puntos: 2
buscador

ok lo voy a leer detenidamente, pero la busqueda que tengo que hacer es simplemente la palabra y si son varias es solo separadas por comas no admite nigun caracter mas. asi que le recomiendo todos los ejemplo que me puedan enviar, sin embargo yo leere el articulo gracias
__________________
paty :adios:
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 08:13.