Foros del Web » Programando para Internet » PHP »

Consulta p/ ordenar BD por fecha

Estas en el tema de Consulta p/ ordenar BD por fecha en el foro de PHP en Foros del Web. Hola, mi consulta es la sig.: quisiera que me aclaren un poco p/ poder ordenar resultados de una BD desde un formulario con un select ...
  #1 (permalink)  
Antiguo 28/05/2007, 22:48
Avatar de webdesignsite  
Fecha de Ingreso: enero-2007
Mensajes: 155
Antigüedad: 17 años, 3 meses
Puntos: 1
Consulta p/ limitar resultados BD por fecha

Hola, mi consulta es la sig.: quisiera que me aclaren un poco p/ poder ordenar resultados de una BD desde un formulario con un select por cantidad de días transcurridos, ej puede ser este mismo foro.

Gracias, espero ser claro, y espero sus ayudas.

Saludos!
__________________
WebDesignSite
Diseño Web - Altas Buscadores Gratis - Intercambio de Banners - Foros de soporte
http://webdesignsite.bolhost.com/

Última edición por webdesignsite; 30/05/2007 a las 13:41
  #2 (permalink)  
Antiguo 28/05/2007, 23:54
 
Fecha de Ingreso: noviembre-2006
Mensajes: 146
Antigüedad: 17 años, 5 meses
Puntos: 1
Re: Consulta p/ ordenar BD por fecha

Para ordenar los resultados por cualquier criterio puedes usar ORDER BY cuando haces la consulta.
Código PHP:
$result=mysql_query("SELECT * from `tabla` WHERE 1 ORDER BY 'fecha' DESC"); 
Para ordenar por orden descendente pones DESC y para ascendente ASC.
Saludos!
__________________
Buscando en 209.85.135.104
  #3 (permalink)  
Antiguo 29/05/2007, 00:48
Avatar de webdesignsite  
Fecha de Ingreso: enero-2007
Mensajes: 155
Antigüedad: 17 años, 3 meses
Puntos: 1
Re: Consulta p/ ordenar BD por fecha

Cita:
Iniciado por Nexus_ Ver Mensaje
Para ordenar los resultados por cualquier criterio puedes usar ORDER BY cuando haces la consulta.
Código PHP:
$result=mysql_query("SELECT * from `tabla` WHERE 1 ORDER BY 'fecha' DESC"); 
Para ordenar por orden descendente pones DESC y para ascendente ASC.
Saludos!

Ok, lo se, pero me refería a ordenar por ej. una lista de mensajes de un foro según días transcurridos con un campo select, por ej que mensajes se listan desde hace 1 día, o 1 mes, o 45 día o 1 año, etc.

Como se hace p/ ordenarlos así?, me explico?

Gracias.


Saludos!!!
__________________
WebDesignSite
Diseño Web - Altas Buscadores Gratis - Intercambio de Banners - Foros de soporte
http://webdesignsite.bolhost.com/
  #4 (permalink)  
Antiguo 29/05/2007, 03:23
 
Fecha de Ingreso: noviembre-2006
Mensajes: 146
Antigüedad: 17 años, 5 meses
Puntos: 1
Re: Consulta p/ ordenar BD por fecha

Entonces creo que lo que quieres es limitar los resultados por fecha, no ordenarlos.

Código PHP:
$result=mysql_query("SELECT * from `tabla` WHERE 'fecha' <= $limite"$link); 
Para calcular $limite necesitaría saber con que formato guardas la fecha en la DB.
Saludos!
__________________
Buscando en 209.85.135.104
  #5 (permalink)  
Antiguo 29/05/2007, 18:37
Avatar de webdesignsite  
Fecha de Ingreso: enero-2007
Mensajes: 155
Antigüedad: 17 años, 3 meses
Puntos: 1
Re: Consulta p/ ordenar BD por fecha

Cita:
Iniciado por Nexus_ Ver Mensaje
Entonces creo que lo que quieres es limitar los resultados por fecha, no ordenarlos.

Código PHP:
$result=mysql_query("SELECT * from `tabla` WHERE 'fecha' <= $limite"$link); 
Para calcular $limite necesitaría saber con que formato guardas la fecha en la DB.
Saludos!

El formato de la fecha en BD es un datatime!

Saludos!!!
__________________
WebDesignSite
Diseño Web - Altas Buscadores Gratis - Intercambio de Banners - Foros de soporte
http://webdesignsite.bolhost.com/
  #6 (permalink)  
Antiguo 30/05/2007, 06:35
 
Fecha de Ingreso: noviembre-2006
Mensajes: 146
Antigüedad: 17 años, 5 meses
Puntos: 1
Re: Consulta p/ ordenar BD por fecha

Puedes usar esta función:
Código PHP:
<?php
function suma_fechas($fecha,$ndias){
        if (
preg_match("/[0-9]{1,2}\/[0-9]{1,2}\/([0-9][0-9]){1,2}/",$fecha)){
            list(
$dia,$mes,$año)=split("/"$fecha);
        }
        if (
preg_match("/[0-9]{1,2}-[0-9]{1,2}-([0-9][0-9]){1,2}/",$fecha)){
            list(
$dia,$mes,$año)=split("-",$fecha);
        }
    
$nueva mktime(0,0,0$mes,$dia,$año) + $ndias 24 60 60;
    
$nuevafecha=date("d-m-Y",$nueva);
    return (
$nuevafecha);  
}
?>
http://dns.bdat.net/trucos/faqphp-v1/x385.html

Le pasas a la función la antiguedad máxima del post que quieras buscar (por ejemplo 7 días).

Código PHP:
$ndias=-7;
$fecha=date("d-m-Y");
$limite=suma_fechas($fecha,$ndias); 
Y luego solo es hacer el query

Código PHP:
$result=mysql_query("SELECT * from `tabla` WHERE 'fecha' >= $limite"$link); 
La función es para tipo de dato "date", para "datetime" habría que modificarlo. Lo mismo tambíen funciona, aunque no lo he probado.

Saludos
__________________
Buscando en 209.85.135.104
  #7 (permalink)  
Antiguo 30/05/2007, 11:19
Avatar de webdesignsite  
Fecha de Ingreso: enero-2007
Mensajes: 155
Antigüedad: 17 años, 3 meses
Puntos: 1
Re: Consulta p/ ordenar BD por fecha

Cita:
Iniciado por Nexus_ Ver Mensaje
Puedes usar esta función:
Código PHP:
<?php
function suma_fechas($fecha,$ndias){
        if (
preg_match("/[0-9]{1,2}\/[0-9]{1,2}\/([0-9][0-9]){1,2}/",$fecha)){
            list(
$dia,$mes,$año)=split("/"$fecha);
        }
        if (
preg_match("/[0-9]{1,2}-[0-9]{1,2}-([0-9][0-9]){1,2}/",$fecha)){
            list(
$dia,$mes,$año)=split("-",$fecha);
        }
    
$nueva mktime(0,0,0$mes,$dia,$año) + $ndias 24 60 60;
    
$nuevafecha=date("d-m-Y",$nueva);
    return (
$nuevafecha);  
}
?>
http://dns.bdat.net/trucos/faqphp-v1/x385.html

Le pasas a la función la antiguedad máxima del post que quieras buscar (por ejemplo 7 días).

Código PHP:
$ndias=-7;
$fecha=date("d-m-Y");
$limite=suma_fechas($fecha,$ndias); 
Y luego solo es hacer el query

Código PHP:
$result=mysql_query("SELECT * from `tabla` WHERE 'fecha' >= $limite"$link); 
La función es para tipo de dato "date", para "datetime" habría que modificarlo. Lo mismo tambíen funciona, aunque no lo he probado.

Saludos

No funciona del todo bien, yo quisiera que los resultados se listen según por ej. mensaje escrito hace 1 día, o 2 semanas o 1 año, etc según hora actual y este script imprime todos los resultados o ninguno, por ej tengo 10 registros insertados en BD si coloco $ndias=-10; aparecen todos pero si $ndias=-9; o menos no aparece ningún resultado, me explico?, espero que entienda lo que quisiera.

Nuevamente gracias.

Saludos!!!
__________________
WebDesignSite
Diseño Web - Altas Buscadores Gratis - Intercambio de Banners - Foros de soporte
http://webdesignsite.bolhost.com/
  #8 (permalink)  
Antiguo 30/05/2007, 14:13
Avatar de webdesignsite  
Fecha de Ingreso: enero-2007
Mensajes: 155
Antigüedad: 17 años, 3 meses
Puntos: 1
Re: Consulta p/ ordenar BD por fecha

Hola, se me ocurrio hacer esto:

Código PHP:
//agregue un campo en BD llamado time (int 14), al mismo se inserta fecha en formato php time(); luego realizo el select sobre ese campo y según su limite en días

$time time() ; //hora actual en segundos
$limite $time  - (24 60 60); //días en segundos desde donde realizará la consulta, ej.: desde hace 7 días a la fecha actual

$rs mysql_query("select * from foro where times >= '$limite' "$conn);


while(
$fr mysql_fetch_object($rs)){
echo 
$fr->id;
echo 
"&nbsp;" "&nbsp;"
echo 
$fr->asunto;
echo 
"<br>";

Creo que funciona bién, lo voy a probar un tiempo, no se que opinan uds.!

Saludos!
__________________
WebDesignSite
Diseño Web - Altas Buscadores Gratis - Intercambio de Banners - Foros de soporte
http://webdesignsite.bolhost.com/
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 13:57.