Jump to content

Indicadores Económicos con php


Recommended Posts

  • 1 month later...
  • Replies 22
  • Created
  • Last Reply

Top Posters In This Topic

Wen aporte...

 

Yo hice el mío y funciona así:

 

1. Consulta al banco central con un POST donde le paso la fecha que quiero

2. Leo el HTML de respuesta, filtro parecido como nuestro amigo y pongo los valores en unos <INPUT..>

 

La página no tiene decoros ni nada... sólo la hice para resolver el problema...

 

Lo tengo en versión HTML+Ajax (para consultar desde el cliente y no ocupar recursos de servidor) y en PHP (para consultar desde el server).

 

Aquí va el código para HTML+Ajax:

 

Esto lo ponen en el archivo ajax.js

 

    var ajaxObject;
    
    function ajaxObj(){
        if (window.XMLHttpRequest) { // Mozilla, Safari, ...
            ajaxObj = new XMLHttpRequest();
            if (ajaxObj.overrideMimeType) {
                ajaxObj.overrideMimeType('text/xml');
                // See note below about this line
            }
        } 
        else if (window.ActiveXObject) { // IE
            try {
                ajaxObj = new ActiveXObject("Msxml2.XMLHTTP");
            } 
            catch (e) {
                try {
                    ajaxObj = new ActiveXObject("Microsoft.XMLHTTP");
                } 
                catch (e) {}
            }
        }

        return ajaxObj;
    }

    function getResponse(values, f){
        if(!ajaxObject){
          ajaxObject = ajaxObj();
        }

        var urlRequest = "http://si2.bcentral.cl/Basededatoseconomicos/951_480.asp";
        ajaxObject.open("POST", urlRequest + "?" + values, true);
        ajaxObject.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
        ajaxObject.setRequestHeader("Content-length", values.length);
        ajaxObject.setRequestHeader("Charset", "ISO-8859-1");
        ajaxObject.setRequestHeader("Connection", "close");
        ajaxObject.onreadystatechange = f;
        ajaxObject.send(null);
    }

    function getValues(){
        if (ajaxObject.readyState == 4){
            var data = ajaxObject.responseText;
            if(data){
                document.getElementById('uf').value = processData(data, data.indexOf("(UF)", 1));
                document.getElementById('dolar').value = processData(data, data.indexOf("observado", 1));
                document.getElementById('euro').value = processData(data, data.indexOf("Euro", 1));
                document.getElementById('yen').value = processData(data, data.indexOf("Yen", 1));
            }
        }
    }

    function processData(data, startPos){
        startPos = data.indexOf("detalle>", startPos) + 8;
        var endPos = data.indexOf("</td>", startPos);
        var ret = data.substr(startPos, endPos - startPos);

        if(ret.substr(1, 1) == '&'){
            return "--";
        }
        else{
            return ret;
        }
    }

 

esto lo ponen en un xxxxx.htm. Ocupé un calendario JS que bajé en http://download.base86.com/?file=vlaCalendar.v2.1.1.rar lo descomprimen en la carpeta xtras. La estructura del directorio debería quedar así:

/xxxxx.htm

/xtras/dhtmlxCalendar/dhtmlxCalendar/codebase/....

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

<head>
  <title></title>
    <meta http-equiv="Cache-Control" content="no-cache" />

    <script type="text/javascript" charset="utf-8" src="dataAjax.js"></script>
    <link rel="stylesheet" type="text/css" href="/xtras/dhtmlxCalendar/dhtmlxCalendar/codebase/dhtmlxcalendar.css" />
    <script src="/xtras/dhtmlxCalendar/dhtmlxCalendar/codebase/dhtmlxcommon.js"></script>
    <script src="/xtras/dhtmlxCalendar/dhtmlxCalendar/codebase/dhtmlxcalendar.js"></script>
    <script>window.dhx_globalImgPath="/xtras/dhtmlxCalendar/dhtmlxCalendar/codebase/imgs/";</script>
        
    <script type="text/javascript" language="Javascript">
  
        var dhtmlxCalendarLangModules = new Array();
        dhtmlxCalendarLangModules['es'] = {
            langname: 'es',
            dateformat: '%d-%m-%Y',
            monthesFNames: ["Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre"],
            monthesSNames: ["Ene", "Feb", "Mar", "Abr", "May", "Jun", "Jul", "Ago", "Sep", "Oct", "Nov", "Dic"],
            daysFNames: ["Lunes", "Martes", "Miércoles", "Jueves", "Viernes", "Sábado", "Domingo"],
            daysSNames: ["Do", "Lu", "Ma", "Mi", "Ju", "Vi", "Sa"],
            weekend: [0],
            weekstart: 1,
            msgClose: "Cerrar",
            msgMinimize: "Minimizar",
            msgToday: "Hoy"
            };

        var mCal;
        
        function setCalendario(){
            var now = new Date();
            mCal = new dhtmlxCalendarObject("txtCalendario")
            mCal.loadUserLanguage("es");
            mCal.setDate(now);
        }

        function displayValues(){
            var fecha = new Date(mCal.getDate());
            var dia = fecha.getDate();
            var mes = fecha.getMonth() + 1;
            var ano = fecha.getFullYear();

            getResponse('selDia=' + dia + '&selMes=' + mes + '&selAno=' + ano + '&inSesionAccion=&inSesionAncla=&inSesionAno=' + ano + '&inSesionASP=951_480.ASP&inSesionActionUltimaPagina=951_480.asp&inSesionBuscar=&inSesionCapitulo=&inSesionCuadro=IND-DIA-2004&inSesionCuadroM03=&inSesionDia=' + dia + '&inSesionFormato=&inSesionFrecuencia=&inSesionGrafico=&inSesionIdioma=&inSesionInicio=&inSesionIP=&inSesionMes=' + mes + '&inSesionNavegador=Netscape&inSesionPaginaAnterior=&inSesionPeriodicidad=&inSesionPeriodo=&inSesionSeparador=&inSesionSerie=&inSesionArregloNavegacion=&inSesionArregloHistory=', getValues);
        }
    
    </script>
    
</head>

<body onLoad="java script: setCalendario(); displayValues();">
    <form name="Form1" id="Form1" method="POST" target="_blank">
        <input type="text" id="uf" />
        <input type="text" id="dolar" />
        <input type="text" id="euro" />
        <input type="text" id="yen" />
        <input type="text" id="txtCalendario" style="width: 80px;" maxlenght="10"/>
        <input type="button" onclick="java script: displayValues();" value="Ver" />
    </form>
</body>

</html>

 

Este es el de PHP:

En un archivo xxxxx.php

<?
    function getValues($dia, $mes, $ano){
        $variables = "selDia=" . $dia . "&selMes=" . $mes . "&selAno=" . $ano . "&inSesionAccion=&inSesionAncla=&inSesionAno=" . $ano . "&inSesionASP=951_480.ASP&inSesionActionUltimaPagina=951_480.asp&inSesionBuscar=&inSesionCapitulo=&inSesionCuadro=IND-DIA-2004&inSesionCuadroM03=&inSesionDia=" . $dia . "&inSesionFormato=&inSesionFrecuencia=&inSesionGrafico=&inSesionIdioma=&inSesionInicio=&inSesionIP=&inSesionMes=" . $mes . "&inSesionNavegador=Microsoft+Internet+Explorer&inSesionPaginaAnterior=&inSesionPeriodicidad=&inSesionPeriodo=&inSesionSeparador=&inSesionSerie=&inSesionArregloNavegacion=951_portada.asp%3Fidioma%3DE%25%25%25%25%25Portada%23%23%23%23951_480.asp%25%25%25%25%25Indicadores+del+d%26iacute%3Ba&inSesionArregloHistory=951_480.asp%23%23%23%23951_480.asp%23%23%23%23951_480.asp%23%23%23%23951_480.asp%23%23%23%23951_480.asp";

        $ch = curl_init("http://si2.bcentral.cl/Basededatoseconomicos/951_480.asp");
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $variables);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
        curl_setopt($ch, CURLOPT_HEADER, 0);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        $data = curl_exec($ch);
        curl_close($ch);

        $start = strpos($data, "(UF)");
        echo "UF = " . getValue($data, $start) . "<br>\n";

        $start = strpos($data, "Dólar observado");
        echo "Dólar Observado = " . getValue($data, $start) . "<br>\n";
        
        $start = strpos($data, "Euro");
        echo "Euro = " . getValue($data, $start) . "<br>\n";

        $start = strpos($data, "Yen");
        echo "Yen = " . getValue($data, $start) . "<br>\n";
    }

    function getValue($data, $start){
        $start = strpos($data, "detalle>", $start) + 8;
        $end = strpos($data, "</td>", $start);
        $ret = substr($data, $start, $end - $start);
        return $ret;
    }

    getValues(30, 12, 2009);

?>

Pueden ejecutar inmediatamente xxxxx.php y les escribe los valores en la página o pueden modificar el .php para que responda a un GET o POST.

 

Bueno, espero que les sea de utilidad y ojalá alguien lo mejore y comparta....

 

NOTA: Si alguien trabaja con eyeOS también construí la aplicación con la misma lógica.

 

Agradezcan...

Link to comment
Share on other sites

  • 3 months later...
  • 1 month later...

Oye de verdad muchas gracias, es justo lo que estaba buscando y si no lo hubieras puesto aqui jamas podria haberlo hecho yo.

 

Tengo funcionando la UF, UTM, Euro...

No logro nada con el dolar.. me sale Dolar nada mas... sin el precio..

 

Alguien me ayuda?

 

aqui esta utilizado el codigo http://www.chilecrece.cl

 

Esta en la cabezera...

 

Saludos!!!!!!!!!

Link to comment
Share on other sites

  • 3 weeks later...
  • 1 month later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...