Foros del Web » Programando para Internet » PHP »

Ayuda please!

Estas en el tema de Ayuda please! en el foro de PHP en Foros del Web. Hola gente, a ver si me podeis echar una mano una vez mas Tengo el siguiente codigo: ===========================8<===================== ===== #$hoy_ok tiene el formato 20060712 #$registro[fecha] ...
  #1 (permalink)  
Antiguo 12/07/2006, 01:38
 
Fecha de Ingreso: marzo-2004
Mensajes: 53
Antigüedad: 13 años, 9 meses
Puntos: 0
Ayuda please!

Hola gente, a ver si me podeis echar una mano una vez mas

Tengo el siguiente codigo:

===========================8<===================== =====
#$hoy_ok tiene el formato 20060712
#$registro[fecha] tiene el formato 200607122100 (año,mes,dia,hora,min)

# Consultamos
$sql = "SELECT * FROM noticias WHERE fecha>='$hoy_ok' ORDER BY fecha DESC";
$result = mysql_query($sql) or die (mysql_error());


# Mostramos
while ($registro = mysql_fetch_array($result)) {
$ano=substr("$registro[fecha]",0,4);
$mes=substr("$registro[fecha]",4,2);
$dia=substr("$registro[fecha]",6,2);
$hora=substr("$registro[fecha]",8,2);
$minuts=substr("$registro[fecha]",-2);

$registro_fecha = $dia."/".$mes."/".$ano." - ".$hora.":".$minuts."h";
$registro_titulo = strtoupper($registro[titulo]);
$registro_noticia = nl2br($registro[noticia]);
echo "<strong><img src=images/icon_agenda.gif>$registro_fecha<br>";
echo "$registro_titulo</strong><br>";
echo "$registro_noticia<br><br>";

===========================8<===================== =====

El codigo corresponde a una agenda, que me ordena todos los registros de la tabla en funcion de la fecha del evento. Hasta aqui todo correcto. Me muestra la siguiente salida:

===========================8<===================== =====
22/09/2006 - 23:00h
FIESTA DE LA PROVA2
Es uan prova Es uan provaEs uan provaEs uan provaEs uan provaEs uan provaEs uan provaEs uan provaEs uan provaEs uan provaEs uan provaEs uan provaEs uan provaEs uan provaEs uan prova2.

22/08/2006 - 21:00h
FIESTA DE LA PROVA
Es uan prova Es uan provaEs uan provaEs uan provaEs uan provaEs uan provaEs uan provaEs uan provaEs uan provaEs uan provaEs uan provaEs uan provaEs uan provaEs uan provaEs uan prova.
===========================8<===================== =====


Ahora viene la duda, como podria agrupar los eventos en funcion del mes, que poniendo el mes una única vez quedaran agrupados los eventos de ese mes. Es decir para que quedara así:


===========================8<===================== =====
SEPTIEMBRE 2006
22/09/2006 - 23:00h
FIESTA DE LA PROVA2
Es uan prova Es uan provaEs uan provaEs uan provaEs uan provaEs uan provaEs uan provaEs uan provaEs uan provaEs uan provaEs uan provaEs uan provaEs uan provaEs uan provaEs uan prova2.

20/09/2006 - 23:00h
FIESTA DE LA PROVA2
Es uan prova Es uan provaEs uan provaEs uan provaEs uan provaEs uan provaEs uan provaEs uan provaEs uan provaEs uan provaEs uan provaEs uan provaEs uan provaEs uan provaEs uan prova2.


AGOSTO 2006

22/08/2006 - 21:00h
FIESTA DE LA PROVA
Es uan prova Es uan provaEs uan provaEs uan provaEs uan provaEs uan provaEs uan provaEs uan provaEs uan provaEs uan provaEs uan provaEs uan provaEs uan provaEs uan provaEs uan prova.
===========================8<===================== =====


Gracias. Un saludo.
  #2 (permalink)  
Antiguo 12/07/2006, 02:00
Avatar de chalchis  
Fecha de Ingreso: julio-2003
Mensajes: 1.773
Antigüedad: 14 años, 4 meses
Puntos: 21
create un array sin suplicados

Y en base a ese array imprimes los meses
buscate algo aqui en el foro array_unique

saludos
__________________
gerardo
  #3 (permalink)  
Antiguo 12/07/2006, 02:09
 
Fecha de Ingreso: marzo-2004
Mensajes: 53
Antigüedad: 13 años, 9 meses
Puntos: 0
Que campos meto en el array? Todos?
  #4 (permalink)  
Antiguo 12/07/2006, 02:16
Avatar de chalchis  
Fecha de Ingreso: julio-2003
Mensajes: 1.773
Antigüedad: 14 años, 4 meses
Puntos: 21
Sonrisa

Cita:
Iniciado por luque_finde
Que campos meto en el array? Todos?
mmm pues asi que se me ocurra seria
que en un array de una sola dimension introdujeras
solo los meses sin duplicados

y enotro array bidimensional meter los datos que te arroja el query

una vez llenados entonces empiezas a imprimir en base al primer array de meses
for(meses)
{
for(los registros)
{

}

}

eso se me ocurre de momento
__________________
gerardo
  #5 (permalink)  
Antiguo 12/07/2006, 02:27
 
Fecha de Ingreso: marzo-2004
Mensajes: 53
Antigüedad: 13 años, 9 meses
Puntos: 0
Me pierdo un poco, me puedes poner algo de código?

Gracias.
  #6 (permalink)  
Antiguo 12/07/2006, 02:41
Avatar de chalchis  
Fecha de Ingreso: julio-2003
Mensajes: 1.773
Antigüedad: 14 años, 4 meses
Puntos: 21
Sonrisa

digamos que ya tienes el query
bueno
1
vacia toda la informacion del query en el array bidimencional
ejemplo

vas vaciando todo el query normalmente es dentro de un
$result = mysql_query("SELECT id, name FROM mytable");

while ($row = mysql_fetch_array($result))
{
$datos[]["id"]=$row[x] ;
$datos[]["titulo"]=$row[x] ;
$datos[]["fecha"]=$row[x] ;
$datos[]["xx"]=$row[x];
$datos[]["tel"]=$row[x] ;
..
.
..
}
la x es la poscion de los campos de tu tabla

veo que armas tu mismo las fechas
bueno dentro de se while
abria que poner otro array donde namas llenes
de puras fechas


while ($row = mysql_fetch_array($result))
{
//aqui llenamos las fechas
$fechas[]=fecha o mes del query

$datos[]["id"]=$row[x] ;
$datos[]["titulo"]=$row[x] ;
$datos[]["fecha"]=$row[x] ;
$datos[]["xx"]=$row[x];
$datos[]["tel"]=$row[x] ;
..
.
..
}

ya una ves
empiezas a limpiar el array de fechas
para quitar duplicados
buscate algo de array unique aqui en el foro

pero el ejemplo es solo si fueran meses
tendrias que ver como adaptarlo a tus necesidades

saludos
__________________
gerardo
  #7 (permalink)  
Antiguo 12/07/2006, 03:11
 
Fecha de Ingreso: marzo-2004
Mensajes: 53
Antigüedad: 13 años, 9 meses
Puntos: 0
No hay alguna otra opcion sin tener que utilizar arrays?

Gracias.
  #8 (permalink)  
Antiguo 12/07/2006, 06:17
 
Fecha de Ingreso: marzo-2004
Mensajes: 53
Antigüedad: 13 años, 9 meses
Puntos: 0
Ya he conseguido mi objetivo!! GRacias. Finalmente solo he tenido que utilizar un único array para introducir los meses.


Gracias
  #9 (permalink)  
Antiguo 12/07/2006, 10:58
Avatar de chalchis  
Fecha de Ingreso: julio-2003
Mensajes: 1.773
Antigüedad: 14 años, 4 meses
Puntos: 21
Sonrisa que bien

podrias publicar tu solucion para que otros puedan consultar

no crees?

saludos
__________________
gerardo
  #10 (permalink)  
Antiguo 12/07/2006, 13:12
 
Fecha de Ingreso: marzo-2004
Mensajes: 53
Antigüedad: 13 años, 9 meses
Puntos: 0
totalmente de acuerdo!!! Ahi va:

<?php
include("date.php");

# Conectamos
$db = mysql_connect("mysql4.bluegravity.com","unilmomp", "56ellc64ddje");
$base = mysql_select_db("movilundba", $db);
# Consultamos
$sql = "SELECT * FROM noticias WHERE fecha>='$hoy_ok' ORDER BY fecha DESC";
$result = mysql_query($sql) or die (mysql_error());

$sql2 = "SELECT fecha FROM noticias WHERE fecha>='$hoy_ok' ORDER BY fecha DESC";
$result2 = mysql_query($sql2) or die (mysql_error());

# Mostramos
while ($registro2 = mysql_fetch_array($result2)) {
$meses[]=substr("$registro2[fecha]",4,2);
}
$total=count($meses);

$contador=0;
while ($registro = mysql_fetch_array($result)) {

$ano=substr("$registro[fecha]",0,4);
$mes=substr("$registro[fecha]",4,2);
$dia=substr("$registro[fecha]",6,2);
$hora=substr("$registro[fecha]",8,2);
$minuts=substr("$registro[fecha]",-2);

$registro_fecha = $dia."/".$mes."/".$ano." - ".$hora.":".$minuts."h";
$registro_titulo = strtoupper($registro[titulo]);
$registro_noticia = nl2br($registro[noticia]);


switch ($meses[$contador]) {
case "01" : $mes_ok="ENERO";break;
case "02" : $mes_ok="FEBRERO";break;
case "03" : $mes_ok="MARZO";break;
case "04" : $mes_ok="ABRIL";break;
case "05" : $mes_ok="MAYO";break;
case "06" : $mes_ok="JUNIO";break;
case "07" : $mes_ok="JULIO";break;
case "08" : $mes_ok="AGOSTO";break;
case "09" : $mes_ok="SEPTIEMBRE";break;
case "10" : $mes_ok="OCTUBRE";break;
case "11" : $mes_ok="NOVIEMBRE";break;
case "12" : $mes_ok="DICIEMBRE";break;
};




if (($meses[$contador] != 0) && ($meses[$contador] != $meses[$contador-1]) && ($contador < $total)) echo "<strong>$mes_ok ".$ano."<br></strong>";



echo "<img src=images/icon_agenda.gif>$registro_fecha<br>";
echo "<strong>$registro_titulo</strong><br>";
echo "$registro_noticia<br><br>";

$contador++;
}
?>
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 01:33.