Foros del Web » Programando para Internet » PHP »

Consulta mysql con nuemros

Estas en el tema de Consulta mysql con nuemros en el foro de PHP en Foros del Web. Hola, estoy intentando hacer la tipica consulta con el abecedario y los numeros: A B C D E F G H I J K L ...
  #1 (permalink)  
Antiguo 25/02/2009, 11:23
 
Fecha de Ingreso: septiembre-2008
Mensajes: 91
Antigüedad: 15 años, 7 meses
Puntos: 0
Consulta mysql con nuemros

Hola, estoy intentando hacer la tipica consulta con el abecedario y los numeros:

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [0-9] Sin filtro

Esos son los links, funciona con todas las letras y con "sin filtro", ahora la pregunta es como hago el WHERE para los numeros? O sea, para listar los discos,por ej, que empiezen con un titulo que contiene numeros.

con las letras hago ...WHERE titulo LIKE '%.$letra."%'";

A cada letra en la url le mando letra="la que correspoanda" y numeros letra=1, pero como hago con el WHERE para los numeros?
  #2 (permalink)  
Antiguo 25/02/2009, 11:43
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 17 años, 8 meses
Puntos: 70
Respuesta: Consulta mysql con nuemros

Hola papucho666...

De la misma manera como con las letras...

Pero tu duda es sobre mysql, o tienes el problema directamente con php?

Saludos
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
  #3 (permalink)  
Antiguo 25/02/2009, 11:49
Avatar de ferbux  
Fecha de Ingreso: mayo-2007
Ubicación: por ahí intentado ayudar
Mensajes: 823
Antigüedad: 16 años, 11 meses
Puntos: 6
Respuesta: Consulta mysql con nuemros

Has como te dice Carxl, un like para el numero y agregale un AND.

SELECT... WHERE TITULO LIKE ..... AND NUMERO(TRACK) LIKE ....


Saludos!!!
__________________
"Eres grande por que caminas entre gigantes"
  #4 (permalink)  
Antiguo 25/02/2009, 12:08
 
Fecha de Ingreso: septiembre-2008
Mensajes: 91
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Consulta mysql con nuemros

Las variables las tomo con $_GET['']

Código PHP:
function get_discos($catid=NULL,$letra=NULL)
{
    
   if( 
db_connect())
    return 
false;
    
    
$query "SELECT * FROM discos";
    
    if(
$catid)
    
$query .=" WHERE catid=$catid";
        
    if(
$letra)
        
$query .=" AND title LIKE '".$letra."%'";
    
   
$result = @mysql_query($query);
    
   if (!
$result)
     return 
false;
      
   
$num_discos = @mysql_num_rows($result);
    
   if (
$num_discos ==0)
      return 
false;
        
   
$result db_result_to_array($result);
    
   return 
$result;

O sea, if ($letra), le puede ir cualquier letra del abecedario ó un 1 y en ese casa tiene que buscar titulos de discos que empiezen con un numero del 0 al nueve.

Que es eso de TRACK??
AND NUMERO(TRACK) LIKE
  #5 (permalink)  
Antiguo 25/02/2009, 13:09
Avatar de ferbux  
Fecha de Ingreso: mayo-2007
Ubicación: por ahí intentado ayudar
Mensajes: 823
Antigüedad: 16 años, 11 meses
Puntos: 6
Respuesta: Consulta mysql con nuemros

mmmm, perdon con lo de track me referia al numero de cancion asi como en las rocolas ya ves que estan ordenadas por titulo de disco y despues tu eliges el track que quieres buscar, pero no me hagas caso.

Sobre tu problema, te comento, la variables $letra puede ser cualquier cosa no solo una letra sino un numero (para el caso en que el tiulo comience por un numero ej. 1-mi disco), entonces debes usar tu misma funcion es decir si tu le dices que te despliege los discos que comienzen con la letra a tu variable $letra llevara una "a" y buscara todos los discos que tengan una 'a' al inicio y si tu le mandas un "1" a la variable letra te despliega todos los discos que comienzan con 1.

dale un vistazo a esto:

http://sql.1keydata.com/es/sql-like.php
__________________
"Eres grande por que caminas entre gigantes"
  #6 (permalink)  
Antiguo 25/02/2009, 13:15
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Consulta mysql con nuemros

Osi quieres mostrarlos TODOS los que contengan numeros puedes hacer unas combinaciones de OR. O tambien usar RLIKE y hacer algo como: SELECT * FROM tabla WHERE nombre RLIKE '^[0-9].*';
Si no me equivoco deberia funcionar. RLIKE es sinonimo de REGEXP de MySQL
  #7 (permalink)  
Antiguo 26/02/2009, 10:48
 
Fecha de Ingreso: septiembre-2008
Mensajes: 91
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Consulta mysql con nuemros

Ya lo resolví.
Aca les dejo la funcion, era lo que intentaba hacer.

Código PHP:
//por defaecto trae todos los libros
function get_books($catid=NULL,$letra=NULL,$oferta=NULL)
{
    
//si falla conexion aborta operacion
   
if(!$conn db_connect())
        return 
false;
    
    
//consulta por default
    
$query "SELECT * FROM books";
    
    
//si se seleecciono categoria $_GET['catid']    traemos todos los de esa categoria, obtenida por url
    
if($catid)
        
$query .=" WHERE catid=$catid";
    
        
//si se seleeccionoletra $_GET['letra']
    
if($letra)
    {    
        
//pregunto si se selecciono categoria
        
if ($catid)
            
$query.=" AND";
        else
            
$query.=" WHERE";
        
//    expresion regular libros que empiezen con una letra o los que empiezen de 0-9
        
$query .=" title RLIKE '^[".$letra."]'";
    
    }
        
    
//va a ser valida solo para index donde se muetrsen las ofertas
    //y no se puede seleccionar categoria ni letras
    
if($oferta)
        
$query .=" WHERE oferta='".$oferta."'";
    
    
//hago consulta
   
$result = @mysql_query($query);
    
    
//si no result
   
if (!$result )
     return 
false;
      
   
$num_books = @mysql_num_rows($result);
    
    
//si no hay nada se baorta
   
if ($num_books ==0)
      return 
false;
    
    
//pasa los resultados por otra funcion que devuelve el array    
   
$result db_result_to_array($result);
    
    
//devuelve consulta en array
   
return $result;

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 17:50.