Foros del Web » Programando para Internet » PHP »

Buscador de noticias en Base de Datos

Estas en el tema de Buscador de noticias en Base de Datos en el foro de PHP en Foros del Web. Hola gente forera!.. estoy con ganas de implementar un buscador de noticias ya publicadas en mi sitio, pero no sé bien cómo implementarlo. Me gustaría ...
  #1 (permalink)  
Antiguo 23/07/2007, 16:33
 
Fecha de Ingreso: septiembre-2006
Mensajes: 141
Antigüedad: 17 años, 7 meses
Puntos: 1
Buscador de noticias en Base de Datos

Hola gente forera!.. estoy con ganas de implementar un buscador de noticias ya publicadas en mi sitio, pero no sé bien cómo implementarlo. Me gustaría ver opciones.

Tengo una base de datos NOTICIA en la cual está "comentarios" es el contenido del texto, "titulo" es el titulo y "bajada" un breve avance de la noticia.

Bien, con un SELECT lo puedo hacer? Si es así, cómo sería la consulta? ya que no sé cómo llamar a la "palabra clave" que el usuario quiera buscar.

O sea, si hago algo así $sql="select * from noticia where .........."; en la línea punteada estaría definido que la palabra clave a buscar sería igual a alguna del contenido de "comentario" en la noticia.

Agradezco cualquier puntapié inicial, ya después veré como distribuyo los resultados y etcéteras..

Saludos!
  #2 (permalink)  
Antiguo 23/07/2007, 17:13
Avatar de damian.adriel  
Fecha de Ingreso: junio-2007
Mensajes: 35
Antigüedad: 16 años, 10 meses
Puntos: 0
De acuerdo Re: Buscador de noticias en Base de Datos

Hola

Aqui te muestro una consulta SQL con la cual puedes buscar en la base de datos:

SELECT * FROM noticias WHERE titulo LIKE '%$titulo%' OR texto LIKE '%$titulo%' ORDER BY id DESC

Con la anterior consulta mostrara los registros en los cuales coincida el titulo y texto buscado. Esto se realiza usando "LIKE".

Espero puedas resolver.

Saludos, damian.

--
Damian Adriel Perez Valdes
http://damianpv.wordpress.com
  #3 (permalink)  
Antiguo 23/07/2007, 17:15
 
Fecha de Ingreso: mayo-2007
Mensajes: 22
Antigüedad: 16 años, 11 meses
Puntos: 0
Re: Buscador de noticias en Base de Datos

tenes que usar "LIKE" con los % a cada lado de la palabra que busca el tipo

si el tipo quiere una noticia que contenga.... "perro" seria

$search="perro";
(...)
select *
from noticia
where
bajada LIKE "%perro%"
or
titul LIKE "%perro%"



fijate bien como se usa LIKE pero creo ke asi funciona =) saludos
  #4 (permalink)  
Antiguo 23/07/2007, 17:17
 
Fecha de Ingreso: septiembre-2006
Mensajes: 141
Antigüedad: 17 años, 7 meses
Puntos: 1
Re: Buscador de noticias en Base de Datos

Te agradezco la respuesta, no sabía cómo plantear eso.

Pero como "engancho" la palabra que pongan en el buscador con esta consulta?
No sé si me explico, al escribir una palabra y darle click no entiendo como funciona.

Agradezco una orientación por ese lado y ya planteo bien el problema con un poco de código.

Saludos!
  #5 (permalink)  
Antiguo 23/07/2007, 17:24
Avatar de damian.adriel  
Fecha de Ingreso: junio-2007
Mensajes: 35
Antigüedad: 16 años, 10 meses
Puntos: 0
Re: Buscador de noticias en Base de Datos

si obtendras mediante un formulario la palabra a buscar puedes usar....

$texto = $HTTP_POST_VARS['texto'];

SELECT * FROM noticias WHERE titulo LIKE '%$texto%' OR texto LIKE '%$texto%' ORDER BY id DESC

Solo debes cambiarle el nombre del formulario.
  #6 (permalink)  
Antiguo 23/07/2007, 19:37
 
Fecha de Ingreso: septiembre-2006
Mensajes: 141
Antigüedad: 17 años, 7 meses
Puntos: 1
Re: Buscador de noticias en Base de Datos

Bueno.. voy a hacer las pruebas con esto que me has dado, me va a llevar algo dar con la tecla pero cuando más o menos lo tenga pongo algo de código por acá.

No es tan fácil para mi..

Saludos.
  #7 (permalink)  
Antiguo 24/07/2007, 22:16
 
Fecha de Ingreso: septiembre-2006
Mensajes: 141
Antigüedad: 17 años, 7 meses
Puntos: 1
Re: Buscador de noticias en Base de Datos

Bueno, no paro de hacer pruebas y no logro ni siquiera que me de un resultado.
Agradezco si alguien me orienta un poco y ve que hago mal.
Dejo el código en el que tengo el formulario y luego lo recibo.

Código PHP:
<? 
if (!$HTTP_POST_VARS){ 
?>
      <table width="512" border="0" align="center" cellspacing="0" bgcolor="#BECAE7" id="AutoNumber1" style="border-collapse: collapse">
    
    <tr class="txt-noticias">
     <form action="buscar.php" method="post" name="formulario" id="formulario">
      <td width="196" align="left"><div id="siteInfo8">PALABRA A BUSCAR :</div>
      <td width="350" align="right"><div id="siteInfo9"><input type=text name="texto" id="texto" size=54></div>
<tr>
      <td height="0" colspan="3" align="right"><div align="right">
        <input onclick="comprobar()" type="button" name="enviar" value="Buscar">
      </div>
  <tr>
    <td height="0" colspan="3" valign="bottom" bgcolor="#C1CEE8">

</form>  

<? 
}else{ 
    
$texto $HTTP_POST_VARS['texto']; 

    
//hago la consulta 
    
$sqlbusc="SELECT * FROM noticias WHERE titulo LIKE '%$texto%' OR texto LIKE '%$texto%' ORDER BY id DESC"
    
$resulta=mysql_query($sqlbusc,$link);
while (
$rowbuscar=mysql_fetch_array($resulta)){
    
//doy las gracias por el envío 
    
echo "$resulta"

}
?>
Con esto me tira error:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in c:\domains\elacontecer.com.uy\wwwroot\buscar.php on line 197

En esa línea es donde está el "while".

Perdón la desprolijidad :S Espero que alguien me ayude.

Saludos
  #8 (permalink)  
Antiguo 25/07/2007, 08:05
GPS
 
Fecha de Ingreso: diciembre-2003
Ubicación: Montevideo, Uruguay
Mensajes: 110
Antigüedad: 20 años, 4 meses
Puntos: 0
Re: Buscador de noticias en Base de Datos

Código PHP:
while ($rowbuscar=mysql_fetch_array($resulta)){
    
//doy las gracias por el envío 
    
echo "$resulta"

Cambia
Código PHP:
echo "$resulta"
por
Código PHP:
echo $rowbuscar['titulo']; 
Saludos!
  #9 (permalink)  
Antiguo 25/07/2007, 15:50
 
Fecha de Ingreso: septiembre-2006
Mensajes: 141
Antigüedad: 17 años, 7 meses
Puntos: 1
Re: Buscador de noticias en Base de Datos

Lo cambié y me sigue tirando el mismo error.

Alguna idea??
  #10 (permalink)  
Antiguo 25/07/2007, 16:37
GPS
 
Fecha de Ingreso: diciembre-2003
Ubicación: Montevideo, Uruguay
Mensajes: 110
Antigüedad: 20 años, 4 meses
Puntos: 0
Re: Buscador de noticias en Base de Datos

En realidad lo que dice el error es que esta mal planteada la consutla mysql.

Proba con esto:
Código PHP:
$sqlbusc="SELECT * FROM noticias WHERE titulo LIKE '%".$texto."%' OR texto LIKE '%".$texto."%' ORDER BY id DESC"
  #11 (permalink)  
Antiguo 26/07/2007, 01:51
 
Fecha de Ingreso: septiembre-2006
Mensajes: 141
Antigüedad: 17 años, 7 meses
Puntos: 1
Re: Buscador de noticias en Base de Datos



Sigo son encontrarle la vuelta, quería hacer un buscador y no puedo hacer funcionar una sola consulta.

El problema está cuando le doy en el botón Buscar, ahí abre la página y encuentra el error en la consulta, no solo eso, también desordena todo el código ya que las tablas aparecen todas esparcidas.

Voy a prolijear un poco esto y pongo todo el código, sino va a ser imposible.

Saludos
  #12 (permalink)  
Antiguo 26/07/2007, 19:35
 
Fecha de Ingreso: septiembre-2006
Mensajes: 141
Antigüedad: 17 años, 7 meses
Puntos: 1
Re: Buscador de noticias en Base de Datos

Bueno acabo de usar un script de Desarrolloweb.com y me tira el mismo error!!.. me podría decir algún entendido qué es lo que tengo mal?? Ya que teóricamente este script anda bien y no debería tirar el error de que "mysql_fetch_array(): supplied argument is not a valid MySQL result resource in c:\domains\...\wwwroot\buscador.php on line 50"..

Agradezco la ayuda, dejo el script:


Código PHP:
<? include "global.php";

?>
<html>

<body bgcolor="#D7DAC3">
<SCRIPT LANGUAGE="JavaScript">
function registro(){
open('http://www.guidilab.com/', 'Sizewindow', 'width=600,height=300,scrollbars=no,toolbar=no')
}
</SCRIPT>
<form method = "POST" action = "buscador.php">
   <table width="403" align="center">
    <tr>
   <td><div align="center">Buscar:
    <input type="text" name="palabra" id="palabra" size="20">
    <input type="submit" name="Submit" value="GO">
    </div></td>
   </tr>
  </table>
<hr>
<?PHP

//busca en una base de datos hecha en mysql con campos distribuidor, marca, producto, comentario, pero recuerda que puedes cambiarlos
$campo = array("categoria""comentario""subseccion");
//aqui ponemos los campos de la tabla en que queremos buscar
$numelentos count($campo);//toma el numero de campos y lo guarda para usarla despues
$bandera "si";//bandera para indicar si se encontro la palabra
for ($i=0$i $numelentos$i++)
//realizaremos el recorrido de busqueda en cada campo que seleccionamos de nuestra tabla
{// inicio for
$campoac$campo[$i];//guardamos el campo actual

$a$_POST['palabra'];//Guardamos la palabra que se buscara

if ($a==false)// si no se ingreso una palabra nos avisa
 
{
  echo 
"<p>Debe especificar la busqueda</p> \n";
  echo 
"</html></body> \n";
  exit;
 }

$link Conectarse();
//si se ingreso la palabra nos conectamos
mysql_select_db("acontecer"$link);
//que busque en el campo actual la palabra enviada y lo ordene por un campo especifica
$sql "SELECT * FROM noticia WHERE $campoac LIKE '%{$_POST['palabra']}%' ORDER BY id_noticia";
$result mysql_query($sql$link);

if (
$row mysql_fetch_array($result))// si se encontro la palabra
 
{
   
mysql_field_seek($result,0);
  while (
$field mysql_fetch_field($result)){
   echo 
"<td><b></b></td> \n";
 }
//imprimimos nustros resultados do {
   
echo "<table width=\"431\">
   <tr> <td width=\"425\"><table width=\"100%\"><tr><strong>
    <td width=\"205\"> <div align=\"center\"><FONT COLOR=\"#0099FF\">Distribuidor:</FONT></strong>"
.$row["distribuidor"]."</td>
    <td width=\"206\"> <strong><FONT COLOR=\"#0099FF\">Marca:</FONT></strong>"
.$row["marca"]."</td>
  </tr></table></td></tr><tr>
  <td><strong><FONT COLOR=\"#0099FF\"> Producto:</FONT></strong>"
.$row["producto"]."</td></tr><tr>
  <td><strong><FONT COLOR=\"#0099FF\">Descripcion:</FONT></strong>"
.$row["comentario"]."</td>
  </tr><tr><td><strong> <FONT COLOR=\"#0099FF\">Link:</FONT></strong></td></tr><tr>
  <td><div align=\"center\"><strong><FONT COLOR=\"#000099\"><a href=\"javascript:registro();\">Pedir Cotizacion</FONT> </strong></a> </div></td></tr>
  </table>"
;// siempre emos querido poner links en los resultados aqui pongo un pequeño ejemplo de como hacerlo pero si queires ser mas espesifico en el linck pues juega un poco con el codigo
  
echo "<p> </p> \n";
  echo 
"<hr>";
 
$bandera "no";//cambiamos la bandera para avisar que si se encontro la palabra
}
while (
$row mysql_fetch_array($result));
  echo 
"</table> \n";
 }

//fin for
if ($bandera == "si"//si la bandera sigue en si es que no encontro la palabra y avisamos
{ echo "<p>¡No se ha encontrado ningún registro!</p>\n";
?>    </form>  </div>

</body>



</html>

Saludos!

Última edición por elbastardo; 26/07/2007 a las 19:44
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:06.