• No se han encontrado resultados

Implementación de un script en PHP que muestre la temperatura mínima y máxima de una ciudad en Página Web.

N/A
N/A
Protected

Academic year: 2021

Share "Implementación de un script en PHP que muestre la temperatura mínima y máxima de una ciudad en Página Web."

Copied!
6
0
0

Texto completo

(1)

Implementación de un script en PHP que muestre la

temperatura mínima y máxima de una ciudad en Página Web.

Juan Peraza Garzón 1 Aníbal Zaldívar Colado 2 Mónica Olivarría González 3 Rafael Mendoza Zatarain 4

Facultad de Informática Mazatlán Universidad Autónoma de Sinaloa, México

jfperaza@gmail.com 1, azaldivar@gmail.com 2, monic_27@yahoo.com 3, rmendoza_60@yahoo.com.mx 4

Se puede asegurar que los diseñadores y programadores de páginas web en algún momento se han topado con el problema de implementar el estado del clima en un portal que estén desarrollando. Para poder llevar a cabo esto, existe un sin numero de scripts gratuitos que te imprimen la información del clima de tu ciudad pero el gran problema es que todos estos scripts en el mayor de los casos no encajan siempre con el diseño de la página que se desarrolla, algunos establecen fondos de colores que no concuerdan otros imprimen publicidad, es por ello la intensión de mostrar como desarrollar un script que lea la información del clima proveniente de un servidor confiable como es el sistema meteorológico nacional e imprimirlo en tu página con el estilo, color y tamaño deseado.

Lo primero que tenemos que realizar es identificar el lugar de donde extraeremos la información para eso podemos visitar el portal del iSistema Meteorológico Nacional (http://smn.cna.gob.mx/) como se muestra en la figura 1.

Figura 1. Portal del Sistema Meteorológico Nacional.

Este portal ofrece a los visitantes la herramienta gratuita mediante un formulario para la selección de la ciudad que se desea conocer la información del pronostico del clima. En el caso de este tutorial, estará personalizado para obtener la información del clima de Mazatlán Sinaloa, así que seleccionamos la ciudad e imprime la información del clima como se muestra en la figura 2.

(2)

Figura 2. Impresión de la información del clima de Mazatlán.

La información que imprime este formulario es información que obligatoriamente es dinámica, por esa misma razón es imposible que se actualice de manera manual, que quiere decir esto, que no es posible que un webmaster este actualizando diario la información del clima de todas las ciudades. Esta información se tiene que extraer de algún sitio.

Para obtener este sitio, se tuvo que analizar la actividad de red en el monitor del proxy cache Squid para saber la url exacta al archivo que lee para imprimir la información del clima de la ciudad seleccionada.

Analizando el monitor del iiProxy cache Squid nos percatamos que la url de la que extrae esta información es:

http://smn.cna.gob.mx/smmpt/estadosrm/ciudades/archivostxt/mazatlan_inf.txt

Esta URL imprime en el navegador información en texto plano como se muestra en la figura 3, la información que muestra esta URL se actualiza cada cierto tiempo por el SMN.

Figura 3. Información en texto plano de la información del clima de Mazatlán.

Analizando la información que se imprime se puede identificar variables con sus valores, por ejemplo la variable “fecha1” con valor de “10 Marzo 2011”, la variable “tiempo1” con valor de “soleado”, la variable “lluvia1” junto con otras variables como “tmax1”, “tmin1”.

Con esta información el siguiente paso es codificar el script en PHP que pueda leer esta URL e imprimirla en un formato más legible en una página web.

(3)

A continuación se les muestra el código para poder realizar esta tarea en la figura 4 :

Figura 4. Se abre el archivo y se crea un apuntador $fp.

Una vez que tenemos el apuntador hacia el archivo que nos dará la información, el siguiente paso es leer la información y a su vez ir segmentando e ir guardando la información en un arreglo para después imprimirla. Para hacer esto tenemos que hacer los siguientes pasos como un algoritmo a seguir:

1.- Mapear todo el apuntador con un bucle tipo “while” mientras tenga datos el apuntador.

2.- Línea por línea hacer splits y tomar como delimitador el carácter “&”, al hacer esto ya tenemos una cadena parecida a esto “fecha1=10 Marzo 2011” que lo vamos guardando en un arreglo llamado “$array_1[]” iii.

3.- Para cada elemento de este arreglo (usando foreach) usamos split con el delimitador “=” para poder separar la cadena que ya teníamos (fecha1=10 Marzo 2011) así podríamos separar el nombre de la variable de su valor y lo vamos guardando en otro arreglo ($array_2).

4.- El siguiente paso es buscar en el arreglo la variable “fecha1” que representa la fecha actual, se busca con un “array_search”, cuando se encuentre se manda a imprimir: echo "<div align='right'>Hoy $array_2[$fecha1_pos]<br>";

Pasos similares se tienen que seguir para identificar las variables de tiempo1, tmax1 y tmin1, todo el procedimiento se puede visualizar en la figura 5.

<?php $count=0;

$fecha1_encontrada=0;

if (!($fp = fopen("http://smn.cna.gob.mx/smmpt/estadosrm/ciudades/archivostxt/mazat lan_inf.txt", "r")))

exit ("El Clima no esta disponible"); while (!feof($fp))

{

$buffer = fgets($fp, 1024);

$lista = split( "&", $buffer, 50); for($i=0;$i<count($lista);$i++){ $array_1[$i]=$lista[$i]; }

foreach ($array_1 as $una_linea) { $array_2=split("=", $una_linea); if(!isset($fecha_hoy)){

$fecha1_pos=array_search('fecha1', $array_2); if($fecha1_pos=="TRUE"){

$fecha1_pos++;

echo "<div align='right'>Hoy $array_2[$fecha1_pos]<br>"; $fecha_hoy=$array_2[$fecha1_pos];

$fecha1_pos=""; }

(4)

$tiempo1_pos=array_search('tiempo1', $array_2); if($tiempo1_pos=="TRUE"){

$tiempo1_pos++;

$tiempo1_hoy=$array_2[$tiempo1_pos];

echo "<img src='imgs/clima/$tiempo1_hoy.gif' alt='$tiempo1_hoy'>&nbsp;<br> "; echo "".format_tiempo($tiempo1_hoy)."&nbsp;<br>";

$tiempo1_pos=""; }

}elseif(!isset($tmax1_hoy)){

$tmax1_pos=array_search('tmax1', $array_2); if($tmax1_pos=="TRUE"){

$tmax1_pos++;

$tmax1_hoy=$array_2[$tmax1_pos]; echo "Max: $tmax1_hoy&nbsp;<br>"; $tmax1_pos="";

}

}elseif(!isset($tmin1_hoy)){

$tmin1_pos=array_search('tmin1', $array_2); if($tmin1_pos=="TRUE"){

$tmin1_pos++;

$tmin1_hoy=$array_2[$tmin1_pos]; echo "Min: $tmin1_hoy </div><br>"; $tmin1_pos=""; } } } $count++; } fclose($fp);

echo "&nbsp;<a href='http://smn.cna.gob.mx/smmpt/estadosrm/ciudades/mazatlan.swf'>mas.. </a>";

?>

Figura 5. Código para leer las variables con sus valores.

Dentro del código mostrado en la figura anterior se puede ver que se ejecuta una función llamada format_tiempo(), esta función sirve para dar formato a los valores de la variable “$tiempo1”. Los valores de dicha variable pueden ser varios como por ejemplo: fuerte, ligera, medionublado, moderado, soleado. En vez de imprimir solo el valor “ligera”, esta función lo formatea y lo imprime como “Lluvia Ligera”, esto comparando con estructuras “if” como se muestra en la Figura 6.

Figura 6. Función “format_tiempo()”.

Este script se puede guardar en un archivo llamado “get_clima.php” y se puede mandar a llamar en cualquier parte de una página Web a través de la función “include()” como se muestra en la figura 7 que muestra el código de una página Web llamada “tabla.php”

function format_tiempo($tiempo){ if($tiempo=="fuerte") $t="Lluvia Fuerte"; if($tiempo=="ligera") $t="Lluvia Ligera"; if($tiempo=="medionublado") $t="Medio Nublado"; if($tiempo=="moderado") $t="Lluvia Moderada"; if($tiempo=="soleado") $t="Soleado";

if($tiempo=="tormenta") $t="Tormenta";

return $t; }

(5)

que imprime una página con una tabla que contiene tres columnas y un renglón. En la columna de en medio se manda a llamar el script “get_clima.php” para imprimir la información del clima iv.

<body>

<table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="30%"> </td> <td width="40%"><? include("get_clima.php"); ?> </td> <td width="30%"> </td> </tr> </table> </body>

Figura 7. Código de “tabla.php”, este llama al script “get_clima.php()”.

Conclusión.

Este script se genera con el fin de extraer la información del clima del de la información que otorga el Sistema Nacional Meteorológico, en este caso de la ciudad de Mazatlán para tener como resultado información en texto que se puede darle formato por parte del webmaster. El resultado de cómo se imprime la información se puede ver en la figura 8, donde se imprime con formato.

Figura 8. Impresión de la información del clima.

Este script se puede mejorar creando un arreglo con todas las ciudades de las que el SMN dispone para otorgar la información del clima y configurar fácilmente este script para funcionar con cualquier ciudad, aunque en este momento con solo cambiar el URL del apuntador $fp a la ciudad deseada se puede obtener.

(6)

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! i!Sistema!Nacional!Meteorológico!de!México,!“http://smn.cna.gob.mx/”,!Consultada! el!11!de!Marzo!de!2011.!! ii!D.!Wessels,!“Squid:5The5Definitive5Guide”,!O'Reilly!Media,!Enero!2004.! iii!A.!Trachtenberg,!D.!Sklar,!"PHP5Cookbook:5Solutions5and5Examples5for5PHP5 Programmers",!O'Reilly!2006.! iv!M.!Pilgrim,!"HTML5:5Up5and5Running",!O'Reilly!and!Google!Press,!2010.!

Referencias

Documento similar

d) que haya «identidad de órgano» (con identidad de Sala y Sección); e) que haya alteridad, es decir, que las sentencias aportadas sean de persona distinta a la recurrente, e) que

que hasta que llegue el tiempo en que su regia planta ; | pise el hispano suelo... que hasta que el

Para ello, trabajaremos con una colección de cartas redactadas desde allí, impresa en Évora en 1598 y otros documentos jesuitas: el Sumario de las cosas de Japón (1583),

Sanz (Universidad Carlos III-IUNE): &#34;El papel de las fuentes de datos en los ranking nacionales de universidades&#34;.. Reuniones científicas 75 Los días 12 y 13 de noviembre

(Banco de España) Mancebo, Pascual (U. de Alicante) Marco, Mariluz (U. de València) Marhuenda, Francisco (U. de Alicante) Marhuenda, Joaquín (U. de Alicante) Marquerie,

The part I assessment is coordinated involving all MSCs and led by the RMS who prepares a draft assessment report, sends the request for information (RFI) with considerations,

Proporcione esta nota de seguridad y las copias de la versión para pacientes junto con el documento Preguntas frecuentes sobre contraindicaciones y

[r]