Ver Mensaje Individual
  #12 (permalink)  
Antiguo 20/06/2007, 09:35
asc3design
 
Fecha de Ingreso: junio-2007
Ubicación: En Bogotá
Mensajes: 61
Antigüedad: 16 años, 10 meses
Puntos: 3
Re: Ayuda con codigo para busqueda

Hola a todos bueno lamentablemente el buscador no quedo del todo como queria ya que cuando le doy buscar con numeros o palabras mayusculas no me sale ninguna consulta, por hay estube viendo un tutorial de un buscador con LIKE y MATCH combinados, pero el problema es que no trabaja no se si podria aplicar lo mismo para el mio atraves de un if y un elseif para que consulte lo de la casilla de texto con el like y lo del menu de selecion con MATCH, aki esta el ejemplo

Código PHP:
mysql_connect("host","usuario","password");
//DEBO PREPARAR LOS TEXTOS QUE VOY A BUSCAR si la cadena existe
if ($busqueda<>''){
   
//CUENTA EL NUMERO DE PALABRAS
   
$trozos=explode(" ",$busqueda);
   
$numero=count($trozos);
  if (
$numero==1) {
   
//SI SOLO HAY UNA PALABRA DE BUSQUEDA SE ESTABLECE UNA INSTRUCION CON LIKE
   
$cadbusca="SELECT REFERENCIA, TITULO FROM ARTICULOS WHERE VISIBLE =1 AND DESARROLLO LIKE '%$busqueda%' OR TITULO 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 REFERENCIA, TITULO , MATCH ( TITULO, DESARROLLO ) AGAINST ( '$busqueda' ) AS Score FROM ARTICULOS WHERE MATCH ( TITULO, DESARROLLO ) AGAINST ( '$busqueda' ) ORDER BY Score DESC LIMIT 50";
}
$result=mysql("teleformacion"$cadbusca);
While(
$row=mysql_fetch_object($result))
{
   
//Mostramos los titulos de los articulos o lo que deseemos...
  
$referencia=$row->REFERENCIA;
   
$titulo=$row->TITULO;
   echo 
$referencia." - ".$titulo."<br>";;

PD: Ya probé con la opción de LIKE AND Y OR y solo me toma la opcion del campo de texto

Código PHP:
$bus .= "`$Field` like '%$buscar%' AND `$Field` like '%$buscarbd%'"

este seria mi código me esta mandando error en el leseif

Código PHP:
<?php
error_reporting
(E_ALL E_NOTICE);
require(
"config.php");

?>

 <?php
require_once("database.php");
$TableID $_POST['table_id'];
$Fields explode("@"$Tables[$TableID]);
$numero=count($Fields);

// get the primary key and check that it is selected in the $fields
require_once("primary.php");
$PRS get_primary($TableNames[$TableID]);

     
//if((!$buscarbd) || ($buscarbd == "")) { $buscarbd = ""; } else { $buscarbd = "+(".$buscarbd.")"; }
     //if((!$code) || ($code == "")) { $code = ""; } 
     //if((!$buscar) || ($buscar == "")) { $buscar = ""; } else { $buscar = "-(".$buscar.")"; }
//$bus = "select * from `$TableNames[$TableID]` where ";
if ($numero==1) {

$bus "SELECT * FROM `$TableNames[$TableID]` WHERE ";

$Counter 0;

foreach(
$Fields as $Field)
    {
        
$Counter++;
        if(
$Counter 1)
            {
                
$bus .= " or ";
            };
        
$bus .= "`$Field` like '%$buscar%'";
        
//$bus .= "`$Field` like '%$buscar%' AND `$Field` like '%$buscarbd%'";
        
} elseif ($numero>1) {
        
$bus "
       SELECT *,
          MATCH(code, rate, country) AGAINST ('$buscarbd $code' IN BOOLEAN MODE) AS score 
          FROM `$TableNames[$TableID]`
       WHERE "
;
        
        
$bus .= "MATCH(code, rate, country) AGAINST ('$buscarbd $code' IN BOOLEAN MODE)";}
             
//$buscarbd .= "MATCH($Field) AGAINST ('$_POST[buscarbd]')";
        
    
};
print(
"<h3 align=center><span class='content'>Search Results</samp></h3>");
$Result mysql_query($bus);
print(
mysql_error());
print(
"<table align=center class=Table>");
print(
"<tr class=Header>");
foreach(
$Fields as $Field)
    {
        print(
"<td><b>$Field</b></td>");
    };
    
//print("<td><b>Edit</b></td>");
    //print("<td><b></b></td>");
    //print("<td><b>Delete</b></td>");
print("<tr>");
$ResultCounter 0;
while(
$Raw mysql_fetch_array($Result))
{
        print(
"<tr class=TableAltRow>");
        
$temp "";
    foreach(
$Fields as $Field)
    {
             if (
count($PRS)!=0)
             {

              if(
in_array($Field,$PRS))
              {
                      if(empty(
$temp))
                      {
                        
$temp "$Field = '".$Raw[$Field]."'";
                      }

                     else

                      {
                     
$temp .=   " and $Field = '".$Raw[$Field]."'";
                      }
              }



             }

    print(
"<td>$Raw[$Field]</td>");

    };


          if(
count($PRS) != 0)
             {
                
?>
            
      </td>
          <td>&nbsp;</td>
                <?php
              
}
              ELSE
              {
                  echo
"<td></td> <td></td>";
              }
        
$ResultCounter++;
        print(
"</tr>");
};
?>
</table>
<?php

  
if (count($PRS)==0)
   {
     echo 
"<p align='center'><font color='#000080'><i>Su Resultado</i></font></p>";
   }

?>
<p align="center"><a class="links" href="main.php?table_id=0&Action=Go">Home</a></p>
de nuevo gracias por toda la colaboración prestada

Última edición por asc3design; 20/06/2007 a las 09:42