Logo de islavisual
Isotipo de islavisual IslaVisual
imagen de sección

Ultima revisión 28/02/2010

Agenda telefónica en PHP y Flex

Básicamente lo que haremos es crear una base de datos en la que contendrá nuestros contactos, de ahí mediante un archivo en PHP generamos un documento XML y posteriormente lo consumimos con Adobe Flex y hacemos que lo muestre en un DataGrid.

Primero creamos nuestra Tabla en MySQL e insertamos algunos registros para poder utilizarla...

CREATE TABLE agenda (
    id int(11) unsigned NOT NULL auto_increment,
    nombre varchar(100) NOT NULL,
    telefono varchar(15) NOT NULL,
    email varchar(50) NOT NULL,
    PRIMARY KEY (`id`)
);

INSERT INTO agenda VALUES (1, 'José', '123-456-789', 'jose@gmail.com');
INSERT INTO agenda VALUES (2, 'Juan', '333-444-555', 'juan@hotmail.com');
INSERT INTO agenda VALUES (3, 'Maria', '987-654-321', 'maria@hotmail.com');

Después creamos nuestro código PHP que generara la estructura XML (lo llamaremos contactos.php)

<?php
    $conexion = mysql_connect("localhost", "root", "tucontraseña") or die (mysql_error());
    mysql_select_db("tuBasedeDatos");

    //Hacemos la consulta a la base de Datos…
    $sql = mysql_query("SELECT * FROM agenda ORDER BY nombre") or die (mysql_error());

    //Verificamos que existan registros
    if(mysql_num_rows($sql) != 0) {
    
        while($row = mysql_fetch_object($sql)) {
            $xml .= ' <contacto>
            <nombre>'.$row->nombre.'</nombre>
            <telefono>'.$row->telefono.'</telefono>
            <email>'.$row->email.'</email>
            </contacto>';
        }

        //Liberamos memoria…
        mysql_free_result($sql);
    } else {
        $xml = '<contacto>
        <nombre>No hay registros</nombre>
        <telefono>No hay registros</telefono>
        <email>No hay registros</email>
        </contacto>';
    }
    
    echo '<agenda>';
    echo $xml;
    echo '</agenda>';
?>

Después que tenemos nuestro código PHP, tenemos que crear nuestra Aplicación Flex

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="horizontal" creationComplete="agenda.send()">
<mx:Style>
    Application {
        background-color: #ffffff;
        color: #000033;
        theme-color: #1167B8;
    }
    Panel {
        header-colors: #1167B8, #1167B8;
        shadow-direction: right;
    }
</mx:Style>

<mx:HTTPService id="agenda" url="http://localhost/MiAgendaFlex/contactos.php" useProxy="false" />
<mx:Panel width="420" height="400" layout="horizontal" title="Mi Agenda de Contactos…">
    <mx:DataGrid x="20" y="20" id="dgagenda" width="400" height="350" dataProvider="{agenda.lastResult.agenda.contacto}">
    <mx:columns>
    <mx:DataGridColumn headerText="Nombre"   dataField="nombre" />
    <mx:DataGridColumn headerText="Telefono" dataField="telefono" width="100" />
    <mx:DataGridColumn headerText="Email"    dataField="email" width="150" />
    </mx:columns>
    </mx:DataGrid>
</mx:Panel>
</mx:Application>

El código es simple, únicamente mandamos a llamar a nuestro archivo contactos.php con la etiqueta <mx:HTTPServices>, que se encuentra en una carpeta llamada MiAgendaFlex y que se encuentra en localhost esa ruta ustedes la pueden cambiar, y le asigno el valor al id agenda (id="agenda").

Luego creamos un DataGrid (donde mostraremos los datos) y a la propiedad dataProvider le asignamos el id que recogimos con <mx:HTTPServices> y con lastResult.agenda.contacto, hacemos referencia al nodo principal que sería <agenda> y al secundario que sería <contacto>. Después creamos las columnas con <mx:DataGridColumn /> y con la propiedad dataField le asignamos a cada uno el nombre de las etiquetas de nuestro documento XML.

Sobre el autor

Imagen de Pablo Enrique Fernández Casado
Pablo Enrique Fernández Casado

CEO de IslaVisual, Manager, Full Stack Analyst Developer y formador por cuenta ajena con más de 25 años de experiencia en el campo de la programación y más de 10 en el campo del diseño, UX, usabilidad web y accesibilidad web. También es escritor y compositor de música, además de presentar múltiples soft kills como la escucha activa, el trabajo en equipo, la creatividad, la resiliencia o la capacidad de aprendizaje, entre otras.

Especializado en proveer soluciones integrales de bajo coste y actividades de consultoría de Usabilidad, Accesibilidad y Experiencia de Usuario (UX), además de ofrecer asesoramiento en SEO, optimización de sistemas y páginas web, entre otras habilidades.