Archivos Mensuales: febrero 2011

Combos Anidados con PHPDBC, Ajax y Base de Datos


Bien esta vez jugaremos a hacer combos anidados en Base de Datos, usando la funcion $db->ComboAjax(); la cual tiene como parametros Nombre del Elemento Nombre del Select y la Funcion Ajax que queremos utilizar, veremos un poco de como funcionan aqui.

Crearemos 3 Tablas en Base de Datos para representar 3 items distintos que dependerán unos de otros las Tablas serán ejemploCombo1, EjemploCombo2, EjemploCombo3 el código de las tablas es el siguiente:


CREATE TABLE `ejemploCombo1` (
`Id` int(11) NOT NULL auto_increment,
`Nombre` varchar(100) collate latin1_general_ci NOT NULL,
PRIMARY KEY  (`Id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=1 ;
CREATE TABLE `EjemploCombo2` (
`Id` int(11) NOT NULL auto_increment,
`Nombre` varchar(100) collate latin1_general_ci NOT NULL,
`ejemploCombo1Id` int(11) NOT NULL,
PRIMARY KEY  (`Id`),
KEY `ejemploCombo1Id` (`ejemploCombo1Id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=1 ;

CREATE TABLE `EjemploCombo3` (
`Id` int(11) NOT NULL auto_increment,
`Nombre` varchar(100) collate latin1_general_ci NOT NULL,
`ejemploCombo2Id` int(11) NOT NULL,
PRIMARY KEY  (`Id`),
KEY `ejemploCombo2Id` (`ejemploCombo2Id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=1 ;

Una vez teniendo las tabla crearemos una pequeña gerarquia a la que ya más o menos estamos acostumbrados:

  • includes (Carpeta)
    • phpdbc2.php
  • js (Carpeta)
    • jquery-1.4.min.js
  • modulos (Carpeta)
    • combo1.php
    • combo2.php
    • combo3.php
  • index.php

primero veremos los archivos index.php, combo1.php y combo2.php y analizaremos un poco el código.

index.php


<?php
include("includes/phpdbc2.php");
?>
html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
xmlns="http://www.w3.org/1999/xhtml">
<head>
text/html; charset=iso-8859-1" />
<title>Ejemplos de PHPDDBC2</title>
</head>
<?php
include("modulos/ComboAjax/combo1.php");
?>
<div id="#divCombo2"></div>
<div id="#divCombo3"></div>
<body>
</body>
</html>

combo1.php


<?php
$SELECT = "SELECT Id As ID, Nombre As ItemPadre FROM ejemploCombo1";
$db->query($SELECT);
$db->comboAjax("ItemPadre","Combo1","CargaCombo2('#divCombo2',this.value);");
?>

combo2.php


<?php
include("../../includes/phpdbc2.php");
$SELECT = "SELECT Id As ID, Nombre As ItemHijo FROM EjemploCombo2 WHERE ejemploCombo1Id=".$_POST["id"];
$db->query($SELECT);
$db->comboAjax("ItemHijo","Combo2","CargaCombo3('#divCombo3',this.value);");
?>

Como veremos toda nuestra atencion se debe basar en el SELECT ya que al cambiar el Nombre de Id por ID sabra que ese va a ser el valor del combo, por esta razon Nombre lo cambiamos a ItemHijo haciendo asi que phpdbc2 sepa que esa será la descripción, lo cual permite que el construya el combo, además pondremos el nombre del combo como Combo2 y para finalizar podemos agregar CargaCombo3() esta función la manejaremos haciendo un pequeño framework para JavaScript basado en la librería JQuery.

Descargar (Pendiente)

Anuncios

Los Helpers en C#


Los Helpers, son independientes del lenguaje, son archivos especializados que nos ayudan a crear, modificar, o eliminar cosas de manera externa a los procesos fundamentales hoy veremos este ejemplo de una manera muy simple diseñando un TablasHelper el cual nos ayudará a crear una tabla e incluso a llenarla mediante una lista es algo simple pero ejemplificará lo que necesitamos hacer.

Manos a la obra nuestro archivo se llamara TablasHelper.cs y su contenido será el siguiente:


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using wsEjemplo;

namespace DataAccess2.Clases
{
public static class TablasHelper
{
public static DataTable CreaTablaUsuario()
{
DataTable dt = new DataTable();
DataColumn column;
column = new DataColumn();
column.DataType = Type.GetType("System.Int32");
column.ColumnName = "UsuarioId";
dt.Columns.Add(column);
column = new DataColumn();
column.DataType = Type.GetType("System.String");
column.ColumnName = "Correo";
dt.Columns.Add(column);
column = new DataColumn();
column.DataType = Type.GetType("System.String");
column.ColumnName = "Nombre";
dt.Columns.Add(column);
column = new DataColumn();
column.DataType = Type.GetType("System.String");
column.ColumnName = "Paterno";
dt.Columns.Add(column);
column = new DataColumn();
column.DataType = Type.GetType("System.String");
column.ColumnName = "Materno";
dt.Columns.Add(column);
return dt;
}

public static DataTable LlenaTablaUsuario(DataTable dt, List usuarios)
{
foreach (Usuario usuario in usuarios)
{
DataRow row = dt.NewRow();
row["UsuarioId"] = usuario.UsuarioId;
row["Correo"] = usuario.Correo;
row["Nombre"] = usuario.Nombre;
row["Paterno"] = usuario.Paterno;
row["Materno"] = usuario.Materno;
dt.Rows.Add(row);
}
return dt;
}
}
}

Después de eso solo resta mandarlos a llamar de la siguiente manera DataTable dt = TablasHelper.CreaTablaUsuario(); y ese mismo data table se usaría para llenar dt=TablasHelper. LlenaTablaUsuario(dt, usuarios); y listo

A %d blogueros les gusta esto: