Foros del Web » Programando para Internet » PHP »

Filtrar por Fecha

Estas en el tema de Filtrar por Fecha en el foro de PHP en Foros del Web. Quiero filtrar los resultados basado en la fecha: date_purchased siempre y cuando esa fecha no sea mayor a un año, es decir si es la ...
  #1 (permalink)  
Antiguo 14/08/2008, 12:14
 
Fecha de Ingreso: marzo-2003
Ubicación: México, D. F.
Mensajes: 12
Antigüedad: 21 años
Puntos: 0
Filtrar por Fecha

Quiero filtrar los resultados basado en la fecha: date_purchased siempre y cuando esa fecha no sea mayor a un año, es decir si es la fecha es 12/08/2007, hoy ya no me deberia aparecer:


Aqui esta mi codigo completo:


<?php
if (tep_session_is_registered('customer_id')) {
$orders_query = tep_db_query("select distinct op.products_id from " . TABLE_ORDERS . " o, " . TABLE_ORDERS_PRODUCTS . " op, " . TABLE_PRODUCTS . " p where o.customers_id = '" . (int)$customer_id . "' and o.orders_id = op.orders_id and op.products_id = p.products_id and p.products_status = '1' group by products_id order by o.date_purchased desc limit " . MAX_DISPLAY_PRODUCTS_IN_ORDER_HISTORY_BOX);
if (tep_db_num_rows($orders_query)) {
?>
<tr>
<td>
<?php
$info_box_contents = array();
$info_box_contents[] = array('text' => BOX_HEADING_CUSTOMER_ORDERS);
new infoBoxHeading($info_box_contents, false, false);
$product_ids = '';
while ($orders = tep_db_fetch_array($orders_query)) {
$product_ids .= (int)$orders['products_id'] . ',';
}
$product_ids = substr($product_ids, 0, -1);
$customer_orders_string = '<table border="0" width="100%" cellspacing="0" cellpadding="1">';
$products_query = tep_db_query("select products_id, products_name from " . TABLE_PRODUCTS_DESCRIPTION . " where products_id in (" . $product_ids . ") and language_id = '" . (int)$languages_id . "' order by products_name");
while ($products = tep_db_fetch_array($products_query)) {
$customer_orders_string .= ' <tr>' .
' <td class="infoBoxContents"><a href="' . tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $products['products_id']) . '">' . $products['products_name'] . '</a></td>' .
' </tr>';
}
$customer_orders_string .= '</table>';
$info_box_contents = array();
$info_box_contents[] = array('text' => $customer_orders_string);
new infoBox($info_box_contents);
?>
</td>
</tr>
<?php
}
}
?>


Gracias de antemano.
  #2 (permalink)  
Antiguo 14/08/2008, 13:09
 
Fecha de Ingreso: junio-2006
Mensajes: 47
Antigüedad: 17 años, 10 meses
Puntos: 0
Respuesta: Filtrar por Fecha

Hola que pasa, creo que lo que debes hacer es poner algun tipo de restriccion en la consulta a la BD como "bewteen" o algo pareceido, algo que te limite el rango de fechas. Seguro que por internet encuentras algo sobre esto
  #3 (permalink)  
Antiguo 14/08/2008, 14:22
Avatar de SergeMedina  
Fecha de Ingreso: septiembre-2007
Ubicación: Guadalajara, Jalisco
Mensajes: 459
Antigüedad: 16 años, 7 meses
Puntos: 20
Respuesta: Filtrar por Fecha

En tu clausula WHERE:

Código PHP:
$orders_query="WHERE..... date_purchased > (CURDATE()- INTERVAL 1 YEAR) ......" 
Eso si usas Mysql, no estoy seguro si esas funciones son exclusivas de MySQL.

Si lo quieres hacer con PHP puede ser

Código PHP:
//Es recomendable usar mktime() cuando haces aritmetica con fechas

$date date('Y-m-d',mktime(000date("m"), date("d"), date("Y")-1));
$orders_query="WHERE..... date_purchased > $date ......" 
Saludos.
  #4 (permalink)  
Antiguo 14/08/2008, 14:39
 
Fecha de Ingreso: marzo-2003
Ubicación: México, D. F.
Mensajes: 12
Antigüedad: 21 años
Puntos: 0
Respuesta: Filtrar por Fecha

Disculpa mi Ignorancia al respecto, pero ¿donde debo poner estas lineas?
  #5 (permalink)  
Antiguo 14/08/2008, 14:51
Avatar de SergeMedina  
Fecha de Ingreso: septiembre-2007
Ubicación: Guadalajara, Jalisco
Mensajes: 459
Antigüedad: 16 años, 7 meses
Puntos: 20
Respuesta: Filtrar por Fecha

Imagino que el query que quieres filtrar por fecha seria el siguiente:

Código PHP:
$orders_query tep_db_query("select distinct op.products_id from " TABLE_ORDERS " o, " TABLE_ORDERS_PRODUCTS " op, " TABLE_PRODUCTS " p where o.customers_id = '" . (int)$customer_id "' and o.orders_id = op.orders_id and op.products_id = p.products_id and p.products_status = '1' group by products_id order by o.date_purchased desc limit " MAX_DISPLAY_PRODUCTS_IN_ORDER_HISTORY_BOX); 
Por lo tanto tienes que ponerlo en la clausula WHERE:

Código PHP:
$orders_query tep_db_query("select distinct op.products_id from " TABLE_ORDERS " o, " TABLE_ORDERS_PRODUCTS " op, " TABLE_PRODUCTS " p where o.customers_id = '" . (int)$customer_id "' and o.orders_id = op.orders_id and op.products_id = p.products_id and p.products_status = '1' 
AND date_purchased > (CURDATE()- INTERVAL 1 YEAR) group by products_id order by o.date_purchased desc limit " 
MAX_DISPLAY_PRODUCTS_IN_ORDER_HISTORY_BOX); 
ó

Código PHP:
$date date('Y-m-d',mktime(000date("m"), date("d"), date("Y")-1));
$orders_query tep_db_query("select distinct op.products_id from " TABLE_ORDERS " o, " TABLE_ORDERS_PRODUCTS " op, " TABLE_PRODUCTS " p where o.customers_id = '" . (int)$customer_id "' and o.orders_id = op.orders_id and op.products_id = p.products_id and p.products_status = '1' 
AND date_purchased > $date group by products_id order by o.date_purchased desc limit " 
MAX_DISPLAY_PRODUCTS_IN_ORDER_HISTORY_BOX); 
Si no es ese, será aquel que tenga el campo date_purchased.
  #6 (permalink)  
Antiguo 14/08/2008, 14:59
 
Fecha de Ingreso: marzo-2003
Ubicación: México, D. F.
Mensajes: 12
Antigüedad: 21 años
Puntos: 0
Respuesta: Filtrar por Fecha

Gracias, muchas gracias.
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 22:55.