Buscar en el Blog
  • Calendario con Flash, XML, PHP y MySQL (AS2.0)


    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:

    Codigo XML

        	<?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.

    Codigo AS 2.0

    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.

    Codigo PHP

    <?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();
    ?>
        
        

    Archivo calendario.fla


    El calendario funcionando


    Publicado el: 26-04-2009 20:56:36 categoria/s: Flash AS 2.0 PHP

Comentarios del artículo

  • 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

Normativa en los comentarios

  • El email no será publicado en el comentario.
  • Cualquier comentario considerado inapropiado será eliminado.
  • No se permiten insultos, ni escritura abreviada tipo sms.
  • Todos los comentarios son moderados por theblabla.
  • Los campos marcados con * son obligatorios.

BBCode para los emoticonos y el texto

  • [feliz] = :) => :)
  • [triste] = :( => :(
  • [muyfeliz] = :D => :D
  • [sorpresa] = :o => :o
  • [em]Texto de ejemplo[/em] => Texto de ejemplo
  • [b]Texto de ejemplo[/b] => Texto de ejemplo
  • [u]Texto de ejemplo[/u] => Texto de ejemplo
  • [bb]Texto de ejemplo[/bb] => Texto de ejemplo
  • [url=http://www.theblabla.com]http://www.theblabla.com[/url] => www.theblabla.com
  • [img=http://www.theblabla.com/favicon.ico]icono theblabla[/img] => icono theblabla
  • [code]Texto de ejemplo[/code] =>

    Texto de ejemplo

Publicar un comentario

Ultimos comentarios del blog

Cambiar el estilo de la página

Varios

Publicidad Google

aviso legal

www.theblabla.com v2.0