Ver Mensaje Individual
  #1 (permalink)  
Antiguo 19/07/2005, 09:32
Avatar de PabloP
PabloP
 
Fecha de Ingreso: marzo-2005
Mensajes: 83
Antigüedad: 19 años, 1 mes
Puntos: 0
alluda a revisar un código mas o menos extenso please

Bueno, gracias por lka ayuda. Mi idea era hacer un buscador tipo google dentro de mis noticias, o sea uno ingresa una frase y mi búsqueda encuentra todas las coincidencias con cada palabra de la frese sin repetir la noticia. Lo que primero hago es separar las palabras y eliminar los monosílabos como de, y, a, un por ejemplo y meter en un arreglo las palabras para luego realizar la busqueda, asigno a un nuevo arreglo cada id encontrado, lo limpio para eliminar los repetidos y luego hago un join al arreglo para utilizar este resultado en un sql con el IN o sea select * from tabla where id in arreglo. el problema es que al hacer el join, el sql considera todos los id como si fueran uno solo por lo que la búsqueda no encuentra resultado. Bueno eso, adjunto código, gracias.

Código PHP:
<?php 
$palabras 
$_POST['txtpal'];
$desglose explode(" "$palabras);

for (
$a=0;$a<count($desglose);$a++)
{
if ((
$desglose[$a] == "de") OR ($desglose[$a] == "a") OR ($desglose[$a] == "y") OR ($desglose[$a] == "la") OR ($desglose[$a] == "los") OR ($desglose[$a] == "las") OR ($desglose[$a] == "el") OR ($desglose[$a] == "un") OR ($desglose[$a] == "unas") OR ($desglose[$a] == "unos"))
{
$desglose[$a] = "cadena-de-palabras-prohibidas"//esto es para que no de problemas si la búsqueda comienza o termina con un monosilabo.
}
else
{
$desglose[$a] = $desglose[$a];
}
}

$limpieza_array array_unique($desglose);

$cantidad 0;
for (
$b=0;$b<count($limpieza_array);$b++)
{
$cantidad++;
}
///////////////////////////////////////////////////////////////////////
if ($_POST['boton']=='avanzada')
{
$d 0;
for (
$c=0;$c<$cantidad;$c++)
{
mysql_select_db($database_conexportal$conexportal);
    
$traer_ides = ("SELECT * FROM noticias WHERE (noticias.cuerpo_noticia LIKE '%".$limpieza_array[$c]."%' OR noticias.titulo_noticia LIKE '%".$limpieza_array[$c]."%' OR noticias.subtitulo_noticia LIKE '%".$limpieza_array[$c]."%') AND (noticias.area_noticia = 'general' OR noticias.area_noticia = 'columna')");
    
$ides_traidos mysql_query($traer_ides$conexportal) or die(mysql_error());
$pablo mysql_fetch_assoc($ides_traidos);
do {
  
$myarreglo[$d] = $pablo["id_noticia"];
$d++;
} while (
$pablo mysql_fetch_assoc($ides_traidos));
}
}
elseif (
$_POST['boton']=='rapida')
{
$d 0;
for (
$c=0;$c<$cantidad;$c++)
{
mysql_select_db($database_conexportal$conexportal);
    
$traer_ides = ("SELECT * FROM noticias WHERE (noticias.titulo_noticia LIKE '%".$limpieza_array[$c]."%' OR noticias.subtitulo_noticia LIKE '%".$limpieza_array[$c]."%') AND (noticias.area_noticia = 'general' OR noticias.area_noticia = 'columna')");
    
$ides_traidos mysql_query($traer_ides$conexportal) or die(mysql_error());
$pablo mysql_fetch_assoc($ides_traidos);
do {
  
$myarreglo[$d] = $pablo["id_noticia"];
$d++;
} while (
$pablo mysql_fetch_assoc($ides_traidos));
}
}
//////////////////////////////////////////////////////////////////////
$myarreglo_limpio array_unique($myarreglo);//contiene todos los id de las noticias encontradas sin repetir
$myarreglo_unido join($myarreglo_limpio);//junta todos los id
/////////////////////////////////////////////////aqui comienza el despliegue y la paginación////////////

if (!isset($pag)) $pag 1// Por defecto, pagina 1
//Cuenta cuantas noticias existen en la consulta
mysql_select_db($database_conexportal$conexportal);
    
$consulta_query_not = ("SELECT COUNT(*) FROM noticias WHERE noticias.id_noticia IN ('".$myarreglo_unido."')");
    
$consulta_reg mysql_query($consulta_query_not$conexportal) or die(mysql_error());

list(
$total) = mysql_fetch_row($consulta_reg);
$tampag 6;
$reg1 = ($pag-1) * $tampag;
///////////////////////////////////////////////////////////////////
mysql_select_db($database_conexportal$conexportal);
    
$query_not "SELECT * FROM noticias WHERE noticias.id_noticia IN ('".$myarreglo_unido."') LIMIT $reg1, $tampag";
    
$reg mysql_query($query_not$conexportal) or die(mysql_error());

if (
mysql_num_rows($reg)){
  echo 
"<table width='550' border = '0'> \n";
  while (
$row = @mysql_fetch_array($reg)) {
  echo 
"<tr><td>".$row["titulo_noticia"]."</td></tr>
        <tr><td>"
.$row["subtitulo_noticia"]."</td></tr>
        <tr><td></td></tr> \n"
;
  }
  echo 
"</table> \n";
}
else
  echo 
"¡ No se ha encontrado ningún registro !";


/* Funcion paginar
 * actual:          Pagina actual
 * total:           Total de registros
 * por_pagina:      Registros por pagina
 * enlace:          Texto del enlace
 * Devuelve un texto que representa la paginacion
 */
function paginar($actual$total$por_pagina$enlace) {
  
$total_paginas ceil($total/$por_pagina);
  
$anterior $actual 1;
  
$posterior $actual 1;

  if (
$actual>1)
    
$texto "<a href=\"$enlace$anterior\">&laquo;</a> ";
  else
    
$texto "<b>&laquo;</b> ";
  for (
$i=1$i<$actual$i++)
    
$texto .= "<a href=\"$enlace$i\">$i</a> ";
  
$texto .= "<b>$actual</b> ";
  for (
$i=$actual+1$i<=$total_paginas$i++)
    
$texto .= "<a href=\"$enlace$i\">$i</a> ";
  if (
$actual<$total_paginas)
    
$texto .= "<a href=\"$enlace$posterior\">&raquo;</a>";
  else
    
$texto .= "<b>&raquo;</b>";
  return 
$texto;
}

echo 
paginar($pag$total$tampag"resultado2.php?pag=");

?>