Banner

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.