Foros del Web » Programando para Internet » PHP »

Ayuda con codigo para busqueda

Estas en el tema de Ayuda con codigo para busqueda en el foro de PHP en Foros del Web. Hola a todos gracias por dejarme registrar en su foro espero me ayuden mucho y asi mismo yo ayudar a otros, de eso es que ...
  #1 (permalink)  
Antiguo 19/06/2007, 08:05
 
Fecha de Ingreso: junio-2007
Ubicación: En Bogotá
Mensajes: 61
Antigüedad: 16 años, 10 meses
Puntos: 3
Ayuda con codigo para busqueda

Hola a todos gracias por dejarme registrar en su foro espero me ayuden mucho y asi mismo yo ayudar a otros, de eso es que se trata una comunidad y me siento muy bien que me reciban en esta, ahora si voy al grano como dicen, resulta que estoy trabajando con una pagina y esta tiene una base de datos, (MySql) con el que hay una serie de precios de llamadas a diferentes países, la idea mía es que su pueda hacer mediante un buscador por un menú de selección con todos los paises hasta hay esta bien, pero aparte de eso que tenga un campo de texto donde introducir otra referencia como el codigo de area o el precio en dolares, para que haga un barrido de lo que sea semejante, esta realizado mediante la funcion LIKE de php, bueno aki va el codigo

Este seria el search.php

Mmmmmmmmmmmmmmm no me deja mostrar el codigo por que no tengo antiguedad, no se que hacer necesitaba la ayuda
  #2 (permalink)  
Antiguo 19/06/2007, 08:09
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Re: Ayuda con codigo para busqueda

Si no estas utilizando PHP orientado a objetos te recomiendo hacer tu pregunta en el foro de PHP General.

Para publicar codigo necesitas poner entre corchetes [PHP ] y [/PHP ] para que se ponga el codigo indentado.

Saludos.
  #3 (permalink)  
Antiguo 19/06/2007, 08:12
 
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

Aqui dejo enlace de los codigos para que los puedan ver y así llevarsen una idea
wwwfortune-panama.com/test/tarifario.rar


Gracias por sus ayudas
  #4 (permalink)  
Antiguo 19/06/2007, 08:14
 
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

Cita:
Iniciado por GatorV Ver Mensaje
Si no estas utilizando PHP orientado a objetos te recomiendo hacer tu pregunta en el foro de PHP General.

Para publicar codigo necesitas poner entre corchetes [PHP ] y [/PHP ] para que se ponga el codigo indentado.

Saludos.

Gracias GatorV ya mismo lo muevo
  #5 (permalink)  
Antiguo 19/06/2007, 08:27
 
Fecha de Ingreso: junio-2007
Ubicación: En Bogotá
Mensajes: 61
Antigüedad: 16 años, 10 meses
Puntos: 3
De acuerdo Codigo para Busqueda Ayuda

Hola a todos gracias por dejarme registrar en su foro espero me ayuden mucho y asi mismo yo ayudar a otros, de eso es que se trata una comunidad y me siento muy bien que me reciban en esta, ahora si voy al grano como dicen, resulta que estoy trabajando con una pagina y esta tiene una base de datos, (MySql) con el que hay una serie de precios de llamadas a diferentes países, la idea mía es que su pueda hacer mediante un buscador por un menú de selección con todos los paises hasta hay esta bien, pero aparte de eso que tenga un campo de texto donde introducir otra referencia como el codigo de area o el precio en dolares, para que haga un barrido de lo que sea semejante, esta realizado mediante la funcion LIKE de php, bueno aki va el codigo

Este seria el search.php

Bueno por lo que estoy recién logeado no me deja insertar códigos con ninguna etiqueta, asi que aki les pongo el link con el rar de los codigos gracias

wwwfortune-panama.com/test/tarifario.rar
  #6 (permalink)  
Antiguo 19/06/2007, 08:31
Avatar de mauled  
Fecha de Ingreso: marzo-2005
Ubicación: Cd. de México.
Mensajes: 3.001
Antigüedad: 19 años, 1 mes
Puntos: 33
Re: Codigo para Busqueda Ayuda

No me queda del todo claro en que quieres que te apoyemos.

Saludillos.
  #7 (permalink)  
Antiguo 19/06/2007, 10:23
 
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

Bueno movi el post pero parece que lo quitaron, ya voy por buen camino ahora mi pregunta es la siguiente para que me puedan colaborar por favor;

en la sentencia LIKE hay una serie de variables
la primera es la selecion de la base de datos

$buscarbd = "select * from `$TableNames[$TableID]` where ";

Ahora en la parte de la busqueda:

$buscarbd .= "`$Field` like '%$_POST[buscarbd]%'";

La pregunta mia es como puedo insertar otra variable para multiple consulta

en esta caso seria $_POST[buscar] ya intente por comas pero no me deja, o sea de la siguiente manera like '%$_POST[buscarbd,buscar]%'

Les agradezco la inmensa ayuda
  #8 (permalink)  
Antiguo 19/06/2007, 11:58
 
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

sera que con like no se puede realizar múltiples búsquedas ??

Todavía estoy trabajando en lo mismo, recibo sugerencias
  #9 (permalink)  
Antiguo 19/06/2007, 12:18
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Re: Ayuda con codigo para busqueda

Solo agrega tu otra condicion agregando un AND es decir tu SQL tiene que quedarte asi:
Código:
select * from `$TableNames[$TableID]` where `$Field` like '%$_POST[buscarbd]%' AND `$Field` like '%$_POST[buscar]%'
Aunque para este tipo de busquedas es mejor usar indices FULL TEXT y usar MATCH/AGAINST.

Saludos.
  #10 (permalink)  
Antiguo 19/06/2007, 13:04
 
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

jeje tenias razón lo resolví usando MATCH es mejor para este tipo de consultas así quedo:

Código PHP:
SELECT *,
          
MATCH(codecountryAGAINST ('$buscarbd $code $buscar' IN BOOLEAN MODE) AS score 
          FROM 
`$TableNames[$TableID]`
       
WHERE "; 
Hay trabaja ya como quería.
  #11 (permalink)  
Antiguo 19/06/2007, 16:11
 
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 de nuevo se me esta presentando un problema con MATCH, no se si es por que esta en "IN BOOLEAN MODE" ,pero cuando le doy buscar por números no me sale nada, a diferencia de like si deja, la cuestión es que ya e probado de muchas maneras con la funcion LIKE y no deja realizar una busqueda con múltiples opciones, mmm hay estoy probando todavía cual quier cosa les comento, de nuevo gracias por la atención prestada
  #12 (permalink)  
Antiguo 20/06/2007, 09:35
 
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
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 02:34.