Actualizando el Blog y de paso también el artículo del calendario con Flash, PHP y MySQL os paso a explicar brevemente el nuevo calendario que en este caso no utiliza LoadVars() sino la clase XML que AS 2.0 nos proporciona.
El XML utilizado en el ejemplo tiene la siguiente estructura:
<?xml version="1.0" encoding="utf-8"?>
<feed totalvalues="4">
<articulo>
<id>11</id>
<titulo>El futuro de la web ya está aquí</titulo>
<contenido>contenido</contenido>
<fecha>24-04-2009 00:09:00</fecha>
</articulo>
<articulo>
<id>10</id>
<titulo>Usando la API de Google Maps para AS3.0</titulo>
<contenido>contenido</contenido>
<fecha>23-04-2009 10:02:05</fecha>
</articulo>
<articulo>
<id>9</id>
<titulo>Google lanza un pluging 3D para navegadores</titulo>
<contenido>contenido</contenido>
<fecha>23-04-2009 11:52:58</fecha>
</articulo>
<articulo>
<id>8</id>
<titulo>Por el momento MySQL no se verá afectado por la compra de Sun por parte de Oracle</titulo>
<contenido>contenido</contenido>
<fecha>22-04-2009 17:31:16</fecha>
</articulo>
</feed>
En el archivo flash tenemos el siguiente código que deberás adapatar en el destino que ofrecen los vínculos, en mi caso, vinculo a los artículos del blog.
stop();
System.useCodepage=true;
raiz_url="http://www.tudominio.com/";//<-Cambialo por tu dominio
datos = new Array();
meses = new Array("ENERO", "FEBRERO", "MARZO", "ABRIL", "MAYO", "JUNIO", "JULIO", "AGOSTO", "SEPTIEMBRE", "OCTUBRE", "NOVIEMBRE", "DICIEMBRE");
var hoy:Date = new Date();
var today:Date = new Date();
todayDay=today.getDate();
todayMonth=today.getMonth();
todayYear=today.getFullYear();
if(_level0.date != undefined){
fechaU=_level0.date.split("-");
hoy.setMonth(fechaU[1]-1);
}
function clearDay(){
loader_mc._visible=true;
for(i=1; i<38; i++){
if(i<10){indi="0"+i;}else{indi=i;}
_root[indi]._alpha=100;
_root[indi]._visible=false;
}
}
clearDay();
function lastDayInMonth(year:Number, month:Number, date:Date):Number {
var nDate:Date = (!date) ? new Date(year, month, 31) : new Date(date.getFullYear(), date.getMonth(), 31);
return (nDate.getMonth() == month) ? 31 : 31-nDate.getDate();
}
function firstDayInWeek(anio, mes){
var diaUno:Date = new Date(anio, mes, 1);
return diaUno.getDay();
}
function draw_calendar(array_data){
vinculos_txt.htmlText="";
for(i=1; i<38; i++){
if(i<10){ind="0"+i;}else{ind=i;}
if(i<primerDiaSemana || i-primerDiaSemana+1>diasMes){
_root[ind]._visible=false;
}else{
_root[ind].activo_mc._visible=false;
_root[ind].texto_links_dia="";
_root[ind]._visible=true;
_root[ind].restoDia_mc.nDia_txt.text=i-primerDiaSemana+1;
for(d=0; d<datos.length; d++){
AAMMDD_data=new Array();
AAMMDD_data=datos[d][3].split(" ");
AAMMDD=AAMMDD_data[0];
fecha_aammdd=new Array();
fecha_aammdd=AAMMDD.split("-");
fecha_aa=fecha_aammdd[2];
fecha_mm=fecha_aammdd[1];
fecha_dd=fecha_aammdd[0];
fecha_dd_app=_root[ind].restoDia_mc.nDia_txt.text;
if(fecha_dd_app<10){ fecha_dd_app="0"+fecha_dd_app; }
fecha_mm_app=hoy.getMonth()+1;
if(fecha_mm_app<10){ fecha_mm_app="0"+fecha_mm_app; }
if(hoy.getFullYear() == fecha_aa && fecha_mm_app==fecha_mm && fecha_dd==fecha_dd_app){
_root[ind].texto_links_dia+="<a href='"+raiz_url+"[tus variables]"+datos[d][0]+"'>"+datos[d][1]+" | "+datos[d][3]+"</a><br />";//<-Cambialo por tus variables
_root[ind].activo_mc._visible=true;
_root[ind].focoDia_mc.onRelease=function(){
vinculos_txt.htmlText=this._parent.texto_links_dia;
}
vinculos_txt.htmlText+="<a href='"+raiz_url+"[tus variables]"+datos[d][0]+"'>"+datos[d][1]+" | "+datos[d][3]+"</a><br />";
}// if coincide con el dia
}//for datos dia
}//es visible
} //for objetos dias
}
function generaMes(){
clearDay();
mes=hoy.getMonth();
anio = hoy.getFullYear();
diasMes=lastDayInMonth(anio, mes);
primerDiaSemana=firstDayInWeek(anio, mes);
if(primerDiaSemana==0){primerDiaSemana=7;}
nombreMes_txt.text=meses[mes];
anio_txt.text=anio;
mesC=mes+1;
if(mesC<10){mesC="0"+mesC;}
draw_calendar(datos);
}
function load_xml(xml_to_load){
var xmlFile:XML=new XML();
xmlFile.ignoreWhite = true;
xmlFile.onLoad = function(success){
rootNode = xmlFile.firstChild;
node = xmlFile.firstChild.childNodes;
totalSlides = rootNode.childNodes.length;
for(t=0;t<totalSlides;t++){
datos[t]=Array(node[t].childNodes[0].firstChild.nodeValue, node[t].childNodes[1].firstChild.nodeValue, node[t].childNodes[2].firstChild.nodeValue, node[t].childNodes[3].firstChild.nodeValue);
}
generaMes();
}
xmlFile.load(xml_to_load);
}
load_xml(raiz_url+"calendario.php");//<-Cambialo por tu ubicación del archivo PHP
/*----------------------------Botones del mes----------------------------------------*/
mesAtras_btn.onRelease=function(){
mesActual=hoy.getMonth();
restaActual=mesActual-1;
hoy.setMonth(restaActual);
mes=hoy.getMonth();
generaMes();
}
mesAdelante_btn.onRelease=function(){
actualMes = hoy.getMonth();
sumaMes=actualMes+1;
hoy.setMonth(sumaMes);
mes=hoy.getMonth();
generaMes();
}
Para PHP necesitamos generar la consulta a la base de datos, que nos devolverá una matriz que convertimos a XML, la consulta, datos de la BBDD y demás es cosa vuestra generarlo.
<?php
function listaCalendario(){
#si quieres utilizar este código deberás adaptar la matriz que resulta de la consulta
#a la base de datos en mi caso $calendario
$output_xml="<?xml version="1.0" encoding="utf-8"?>\n<feed totalvalues="".$numrows."">\n";
foreach($calendario as $articulo){
$output_xml.="<articulo>\n";
$output_xml.="<id>$articulo[0]</id>\n"; //--> id
$output_xml.="<titulo>$articulo[1]</titulo>\n"; //--> titulo
$output_xml.="<contenido>contenido</contenido>\n"; //--> contenido
$output_xml.="<fecha>".$articulo[3]."</fecha>\n"; //--> fecha
$output_xml.="</articulo>\n";
}
$output_xml.="</feed>\n";
header("Content-type: text/xml");
return $output_xml;
}
echo listaCalendario();
?>
Publicado el: 26-04-2009 20:56:36 categoria/s: Flash AS 2.0 PHP
surff_omar 08-05-2009 21:48:59
hola.... el ejemplo esta padre.... me gustaria ber si me pueden ayudar.. es que no se que nombre deve de llevar el xml... me gustaria ver si me pueden ayudar... gracias... no se si es mucho poder.. de poner el nombre del xml o mas bien los archvos para descar... gracias .. me gustaria ver si me pueden ayudar... gracias.. .espero su ayuda o un aviso en mi correo o este pos.. -.....gracias
theblabla 09-05-2009 16:59:52
Hola Omar, el nombre del XML lo defines en la linea:
load_xml(raiz_url+"calendario.php");//<-Cambialo por tu ubicación del archivo PHP
Al final del artículo tienes los archivos para descargar.
surff_omar 11-05-2009 08:05:27
hola gracias por atenderme... me podias esplicar como se manipula donde dice tus variables... en el codigo de flash
_root[ind].texto_links_dia+="<a href=""+raiz_url+"[tus
variables]"+datos[d][0]+"">"+datos[d][1]+" | "+datos[d][3]+"</a><br />";//<-Cambialo por tus variables
theblabla 11-05-2009 12:38:44
Hola de nuevo Omar, en esa linea lo que pretendo es ir recogiendo los distintos vinculos que hay para dicho dia (en mi caso son articulos del blog), y/o mostrarlos en el campo de texto que hay abajo. Es trabajo tuyo establecer las variables que necesites para que tu aplicación funcione.
Saludos
surff_omar 12-05-2009 02:22:55
hola de nuevo.. gracias por volverme atender..
soy semi nuevo en codigo de actionscript y notadiva no le ayo a las declraraciones de variables...
si no es mucho pedir..
en los codigos que estan plasmados en estos ejemplos cual seria esa variables..
theblabla 12-05-2009 15:39:58
Por favor surf_omar, cuida tu gramatica y ortografía, hace daño a la vista leer cosas así.
Respecto a tus dudas, es evidente lo que hay ahí: una URL. Las variables las consigo del mismo XML y coloco los distintos datos como me placen porque mi finalidad es abrir una URL (la de mis artículos del blog).
Las variables son: datos[d][0], datos[d][1], etc... (el XML, pasado a una matriz Flash)
Puedes hacer que redireccione a otra página (como es el caso), que vaya a otro fotograma de tu flash, que cargue un nuevo clip, indaga sobre qué quieres que haga tu calendario y establece las variables pertinentes.
Saludos.
surff_omar 13-05-2009 00:52:56
ok.. gracias por tu consejo.. y por tu atencion..
johan 30-09-2009 09:27:48
Hola theblabla. Mil gracias por el tutorial pues es genial. No obstante tengo un problema con el flash y es que no me carga los dias... vamos, que no me rellena el calendario con los nº.
Por otro lado el php me genera un error: Parse error: syntax error, unexpected T_DNUMBER in ... a que es debido?? corresponde a la linea del primer $output_xml.
Un saludo y mil gracias
Luis
cornejosemilla 30-10-2009 17:59:12
Hola amigo, baje el archivo y he creado el xml, segun tu modelo, pero lo cuelgo en mi web y marca los dias que estan en el xml pero no muestra los datos... que estoy haciendo mal, a mi me sirve tal como esta, sin modificar nada, pero quiero que lea los datos. Es necesario crear el PHP???
blanco_20000 20-11-2009 04:26:45
GRACIAS por compartir, tu calendario esto se puede usar como una egenda por que usas xml, esto me permite usar php que genere ese xml de la dase de dato.
GRACIAS GRACIAS... voy a estuduar tu idea que planteas en tu script
para modificarlo :)
sentih 27-11-2009 18:26:54
Una pregunta como hago para pintar el dia de hoy como activo?
theblabla 28-11-2009 14:14:52
Hola, con la siguiente linea activas el dia:
_root[ind].activo_mc._visible=true;
Fijate que esta dentro del bucle y tienen que cumplirse las condiciones.
Saludos
VictorE 07-04-2010 16:10:04
Hola buen día, tu calendario me ha sido de gran ayuda, me preguntaba si puedes actualizarlo a AS3, o sabes de algún calendario similar en esta version, te lo agradeceré muchisimo.
manu 11-05-2010 19:35:21
aun no puedo hacer que se vea los mensajes del xml en el calendario y esta igual como el tuyo claro se cambiaron mi dominio y variables




Texto de ejemplo
manu dice: aun no puedo hacer que se vea los mensajes del xml en el calendario y esta igual como el tuyo
VictorE dice: Hola buen día, tu calendario me ha sido de gran ayuda, me preguntaba si puedes actualizarlo
theblabla dice: Hola, con la siguiente linea activas el dia: _root[ind].activo_mc._visible=true;
sentih dice: Una pregunta como hago para pintar el dia de hoy como activo?
probando dice: un comentario con todos los datos correctos
blanco_20000 dice: GRACIAS por compartir, tu calendario esto se puede usar como una egenda por que usas xml, esto
cornejosemilla dice: Hola amigo, baje el archivo y he creado el xml, segun tu modelo, pero lo cuelgo en mi web y
online-maris dice: Tres intiresno, gracias
en: Google cumple con las expectativas de los webmasters y facilita la eliminación del webspam
johan dice: Hola theblabla. Mil gracias por el tutorial pues es genial. No obstante tengo un problema con
Extenze dice: It sounds like you"re creating problems yourself by trying to solve this issue instead
www.theblabla.com v2.0