Ver Mensaje Individual
  #3 (permalink)  
Antiguo 09/09/2013, 17:24
Mont_22
 
Fecha de Ingreso: septiembre-2013
Mensajes: 3
Antigüedad: 10 años, 7 meses
Puntos: 0
Respuesta: Mostrar registros segun rango de fechas

Buen día y gracias por responder EFENOLLAL!

De hecho en la base de datos el campo date si está guardando año-mes-dia (en ese mismo orden que lo puse).

Ya había intentado modificar el preg_match pero en realidad ni siquiera estaba seguro de que fuera ahí donde tuviera que modificar, esa función no la conocía y aunque he leído desde la mañana que me respondiste no terminé de entender.
Además lo de las fechas siempre se me ha complicado.

Sin embargo a medio día pude resolverlo después de intentar e intentar.
Cabe aclarar que aún no lo comprendo del todo, pero ya salí del paso y seguiré estudiando cada que se pueda.

Muchas gracias por haberme orientado EFENOLLAL, y si acaso llegas a tener tiempo y ánimo de explicarme un poco más al respecto, te lo voy a agradecer también.

El código quedó así:

Código PHP:
function put_dates_select ($tname){
        
$tlist mysql_list_tables($tname);
                while (
$row mysql_fetch_row($tlist)) {
                        
$query "SELECT DISTINCT `date` FROM ".$row[0];
                        
$result mysql_query($query) or die ("Error info:<br> $query<br>"mysql_error());
                        while (
$row1 mysql_fetch_row($result)) {
                               
preg_match ("/^(.*).*?$/"$row1[0], $m);
                                   
$dates[$m[1]] += 1;
                        }
                 }
                if (
is_array($dates)){
                    
mysql_free_result($result);
                    
ksort($dates);
                echo 
"Balance por rango de fechas en formato <b>a&ntilde;o-mes-dia</b>: <select name=date_begin><option value=>Begin</option>";
                foreach (
$dates as $k => $v){
                         
preg_match ("/^(.*)$/"$k$m);
                         if (
$_SESSION[date_begin] == $k) {$selected "selected";}else{$selected "";}
                         echo 
"<option value=$k $selected>".substr($m[1],0)."</option>";
                }
                echo 
"</select> - ";
                echo 
"<select name=date_end><option value=>End</option>";
                foreach (
$dates as $k => $v){
                         
preg_match ("/^(.*)$/"$k$m);
                         if (
$_SESSION[date_end] == $k) {$selected "selected";}else{$selected "";}
                         echo 
"<option value=$k $selected>".substr($m[1],0)."</option>";
                }
                echo 
"</select> <input type=submit name=date_set value=Set style='font-size:9px'>";
                return 
$dates;
                }

Aquí explico lo que yo entendí:
*-Según yo aquí
Código PHP:
preg_match ("/^(.*)-.*?$/"$row1[0], $m); 
el preg_match está jalando la fecha de la base de datos pero según creo, el guión medio está restando ó quitando el día, es decir, ese guión medio provoca que el preg_match solo tome el mes y el año, por lo cual eliminé el guión y quedó así
Código PHP:
preg_match ("/^(.*).*?$/"$row1[0], $m); 
*-Según yo, ya en el selector de fecha inicial y final, el preg_match que aparece así
Código PHP:
preg_match ("/^(.*)-(.*)$/"$k$m); 
con el guión también está restando el día, entonces eliminé el guión y los paréntesis con su contenido y quedó así
Código PHP:
preg_match ("/^(.*)$/"$k$m); 
*-Ya para imprimirlo no entendí bien tampoco, pero me quedó así
Código PHP:
echo "<option value=$k $selected>".substr($m[1],0)."</option>"
Total que me sirvió y la fecha la imprime 2013-09-09, aunque me hubiera gustado ponerla al revés, dia-mes-año.

Si hay comentarios ú observaciones se los voy a agradecer.
Saludos y gracias!