Ver Mensaje Individual
  #8 (permalink)  
Antiguo 03/04/2012, 08:34
Avatar de SirDuque
SirDuque
 
Fecha de Ingreso: febrero-2009
Ubicación: Paso del Rey, Buenos Aires, Argentina
Mensajes: 975
Antigüedad: 15 años, 2 meses
Puntos: 89
Respuesta: ordenar fechas con formato Lunes 00/00/0000

No entiendo....

Queres que en ves de listar de esta manera:
Jueves 09/02/2012
Viernes 20/05/2012
Lunes 01/012012
Miecoles 03/01/2012
Martes 02/01/2012
Lunes 05/01/2012

Liste de esta otra:

Viernes 20/05/2012
Jueves 09/02/2012
Lunes 05/01/2012
Miecoles 03/01/2012
Martes 02/01/2012
Lunes 01/012012

Pero claro con una columna en DATE seria pan comido, pero vos usas VARCHAR...

Analicemos:

El nombre del dia no es un dato util para nuestro objetivo.
Por lo tanto para poder ordenar hay que desarmar todo.
Para empezar guardemos todos los resultados en un array:
Código PHP:
$r = array( //$r de Resultado
"Viernes 20/05/2012",
"Jueves 09/02/2012",
"Lunes 05/01/2012",
"Miecoles 03/01/2012",
"Martes 02/01/2012",
"Lunes 01/012012"); 
Ahora lo que tenemos que hacer es crear otro arreglo con los datos que podemos analizar con PHP, en este caso la FECHA pero en formato DATE.


Código PHP:
//declaro futuro arreglo.
$a = array(); // $a de Analizados.
for($i=0;$i<count($r);$i++){

$e explode(" ",$r[$i]); // separamos el dia con la fecha, nos interesa $e[1]

// ahora a la fecha con formato d/m/Y la modificamos para que sea Y-m-d.

$date substr($e[1],6,2)."-".substr($e[1],3,2)."-".substr($e[1],0,2);

// y lo guardamos en un nuevo arreglo.

$a []= $date;

Ahora tenemos el siguiente arreglo:

Código PHP:
$a = array( //$a de Analizados
"2012-05-20",
"2012-02-09",
"2012-01-05",
"2012-01-03",
"2012-01-02",
"2012-01-01"); 
Ahora con sort() ordenamos el arreglo.

Código PHP:
sort($a); 
ahora con un bucle devolvemos el resultado:

Código PHP:
for($i=0;$i<count($a);$i++){
$d=  date('w'strtotime($a[$i])); // $d de Dia
switch($dia){
case 
0
 
$dia "Domingo";
break;
case 
1:
 
$dia "Lunes";
break;
case 
2:
 
$dia "Martes";
break;
case 
3:
 
$dia "Miercoles";
break;
case 
4:
 
$dia "Jueves";
break;
case 
5:
 
$dia "Viernes";
break;
case 
6:
 
$dia "Sabado";
break;
default:
 die( 
"Error formato fecha" );
break;
}

echo 
$dia." ".date("d/m/Y",strtotime($a[$i]))."<br>";

Despues contanos.

NOTA: fijate lo complejo que puede ser esto, solo por que un programador decidio guardar una fecha en un formato inapropiado.
__________________
Mono programando!
twitter.com/eguimariano