No Naci Caminando Buscador

Envia sms gratis a Personal, Tigo; Claro y Vox...

sábado, 28 de noviembre de 2009

cómo instalar CodeIgniter?

cómo instalar CodeIgniter?
Es muy sencillo de instalar a diferencia de otros frameworks :



Paso 1 – Descarga: siempre trabaja con la ultima version que dispongas del CodeIgniter...

Paso 2 – Subir: una vez descargado y descomprimido notaras dos carpetas (system y user_guide), un index.php y un license.txt. Subiremos el index.php y la carpeta system. La carpeta user_guide contiene la misma guía que esta online, amenos que desees incluirla.

Donde pego esto? Simplemente entra a donde tengas instalado tu servidor busca la carpeta WWW y dentro podrias crear una carpeta Con el nombre de tu trabajo alli inserta los archivos mensionados...

Paso 3 – Configuración: Abrir el archivo application/config/config.php y modifica la siguiente linea:

$config['base_url'] = "http://127.0.0.1/CodeIgniter/";

Aquí pon tu URL base, dónde esté el index.php que subimos en el paso 2. No olvodes de la “/” final, muy importante.

Si usas una base de datos ve a application/config/database.php y configuralos parámetros según tu base de datos. Basicamente son estos.

$db['default']['hostname'] = "localhost";
$db['default']['username'] = "";
$db['default']['password'] = "";
$db['default']['database'] = "";

Si usas otro motor de base de datos que no sea mysql también debes cambiarlo:

$db['default']['dbdriver'] = "mysql";


Paso 4 – Prueba: si esta todo correcto y accedes a tu URL....

Error????

Accedo a la URL pero me dice “404 Page not found”

A veces, sel sistema de detección de los servidores no funciona como debería. Cambia en el application/config/config.php:

$config['uri_protocol'] = "AUTO";

por otro método como: PATH_INFO, QUERY_STRING, REQUEST_URI, ORIG_PATH_INFO.

martes, 29 de septiembre de 2009

CodeIgniter



CodeIgniter es un framework para PHP pensado para ofrecer un alto rendimiento, además es bastante ligero y fácilmente configurable.

aqui les dejo un link para que se bajen la guia de usuarios totalmente en español:


Guia_en_español

jueves, 14 de mayo de 2009

Criteria para consulta entre dos fechas

veamos la necesidad de ejecutar la siguiente consulta sql:

select * from tabla where fecha_tabla >= '$fechainicio' and fecha_tabla <= '$fechafin',

traduscamos usando Criteria

$c = new Criteria();
$criterion = $c->getNewCriterion(TablaPeer::FECHA_TABLA , date(’Y-m-d’, $fechainicio), Criteria::GREATER_EQUAL );
$criterion->addAnd($c->getNewCriterion(TablaPeer::FECHA_TABLA , date(’Y-m-d’, $fechafin), Criteria::LESS_EQUAL ));
$c->add($criterion);
$dato = TablaPeer::doSelect($c);

NOta: la sintaxis usada puede generar errores dependiendo la version de tu Symfony puedes intentar lo siguiente en caso de no funcionarte

$c = new Criteria();
$c->add(self::FECHA_TABLA , date(’Y-m-d’, $fechainicio), Criteria::GREATER_EQUAL);
$c->add(self::FECHA_TABLA , date(’Y-m-d’, $fechafin), Criteria::LESS_EQUAL);
$dato = TablaPeer::doSelect($c);

domingo, 26 de abril de 2009

controlar el ingeso de numeros y descartando los demas caracteres

suponiendo la necesidad de ingresar en un campo solamente caracteres numericos y descartar los demas caracteres del teclado construyamos una funcion que filtre en el momento del tipeo cada caracter valido.

esta funcion esta hecha en js:


creemos el cuadro de texto donde ingresaremos los datos y llamaremos a la funcion:

jueves, 23 de abril de 2009

buscador ... llamado desde una ventana padre.

Desarrollar un buscador que sea llamado desde una ventana principal, abriendose en una ventana hija y refrescando un valor a la ventana padre...
( desarrollo manual... utilizado para Symfony.)

el principio es simple crea un boton en la vista donde desees reflejar el dato buscado.. para que este boton dispare la funcion que habrira la ventana utilizaremos funciones js.

el codigo para crear el boton es el que sigue:



la funcion js necesaria para levantar la nueva pagina es esta:





en tu accion class agrega estas funciones para tu buscador:


en tu template agrega el codigo para tu buscador



recuerda duplicar esta vista una llamada listconfitroSuccess.php copia esta misma y renombrala a listarSuccess.php

agrega en el template la vista rescateSuccess.php con el siguiente codigo




con esto el buscador esta terminado... de no funcionarte algo contactame,, saludos

miércoles, 8 de abril de 2009

CODIGO MODIFICADO PARA HACER AUDITORIA EN SYMFONY GENERADO POR EL PROPEL INIT


/**
* banco actions.
*
* @package click
* @subpackage banco
* @author Your name here
* @version SVN: $Id: actions.class.php 12474 2008-10-31 10:41:27Z fabien $
*/

class bancoActions extends autobancoActions
{


public function executeIndex($request)
{
return $this->forward('banco', 'list');
}

public function executeList($request)
{
$this->processSort();

$this->processFilters();

$this->filters = $this->getUser()->getAttributeHolder()->getAll('sf_admin/banco/filters');

// pager
$this->pager = new sfPropelPager('Banco', 10);
$c = new Criteria();
$this->addSortCriteria($c);
$this->addFiltersCriteria($c);
$this->pager->setCriteria($c);
$this->pager->setPage($this->getRequestParameter('page', $this->getUser()->getAttribute('page', 1, 'sf_admin/banco')));
$this->pager->init();
// save page
if ($this->getRequestParameter('page')) {
$this->getUser()->setAttribute('page', $this->getRequestParameter('page'), 'sf_admin/banco');
}
}

public function executeCreate($request)
{
return $this->forward('banco', 'edit');
}

public function executeSave($request)
{

return $this->forward('banco', 'edit');
}


public function executeDeleteSelected($request)
{
$this->selectedItems = $this->getRequestParameter('sf_admin_batch_selection', array());

try
{
foreach (BancoPeer::retrieveByPks($this->selectedItems) as $object)
{
$object->delete();
}
}
catch (PropelException $e)
{
$request->setError('delete', 'Could not delete the selected Bancos. Make sure they do not have any associated items.');
return $this->forward('banco', 'list');
}

return $this->redirect('banco/list');
}

public function executeEdit($request)
{
$this->banco = $this->getBancoOrCreate();

if ($request->isMethod('post'))
{
$this->updateBancoFromRequest();

try
{
if(($this->getRequestParameter('idbanco'))!= '' || ($this->getRequestParameter('idbanco'))!=null)
{
$this->saveBanco($this->banco); ///////////////////////////////////////////////////////////////////
$this->Aupostupdate($this->getRequestParameter('idbanco'));//para auditar despues del update agragego el id para mi criteria//
} ///////////////////////////////////////////////////////////////////
else
{
$this->saveBanco($this->banco); ///////////////////////////////////////////////////////////////////
$this->Ausave();//para auditar despues del save, agragego el id para mi criteria//
} ///////////////////////////////////////////////////////////////////


}
catch (PropelException $e)
{
$request->setError('edit', 'Could not save the edited Bancos.');
return $this->forward('banco', 'list');
}

$this->getUser()->setFlash('notice', 'Your modifications have been saved');

if ($this->getRequestParameter('save_and_add'))
{
return $this->redirect('banco/create');
}
else if ($this->getRequestParameter('save_and_list'))
{
return $this->redirect('banco/list');
}
else
{
return $this->redirect('banco/edit?idbanco='.$this->banco->getIdbanco());
}
}
else
{
$this->labels = $this->getLabels();
}
}

public function executeDelete($request)
{
$this->banco = BancoPeer::retrieveByPk($this->getRequestParameter('idbanco'));
$this->forward404Unless($this->banco);

try
{ //////////////////////////////////////////////////
$this->Audelete($this->getRequestParameter('idbanco'));//para auditar agragego el id para mi criteria ///
$this->deleteBanco($this->banco); //////////////////////////////////////////////////
}
catch (PropelException $e)
{
$request->setError('delete', 'Could not delete the selected Banco. Make sure it does not have any associated items.');
return $this->forward('banco', 'list');
}

return $this->redirect('banco/list');
}

public function handleErrorEdit()
{
$this->preExecute();
$this->banco = $this->getBancoOrCreate();
$this->updateBancoFromRequest();

$this->labels = $this->getLabels();

return sfView::SUCCESS;
}

protected function saveBanco($banco)
{
$banco->save();
}

protected function deleteBanco($banco)
{

$banco->delete();


}
protected function Audelete($id)
{ //auditando...

$b = new Criteria();
$b->add(BancoPeer::IDBANCO,$id);
$bs = BancoPeer::DoSelect($b);
foreach ($bs as $dat)
{
$valorAnt=$dat->getIdbanco().'/'.$dat->getNombreBanco();
}
$audit = new Auditoria();
$audit->setUsuarioIdusuario(1);//rescaten el usuario con sf_user->
$audit->setValorAct(''); //vacio
$audit->setValorAnt($valorAnt);
$audit->setOperacion('Delete');
$audit->setTablaModificada('Banco');
$audit->setFechaAcceso(Date('Y/m/d H:i:s '));
$audit->save();

}
protected function Audpreupdate($id)
{ //auditando antes de actualizar...
$b = new Criteria();
$b->add(BancoPeer::IDBANCO,$id);
$bs = BancoPeer::DoSelect($b);
foreach ($bs as $dat)
{
$valorAnt=$dat->getIdbanco().'/'.$dat->getNombreBanco();
}
$audit = new Auditoria();
$audit->setUsuarioIdusuario(1);//rescaten el usuario con sf_user->
$audit->setValorAct(''); //vacio
$audit->setValorAnt($valorAnt);
$audit->setOperacion('Update');
$audit->setTablaModificada('Banco');
$audit->setFechaAcceso(Date('Y/m/d H:i:s '));
$audit->save();

}
protected function Aupostupdate($id)
{ //auditando despues de actualizar...
$b = new Criteria();
$b->add(BancoPeer::IDBANCO,$id);
$bs = BancoPeer::DoSelect($b);
foreach ($bs as $dat)
{
$valorAct=$dat->getIdbanco().'/'.$dat->getNombreBanco();
}
$c = new Criteria();$c->addSelectColumn('MAX('.AuditoriaPeer::NUMERO_AUDITORIA.')');//////////////////////////////////////
$rs = AuditoriaPeer::DoSelect($c); /// rescato mi ultimo id auditoria ///
foreach ($rs as $max){$Ultimoid=$max->getNumeroAuditoria();} //////////////////////////////////////

$d = new Criteria();
$d->add(AuditoriaPeer::NUMERO_AUDITORIA,$Ultimoid);
$ce = AuditoriaPeer::doSelect($d);
foreach ($ce as $med)
{$med->setValorAct($valorAct);//solo seteo el valor vacio de Aupreupdate() por el valoractual
$med->save();
}

}
protected function Ausave()
{ //auditando despues de actualizar...
$c = new Criteria();$c->addSelectColumn('MAX('.BancoPeer::IDBANCO.')');//////////////////////////////////////
$rs = BancoPeer::DoSelect($c); /// rescato mi ultimo id Banco ///
foreach ($rs as $max){$Ultimoid=$max->getIdbanco();} //////////////////////////////////////
$b = new Criteria();
$b->add(BancoPeer::IDBANCO,$Ultimoid);
$bs = BancoPeer::DoSelect($b);
foreach ($bs as $dat)
{
$valorAct=$dat->getIdbanco().'/'.$dat->getNombreBanco();
}
$audit = new Auditoria();
$audit->setUsuarioIdusuario(1);//rescaten el usuario con sf_user->
$audit->setValorAct($valorAct);
$audit->setValorAnt(''); //vacio
$audit->setOperacion('Save');
$audit->setTablaModificada('Banco');
$audit->setFechaAcceso(Date('Y/m/d H:i:s '));
$audit->save();

}

protected function updateBancoFromRequest()
{
$banco = $this->getRequestParameter('banco');
if(($this->getRequestParameter('idbanco'))!= '' || ($this->getRequestParameter('idbanco'))!=null)
{ ///////////////////////////////////////////////////////////////////
$this->Audpreupdate($this->getRequestParameter('idbanco'));//para auditar despues del update agragego el id para mi criteria /
} ///////////////////////////////////////////////////////////////////
if (isset($banco['nombre_banco']))
{
$this->banco->setNombreBanco($banco['nombre_banco']);
}

}

protected function getBancoOrCreate($idbanco = 'idbanco')

{
if ($this->getRequestParameter($idbanco) === ''
|| $this->getRequestParameter($idbanco) === null)
{
$banco = new Banco();

}
else
{
$banco = BancoPeer::retrieveByPk($this->getRequestParameter($idbanco));

$this->forward404Unless($banco);
}

return $banco;
}

protected function processFilters()
{
if ($this->getRequest()->hasParameter('filter'))
{
$this->getUser()->getAttributeHolder()->removeNamespace('sf_admin/banco/filters');

$filters = $this->getRequestParameter('filters');
if(is_array($filters))
{
$this->getUser()->getAttributeHolder()->removeNamespace('sf_admin/banco');
$this->getUser()->getAttributeHolder()->removeNamespace('sf_admin/banco/filters');
$this->getUser()->getAttributeHolder()->add($filters, 'sf_admin/banco/filters');
}
}
}

protected function processSort()
{
if ($this->getRequestParameter('sort'))
{
$this->getUser()->setAttribute('sort', $this->getRequestParameter('sort'), 'sf_admin/banco/sort');
$this->getUser()->setAttribute('type', $this->getRequestParameter('type', 'asc'), 'sf_admin/banco/sort');
}

if (!$this->getUser()->getAttribute('sort', null, 'sf_admin/banco/sort'))
{
}
}

protected function addFiltersCriteria($c)
{
if (isset($this->filters['idbanco_is_empty']))
{
$criterion = $c->getNewCriterion(BancoPeer::IDBANCO, '');
$criterion->addOr($c->getNewCriterion(BancoPeer::IDBANCO, null, Criteria::ISNULL));
$c->add($criterion);
}
else if (isset($this->filters['idbanco']) && $this->filters['idbanco'] !== '')
{
$c->add(BancoPeer::IDBANCO, $this->filters['idbanco']);
}
if (isset($this->filters['nombre_banco_is_empty']))
{
$criterion = $c->getNewCriterion(BancoPeer::NOMBRE_BANCO, '');
$criterion->addOr($c->getNewCriterion(BancoPeer::NOMBRE_BANCO, null, Criteria::ISNULL));
$c->add($criterion);
}
else if (isset($this->filters['nombre_banco']) && $this->filters['nombre_banco'] !== '')
{
$c->add(BancoPeer::NOMBRE_BANCO, strtr($this->filters['nombre_banco'], '*', '%'), Criteria::LIKE);
}
}

protected function addSortCriteria($c)
{
if ($sort_column = $this->getUser()->getAttribute('sort', null, 'sf_admin/banco/sort'))
{
// camelize lower case to be able to compare with BasePeer::TYPE_PHPNAME translate field name
$sort_column = BancoPeer::translateFieldName(sfInflector::camelize(strtolower($sort_column)), BasePeer::TYPE_PHPNAME, BasePeer::TYPE_COLNAME);
if ($this->getUser()->getAttribute('type', null, 'sf_admin/banco/sort') == 'asc')
{
$c->addAscendingOrderByColumn($sort_column);
}
else
{
$c->addDescendingOrderByColumn($sort_column);
}
}
}

protected function getLabels()
{
return array(
'banco{idbanco}' => 'Codigo Banco:',
'banco{nombre_banco}' => 'nombre Banco:',
);
}
}

martes, 31 de marzo de 2009

¿Es posible imprimir una factura con formato ?

Simplemente muestro una factura generada por el Fpdf.php a la cual le he dado un formato diferente para lograr acercarme a lo que seria una factura o recibo...

espero sirva la imagen para demostrar dicha posibilidad...


NOTA: los datos de la imagen no reflejan datos reales de una factura....

P/D: consultas y sugerencias a Kriok.medina@hotmail.com

domingo, 29 de marzo de 2009

jugando con js

Este es un ejemplo sencillo de como hacer cálculos rápidos apenas ingesando al cuadro donde deberia aparecer el resultado.

entiendase que tengo tres cuadros donde en los dos primeros ingreso registros y en el tercero muestro el producto de los dos anteriores:
para ello creo mis cuadros de textos en html:




luego creo mi funcion Suma() en mi mismo archivo js:

jueves, 26 de marzo de 2009

filtro por igualdad de caracteres(symfony)

crea una funcion que liste la totalidad de los registros y la visualize en una vista con el cuadro del filtro:

public function executeListconfiltro()
{
$c = new Criteria();
$numero_reg = MedidaPeer::doCount($c);
if(0!=$numero_reg)
{
$this->datos = MedidaPeer::doSelect($c);
}
}
public function executeFiltrar()
{
$id=$_POST['filtro'];

$c = new Criteria();
if($id!='')
{
$c->add(MedidaPeer::DESCRIPCION,"%$id%", Criteria::LIKE);
$this->datos = MedidaPeer::doSelect($c);
}
else
{
$this->datos = MedidaPeer::doSelect($c);
}
}

para cada funcion crea una vista, en este caso la vista es la misma pero renombradas.:




para que el boton ok funcione agrega al archivo .js lo que sigue:

function filtrar(form, actions, confirma, messages)
{ var filtro=document.getElementById("filtro").value;

form.action= actions;
if (confirma)
{
if (!confirm(messages))
{

return false;
}
}
form.submit();
return true;
}
la vista terminada es algo parecido a esto:

viernes, 20 de marzo de 2009

Symfony (PHP hacer que mi reporte me abra en una nueva ventana)

has notado que en la misma ventana que llama al reporte es mostrado el mismo, pues hagamos que el reporte se proyecte a una nueva ventana y de la manera mas facil:

en tu carpeta web\js de tu proyecto crea un archivo .js (e.j nombre.js) en el copia este codigo de ejemplo:


ahora debes incluir tu script dentro del symfony para ello modifica el archivo view.yml de tu directorio apps\frontend\config

javascripts: [nombre.js]


ahora modifiquemos el template donde tenemos nuestro boton que envia la peticion del reporte


reemplaza el fragmento de codigo de:

por el siquiente:


Nota: el .js hace referencia a la funcion executeRep2 la que seria una copia de tu
executeRep del accionclass.php de tu modulo reportes, ahora con una pequeña modificacion
busca la linea donde este esto: $var=$_POST['tipo_tarjeta']; y remplazalo por $var=$_GET['var'];

esto es por que en el js tenemos
var id=document.getElementById('tipo_tarjeta').value;//esto recibe del form el valor del combo y lo guarda en una variable id
abrir_ventana("rep2?var="+id+"",'Reporte');// esto llama a la funcion abrir_ventana() y le pasa como parametros ("rep2?var="+id+"",'Reporte') esto asu ves llama a rep2 de tu accionclass.php y le pasa la variable id por el metodo get...

esto es todo!!!! pruebalo

miércoles, 18 de marzo de 2009

Fpdf en Symfony = Reportes

Crea un modulo para tus reportes:
> cd ~/miproyecto
> symfony init-module miaplicacion mimodulo

una ves creado tu modulo. verificalo en la url:


ahora crear una funcion y una vista para levantar un combo:
accionClass.php:
class reporteActions extends sfActions
{
/**
* Executes index action
*
* @param sfRequest $request A request object
*/

public function executeIndex(sfWebRequest $request)
{
$this->forward('default', 'module');
}
public function executeAccion()
{
$this->datos = BancoPeer::doSelect(new Criteria());

}
}

Vista o template:
en este caso accionSuccess.php---



quendo la vista asi:


notese que el boton hace referencia a la funcion Rep: para ello crearas dicha fuccion y antes del class principal incluiras el archivo fpdf :
include_once('fpdf.php');
class reporteActions extends sfActions
{
/**
* Executes index action
*
* @param sfRequest $request A request object
*/

public function executeIndex(sfWebRequest $request)
{
$this->forward('default', 'module');
}
public function executeAccion()
{
$this->datos = BancoPeer::doSelect(new Criteria());

}
public function executeRep()
{
}
}

el contenido de la funcion executeRep es la que sigue:
public function executeRep()
{ $var=$_POST['tipo_tarjeta'];
// armando el reporte
$pdf=new FPDF();
$pdf->Open();
$pdf->Header();
$pdf->AddPage();
//Set fonts y colores
$pdf->SetFont('Arial','B',15);
$pdf->SetFillColor(155,0,0);
$pdf->SetTextColor(0,0,265);
$pdf->Cell(190,10,'ProjectClick',1,1,'C',0,'');
$pdf->Cell(190,5,'',0,1,'C',0);

$pdf->SetTextColor(255);
$pdf->SetFillColor(155,0,0);
$pdf->SetLineWidth(.1);
$pdf->SetFont('Arial','B',8);

$pdf->Cell(8,5,'Nº',1,0,'C',1);
$pdf->Cell(36,5,'ID',1,0,'C',1);
$pdf->Cell(36,5,'Banco',1,1,'C',1);
//$pdf->Cell(80,5,'depto',1,1,'C',1);
//Consulta
$c = new Criteria();
if($var!=0)
{
$c->add(BancoPeer::IDBANCO, $var);
}
$c->addAscendingOrderByColumn(BancoPeer::NOMBRE_BANCO);
$numero_reg = BancoPeer::doCount($c);
$datos = BancoPeer::doSelect($c);
//Construir la tabla
//Restaurar fuentes y colores
$pdf->SetFont('Arial','',7);
$pdf->SetFillColor(224,235,255);
$pdf->SetTextColor(0);
$i =0;
foreach ($datos as $dat):
$i++;
$pdf->Cell(8,7,$i,1,0,'C',1);
$id =$dat->getIdBanco(); $pdf->Cell(36,7,$id,1,0,'C',1);
$descripcion = strtoupper($dat->getNombreBanco()); $pdf->Cell(36,7,$descripcion,1,1,'C',1);

endforeach;

$pdf->SetFillColor(220,220,220);
$pdf->Cell(65,5,'TOTAL Registros ',1,0,'R',1);
$pdf->Cell(15,5,$numero_reg,1,1,'C',1);
$pdf->SetFillColor(224,235);
$pdf->SetFont('Arial','',7);
$pdf->Cell(190,5,'',0,1,'C',0);
$pdf->Cell(190,5,'',0,1,'C',0);


$pdf->SetFont('Arial','B',15);
$pdf->SetFillColor(224,235,235);
$pdf->SetTextColor(0,0,265);
$pdf->Cell(190,10,' Report End ',1,1,'C',0,'www.hotmail.com');
$pdf->SetFont('Arial','',8);
$pdf->Cell(190,4,'By Pablo Medina cel:(0975 633035/ 0985 830946 )',1,1,'C',0);

$pdf->SetXY(5,300);
$pdf->Output();
return sfView::NONE;
}

de ir todo bien el resultado seria algo como esto:

martes, 24 de febrero de 2009

links

hagamos un link a una vista de algun formulario:

dentro del bloque definido como html
puedes hacer referencia a otro formulario con un link el siguiente codigo da un ejemplo de como hacer un link:



Inicio

estas lineas crearan un link a tu form inicio.

suponiendo que tienes un form y desea pasarle una accion o parametros lo haces cono en cualquier boton:


Persona


lunes, 23 de febrero de 2009

generando Combos


para generar el combos has una consulta a tu base de datos a la tabla de la cual quieres optener los registros a listar en la lista despegable....

domingo, 22 de febrero de 2009

indicando el llamado a la funcion del form

agregando la funcion para el form


creo una funcion dentro de la clase, el form lo dibujo dentro de la funcion Form_guardar(), en html

trabajando con las clases


al comenzar crearemos una clase en php, para esto crea dentro de tu carpeta src un archivo de extencion php (ejemplo primer_form.php)

sábado, 21 de febrero de 2009

Paginando!!!! en php

las paginaciones de los registro que optenemos de la base de datos, y listamos en el form de ser paginado una manera facil de lograr esta paginacion es utilizando un archivo que se encarga de realizar el trabajo por nosotros:

descarga de la web paginator.inc.php y copialo en tu src de tu proyecto.. la descarga te proporciona un blog con las instrucciones de su uso.

viernes, 20 de febrero de 2009

estructura del project

creando el form

Creando mi aplicación para el formulario:
require_once("Conexion.php");//hacienmos referencia que usaremos este archivo

class My_form{
private $_conexion;// variable para conexion a la base de datos

public function My_form(){
$this->_conexion = new Conexion(); //Creamos una conexion


} // fin public function
private function myformulario(){
?>
//crea aqui tu formulario tipeando html

}
// Guardar en la base de datos.
function save(){
//recibimos los valores por el metodo post y lo almacenamos en variables
$dato = strtoupper($_POST["dato"]);

//hacemos uso de la sentencia sql y ejecutamos una accion en la base de datos
$_sql = "insert into tabla (dato) values
('$dato')";
$result = $this->_conexion->ejecutarConsulta($_sql);
// $result = $this->_conexion->ejecutarConsulta($_sql); ejecuta la conecion de la base de datos la sentencia sql y sierra la conexion en una sola linea gracias a Conexion.php
}

} //
$My_form = new My_form();// creando una nueva clase


?>

jugando con Php

Preparando el proyecto:
Una ves instalado tu gestor de servicios apache ( appserver, easyphp, wamp, vértigo ), las condiciones mínimas para tu servidor apache es que contenga php5, mysql 5.0 en adelante;
Dirígete hasta la carpeta www de tu servidor apache, dentro de esta crea una carpeta con el nombre del proyecto (miproject), dentro de esta cuatro sub carpetas ( js, css, crs, images), quedando de este modo:


Conectando la base de datos:
Esta es una función encargada de conectar la base de datos, ejecutar consultas, y una serie de sub-funciones muy útiles y practicas para programar en php.
Crea un archivo Conexión.php con el siguiente código: este archivo estará dentro de tu carpeta src.
class Conexion {

//variables de conexion
private $_baseDatos;
private $_ipServidor;
private $_usuario;
private $_password;
// identificador de conexión y consulta
private $_conexion;
private $_resultadoID; //id (puntero) de la consulta
private $_resultado; //arreglo bidimensional
private $_lastID; //representa el valor de un campo autonumérico
// número de error y texto error
private $_errno;
private $_error;

public function Conexion() {

$this->_baseDatos = "nombredb";
$this->_ipServidor = "localhost";
$this->_usuario = "user";
$this->_password = "password"; //de no tener dejar vacio

$this->_conexion = 0;
$this->_lastID = -1;
$this->_resultadoID = 0;
$this->_resultado = array(); //valores vooleanos 1= TRUE 0= FALSE
$this->_errno = 0;
$this->_error = "";
}
/**
* Metodo encargado de ejecutar una consulta establecida por el usuario.
*
* @param string $sql Consulta sql a ejecutar.
* @return object - Si tenemos éxito en la consulta devuelve un arreglo bidimensional con los resultados, sino devuelve 0.
* El cero representa un error. No representa la falta de resultado.
* Para saber la cantidad de tuplas en el resultado utilice el método getCantRegistros().
* @see getCantRegistros
*/
public function ejecutarConsulta($sql){

if (empty($sql)) {
echo "No QUERY...:!";//ocurrio un error
}
//Conecto a la base de datos
$this->conectarDB();
if (!$this->_conexion) {
echo "conection closed...!!";//conexion cerrada
}
//ejecutamos la consulta
$this->_resultadoID = mysql_query($sql, $this->_conexion);
//Verifico que la consulta se haya llevado a cabo
if (!$this->_resultadoID) {
echo "ocurrio un error al ejecutar la consulta...!!!, no se pudo obtener el resultado...!!";//error en consulta
return;
}
//Proceso la consulta. Saco las tuplas y las pongo en un arreglo
$i = 0;
//limpio el array
$this->_resultado = array();
while($_tupla= mysql_fetch_array($this->_resultadoID)) {
$this->_resultado[$i++] = $_tupla;
}
if (!$this->_resultadoID) {
$this->_resultado = 0; //cumple con el API
}
//Cierro la conexion
$this->desconectarDB();
return $this->_resultado;
}

public function ejecutarConsultaID($sql,$nombreSeq){

if (empty($sql)) { echo "No se ha especificado una consulta SQL!"; }

if (empty($nombreSeq)) {echo "No se ha especificado el nombre de la secuencia!"; }

//Establezco conexion con la base de datos
$this->conectarDB();

if (!$this->_conexion) { echo "La conexion se halla cerrada!"; }

//Escribo el log
$_logger = new Logger();
$_logger->escribirSQLLog($sql);

//ejecutamos la consulta
$this->_resultadoID = mysql_query($sql,$this->_conexion);

//Verifico que la consulta se haya llevado a cabo
if (!$this->_resultadoID) {

if($this->_config->getEstadoDepuracion() == "true") {
ERROR::show(mysql_error($this->_conexion),__FILE__,__LINE__);
} elseif ($this->_config->getEstadoDepuracion() == "false") {
echo "Se ha producido un error al ejecutar la consulta!";
} else {
echo"El estado de depuracion contiene un valor invalido";
}
}
//Proceso la consulta. Saco las tuplas y las pongo en un arreglo
$i = 0;
//limpio el array
$this->_resultado = array();
while($tupla= mysql_fetch_array($this->_resultadoID, null, MYSQL_ASSOC)) {
$this->_resultado[$i++] = $tupla;
}
if (!$this->_resultadoID) {
$this->_errno = mysql_stat($this->_resultadoID);
$this->_error = mysql_error();
$this->_resultado = 0; //cumple con el API
}
$_sqlSeq = "SELECT currval('$nombreSeq')";
//ejecutamos la consulta
$this->_resultadoID = mysql_query($_sqlSeq,$this->_conexion);
//Verifico que la consulta se haya llevado a cabo
if (!$this->_resultadoID) {

if($this->_config->getEstadoDepuracion() == "true") {
ERROR::show(mysql_error($this->_conexion),__FILE__,__LINE__);
} elseif ($this->_config->getEstadoDepuracion() == "false") {
echo "Se ha producido un error al ejecutar la consulta!";
} else {
echo"El estado de depuracion contiene un valor invalido";
}
}
//Obtenemos la tupla con el id
$tuplaSeq = pg_fetch_array($this->_resultadoID, null, MYSQL_ASSOC);
//programación defensiva
if($tuplaSeq['currval'] == "") { echo"Error al obtener el último ID de la secuencia...!"; }
$this->_lastID = -1;
$this->_lastID = $tuplaSeq['currval'];
//Cierro la conexion con la base de datos
$this->desconectarDB();
return $this->_resultado;
}


/**
* Método encargado de devolver el ultimo Id generado al llamar al método ejecutarConsultaID.
*
* @return integer Devuelve el número de Id del campo autonumérico de la última consulta.
* En caso de que no se haya generado el valor, devuelve -1.
*/
public function getUltimoId(){ return $this->_lastID;}


/**
* Método encargado de devolver el número de columnas de una consulta.
*
* @return integer Devuelve el número de columnas de una consulta.
*/
public function getCantColumnas() { return mysql_num_fields($this->_resultadoID); }


/**
* Método encargado de devolver el número de registros de una consulta.
*
* @return integer Devuelve el número de registros de una consulta.
*/
public function getCantRegistros(){ return mysql_num_rows($this->_resultadoID); }
/**
* Método encargado de devolver el nombre de una columna en una consulta.
*
* @param integer $numcampo Numero positivo que indique su posicion en la tabla de resultados. Parte de cero.
* @return string Devuelve el nombre de una columna de una consulta.
*/
public function getNombreColumna($numcampo) {
if($numcampo < 0 || $numcampo > $this->getCantColumnas()){
//ERROR::show("El numero posicional de la columna es invalido!",__FILE__,__LINE__);
echo "posicion de columna invalida..!!";
}
return mysql_field_name($this->_resultadoID, $numcampo);
}

/**
* Método encargado de devolver el codigo de error de la consulta.
*
* @return integer Devuelve el número del codigo de error de la consulta.
*/
public function getNroError(){ return $this->_errno; }
/**
* Método encargado de devolver el mensaje de error de la consulta.
*
* @return string Devuelve el mensaje de error de la consulta.
*/
public function getInfoError(){ return $this->_error; }
/**
* Muestra los datos de la última consulta en formato tabular.
* Este método tiene como objetivo servir para depuración.
*
*/
public function toString() {

echo "\n";
echo "\n";
// mostramos los nombres de los campos
for ($i = 0; $i < $this->getCantColumnas(); $i++){
echo "\n";
}
echo "\n";

//mostramos los registros
foreach ($this->_resultado as $tupla) {
echo "\n";
for ($i = 0; $i < $this->getCantColumnas(); $i++){
echo "\n";
}
echo "\n";
}
echo "
".$this->getNombreColumna($i)."
".$tupla[$this->getNombreColumna($i)]."
";
}
/*
* Metodo encargado de establecer la conexión con la base de datos.
*
* @return object - Si tenemos éxito conectando devuelve la conexión, sino devuelve 0.
*
* @access private
*/
private function conectarDB(){

//Programación defensiva
if(empty($this->_baseDatos) || empty($this->_ipServidor) || empty($this->_usuario) ){
//ERROR::show("Alguno de los valores de configuracion de la base de datos no esta seteado!",__FILE__,__LINE__);
echo "error en la configuracion de la conexion...!!";
}
try{
// Conectamos al servidor
$this->_conexion = mysql_connect($this->_ipServidor, $this->_usuario, $this->_password);
if (!$this->_conexion) {
$this->Error = "Ha fallado la conexión.";
throw new Exception('');
}
$db_selected = mysql_select_db($this->_baseDatos, $this->_conexion);
return $this->_conexion;
} catch (Exception $e) {
//ERROR::show("Se ha producido una excepción en el método conectarDB!",__FILE__,__LINE__);
echo "Se ha producido una excepción en el método conectarDB!";
}
}
/*
* Método encargado de cerrar la conexión con la base de datos.
*
* @access private
*/
private function desconectarDB() { mysql_close($this->_conexion); }
} //fin de la clase Conexion

// # NOTA: LA MAYORIA DE LAS FUNCIONES SON BASADAS PARA UN POSGRET AQUI ADAPTADOS PARA MYSQL....
?>