Foros del Web » Programando para Internet » PHP »

Buscador hacia la DB con 2 criterios

Estas en el tema de Buscador hacia la DB con 2 criterios en el foro de PHP en Foros del Web. Hola a todos, Estoy creando un buscador hacia mi base de datos de noticias deportivas. Y he conseguido que funcione, pero no exactamente como desearia. ...
  #1 (permalink)  
Antiguo 03/05/2007, 06:30
 
Fecha de Ingreso: noviembre-2006
Mensajes: 68
Antigüedad: 17 años, 5 meses
Puntos: 0
Buscador hacia la DB con 2 criterios

Hola a todos,

Estoy creando un buscador hacia mi base de datos de noticias deportivas.

Y he conseguido que funcione, pero no exactamente como desearia. Tienes para buscar por palabra y lo complementas con un select donde eliges el deporte.

El formulario de busqueda es así:

Código:
<form method="post" action="../busquedas/buscar.php">
      <p style="text-align: center"><input name="buscar" type="text" size="15" /></p>
      <p style="text-align: center"><select name="seccion">
            <option value="futbol">F&uacute;tbol</option>
            <option value="futbolsala">F&uacute;tbol Sala</option>
            <option value="ajedrez">Ajedrez</option>
            <option value="tenis">Tenis</option>
            <option value="motociclismo">Motor</option>
            <option value="voley">Voleibol</option>
            <option value="atletismo">Atletismo</option>
            <option value="ciclismo">Ciclismo</option>
            <option value="basket">Basket</option>
            <option value="natacion">nataci&oacute;n</option>
            <option value="tenisdemesa">Tenis de Mesa</option>
              <option value="deportes">Más Deporte</option>
            </select>
      </p>
      <p style="text-align: center"><input class="buscadorboton" type="submit" value="Buscar" /></p>
      </form>
Tenemos el input name= buscar y el select name= seccion

Ahora en el buscar.php:

Código:
<?php 

$buscar=$HTTP_POST_VARS['buscar'];
$seccion=$HTTP_POST_VARS['seccion'];

$buscar= trim($buscar);

if (!$buscar || !$seccion)
{ 


exit; 

} 

$buscar = addslashes($buscar);
$seccion = addslashes($seccion);


@ $db = mysql_connect("localhost", "xxxx", "xxxx"); 

if (!$db)

{
   echo 'Error de conexión a la base de datos. Vuelva a intentarlo más tarde';
   exit;
	}

mysql_select_db("xxxxx"); 

$query = "SELECT id,titulo,descripcion,file,seccion,DATE_FORMAT(fecha,\"%d/%m/%Y\") as fecha FROM noticias WHERE titulo LIKE '%$buscar%' OR descripcion LIKE '%$buscar%' AND seccion = '%$seccion%' ORDER BY fecha"; 

$result = mysql_query($query); 

$num_results = mysql_num_rows($result);

	
	?>
	

echo '<h2>Número de resultados: '.$num_results.'</h2>';

for ($i=0; $i <$num_results; $i++)
{

$row = mysql_fetch_array($result);

echo '<p style="color:#EE3439; text-align:justify; padding:5px 5px 0 5px; font-size:14px; font-weight:bold;">';
?>
<img src="../images/noticias/<?php echo $row['file']; ?>" style="float:left; margin-right:5px; border:2px solid #717370;" width="100" height="100"/>
<?
echo '(';
echo stripslashes($row['fecha']);
echo ') ';
echo htmlspecialchars(stripslashes($row['titulo']));
echo '</p><p style="color:#747273; text-align:justify; padding:5px;">';
echo stripslashes($row['descripcion']);
echo '</p></h1>';
}

?>

El caso es que buscar, busca y encuentra pero pasa tres pueblos del deporte que elijas en el select.

Quiero que como palabra busque en el TITULO o la DESCRIPCION de la base de datos. y del campo SECCION el deporte.

Alguien ve, en que estoy errando?

Es mi primer buscador y estoy contento de que me haya salido pero no veo este fallo.

Gracias!
  #2 (permalink)  
Antiguo 03/05/2007, 08:32
Avatar de eits  
Fecha de Ingreso: junio-2005
Ubicación: valladolid, yucatán
Mensajes: 1.655
Antigüedad: 18 años, 10 meses
Puntos: 88
Re: Buscador hacia la DB con 2 criterios

aqui te pongo el código con algunas modificaciones, pero no logro enterder lo que deseas hacer
Código PHP:
<?php 

$buscar
=$_POST['buscar'];//$HTTP_POST_VARS ya no se usa.
$seccion=$_POST['seccion'];

$buscartrim($buscar);

if (!
$buscar)// !$seccion, este no es necesario porque siempre tendrá un valor

    die(
"debe escribir el criterio de busqueda"); // es mejor dar un mensaje para saber que esta odurriendo


$buscar addslashes($buscar);
$seccion addslashes($seccion);
$db = @mysql_connect("localhost""xxxx""xxxx"); 

if (!
$db)

{
   echo 
'Error de conexión a la base de datos. Vuelva a intentarlo más tarde';
   exit;
}

mysql_select_db("xxxxx"); 

$query "SELECT id,titulo,descripcion,file,seccion,DATE_FORMAT(fecha,'%d/%m/%Y') as fecha FROM noticias WHERE titulo LIKE '%$buscar%' OR descripcion LIKE '%$buscar%' AND seccion = '%$seccion%' ORDER BY fecha"

$result mysql_query($query); 

$num_results mysql_num_rows($result);

echo 
'<h2>Número de resultados: '.$num_results.'</h2>';

for (
$i=0$i <$num_results$i++)
{
    
$row mysql_fetch_array($result);
    echo 
'<p style="color:#EE3439; text-align:justify; padding:5px 5px 0 5px; font-size:14px; font-weight:bold;">';
?>
    <img src="../images/noticias/<?php echo $row['file']; ?>" style="float:left; margin-right:5px; border:2px solid #717370;" width="100" height="100"/>
<?
    
echo '(';
    echo 
stripslashes($row['fecha']);
    echo 
') ';
    echo 
htmlspecialchars(stripslashes($row['titulo']));
    echo 
'</p><p style="color:#747273; text-align:justify; padding:5px;">';
    echo 
stripslashes($row['descripcion']);
    echo 
'</p></h1>';
}
?>
suerte y saludos
__________________
El amor es la locura mas lucida que tiene el hombre.- Andres Henestrosa
la tristeza no existe, solo es... la ausencia de la felicidad.
  #3 (permalink)  
Antiguo 03/05/2007, 09:13
 
Fecha de Ingreso: noviembre-2006
Mensajes: 68
Antigüedad: 17 años, 5 meses
Puntos: 0
Re: Buscador hacia la DB con 2 criterios

Muchas gracias!!

Ya he hecho tus correcciones que mejoran el codigo pero aun no hace lo que tengo en mente.

Ahora mismo en mi buscador, si busco una noticia donde la $buscar = RAFA NADAL y $seccion = BASKET me recupera la noticia, pero no debería!! Me la debería recuperar si la $seccion = TENIS.

Quizás antes, no me he explicado bien. Pero estoy casi seguro que lo que estoy haciendo mal está en el where del select a la DB:

WHERE titulo LIKE '%$buscar%' OR descripcion LIKE '%$buscar%' AND seccion = '%$seccion%' ORDER BY fecha


No creeis ?

Gracias!
  #4 (permalink)  
Antiguo 03/05/2007, 11:38
Avatar de el cirujano  
Fecha de Ingreso: mayo-2003
Ubicación: Frente al PC
Mensajes: 609
Antigüedad: 20 años, 11 meses
Puntos: 3
Re: Buscador hacia la DB con 2 criterios

si es para que te de la cadena exacta RAFA NADAL + BASKET quita los OR de tu sentencia SQL y colocale a todos el AND
__________________
CSS2 + AJAX + PHP + MySQL, una mezcla sin competencia!!!!!!
  #5 (permalink)  
Antiguo 04/05/2007, 04:03
 
Fecha de Ingreso: noviembre-2006
Mensajes: 68
Antigüedad: 17 años, 5 meses
Puntos: 0
Re: Buscador hacia la DB con 2 criterios

Pero el OR lo tengo puesto para que me busque la $buscar tanto en el campo de 'titulo' como de 'descripción' en la base de datos y luego el AND para que ademas la $seccion sea igual que la que se ponga en el formulario.

No se si me explico... pero alucino de que no sea así. Debe ser un error muy chorra.

Alguna idea más?
  #6 (permalink)  
Antiguo 04/05/2007, 07:27
Avatar de el cirujano  
Fecha de Ingreso: mayo-2003
Ubicación: Frente al PC
Mensajes: 609
Antigüedad: 20 años, 11 meses
Puntos: 3
Re: Buscador hacia la DB con 2 criterios

si colocas el OR es asi te busca a:

RAFA NADAL

o

RAFA NADAL + BASKET

pero tu quieres que te salga solo es

RAFA NADAL + BASKET

entonces no puedes usar el OR sino el AND para que sea directa tu consulta
__________________
CSS2 + AJAX + PHP + MySQL, una mezcla sin competencia!!!!!!
  #7 (permalink)  
Antiguo 04/05/2007, 12:26
 
Fecha de Ingreso: noviembre-2006
Mensajes: 68
Antigüedad: 17 años, 5 meses
Puntos: 0
Re: Buscador hacia la DB con 2 criterios

Entiendo...

Pero me sigue sin funcionar:

WHERE titulo LIKE '%$buscar%' AND descripcion LIKE '%$buscar%' AND seccion = '%$seccion%' ORDER BY fecha

Me sigue sin respetar el select de $seccion

Gracias de todas formas
  #8 (permalink)  
Antiguo 04/05/2007, 13:12
Avatar de el cirujano  
Fecha de Ingreso: mayo-2003
Ubicación: Frente al PC
Mensajes: 609
Antigüedad: 20 años, 11 meses
Puntos: 3
Re: Buscador hacia la DB con 2 criterios

el seccion es un <select>? si es asi no necesitas seccion = '%$seccion%' hazlo directo... seccion = '$seccion'...

Código PHP:
WHERE titulo='%$buscar%' AND descripcion='%$buscar%' AND seccion='$seccion' ORDER BY fecha 
__________________
CSS2 + AJAX + PHP + MySQL, una mezcla sin competencia!!!!!!
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 20:23.