<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Daniel Gara - Blog DG</title>
	<atom:link href="http://www.danielgara.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.danielgara.com</link>
	<description>Pagina web sobre Daniel Gara, programacion en php, desarrollo de software, musica y mucho mas</description>
	<lastBuildDate>Wed, 09 May 2012 03:42:46 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Framework G</title>
		<link>http://www.danielgara.com/2011/12/framework-g/</link>
		<comments>http://www.danielgara.com/2011/12/framework-g/#comments</comments>
		<pubDate>Fri, 30 Dec 2011 17:01:57 +0000</pubDate>
		<dc:creator>GARA</dc:creator>
				<category><![CDATA[Php]]></category>

		<guid isPermaLink="false">http://www.danielgara.com/?p=408</guid>
		<description><![CDATA[Durante los últimos 2 años en la Universidad Nacional de Colombia sede Medellín, se ha venido trabajando fuertemente en el desarrollo de un nuevo patrón y una nueva metodología para desarrollar software y páginas web en php; este grupo conformado por el profesor Fernando Arango y los estudiantes Daniel Correa y Danny Alejandro Alvarez ya [...]]]></description>
			<content:encoded><![CDATA[<p>Durante los últimos 2 años en la Universidad Nacional de Colombia sede Medellín, se ha venido trabajando fuertemente en el desarrollo de un nuevo patrón y una nueva metodología para desarrollar software y páginas web en php; este grupo conformado por el profesor Fernando Arango y los estudiantes Daniel Correa y Danny Alejandro Alvarez ya tiene casi lista su primera versión, por tal motivo se ha decidido crear un sitio web: <a href="http://www.frameworkg.com" target="blank"><strong>www.frameworkg.com</strong></a> el cual estará listo próximamente (mas o menos para mediados de septiembre del 2012), y una cuenta en twitter <strong>@FrameworkG</strong> donde podrán encontrar avances y noticias del nuevo framework.</p>
<p>La idea es generar una documentación lo mas completa posible, para que los estudiantes de sistemas y desarrolladores web pueden encontrar respuesta a casi todas las inquietudes en base a este desarrollo. Aunque la página web estará en ingles, la primera documentación se encontrara en español.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.danielgara.com/2011/12/framework-g/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tesis de grado en desarrollo de software</title>
		<link>http://www.danielgara.com/2011/11/tesis-de-grado-en-desarrollo-de-software/</link>
		<comments>http://www.danielgara.com/2011/11/tesis-de-grado-en-desarrollo-de-software/#comments</comments>
		<pubDate>Fri, 25 Nov 2011 04:57:21 +0000</pubDate>
		<dc:creator>GARA</dc:creator>
				<category><![CDATA[Php]]></category>

		<guid isPermaLink="false">http://www.danielgara.com/?p=405</guid>
		<description><![CDATA[Se necesitan 10 estudiantes de Sistemas que se encuentren cursando los últimos semestres y que les guste el desarrollo de software, para desarrollar una aplicación basada en un framework y matricularla como tesis de grado.
Los estudiantes deben tener un acumulado mayor al 80% al empezar el primer semestre de 2012 para poder matricular este desarrollo [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Se necesitan 10 estudiantes de Sistemas que se encuentren cursando los últimos semestres y que les guste el desarrollo de software, para desarrollar una aplicación basada en un framework y matricularla como tesis de grado.</strong></p>
<p>Los estudiantes deben tener un acumulado mayor al 80% al empezar el primer semestre de 2012 para poder matricular este desarrollo como trabajo de grado.</p>
<p>- La idea es que los 10 estudiantes se dividirán en grupos de 2 personas.<br />
- Cada grupo elegirá un framework de los mas utilizados (sea symfony, cakephp, yii, entre otros).<br />
- Todos los grupos desarrollaran una aplicación con el framework seleccionado, la cual sera propuesta por el profesor encargado en este caso Fernando Arango y será la misma aplicación para todos los grupos.<br />
- Cada grupo ira recopilando información del framework, que tal es su instalación, que tan facil es de manejar, que tal es la documentación en internet, como ha facilitado o perjudicado el desarrollo de la aplicación, etc.<br />
- Al final se sacaran conclusiones de las experiencias con cada framework y se recopilara en un trabajo las ventajas y desventajas de cada framework, lo cual dará una visión mas amplia de la programación con frameworks y ayudará a saber que tecnología seria mas conveniente utilizar en que casos.</p>
<p>Si desea participar escriba a yo@danielgara.com para programar una reunión informativa donde se hablara del proyecto y se resolverán dudas.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.danielgara.com/2011/11/tesis-de-grado-en-desarrollo-de-software/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Formulario e inserción de datos en la base de datos método 2 (ajax). Tutorial 7</title>
		<link>http://www.danielgara.com/2011/06/formulario-e-insercion-de-datos-en-la-base-de-datos-metodo-2-ajax-tutorial-7/</link>
		<comments>http://www.danielgara.com/2011/06/formulario-e-insercion-de-datos-en-la-base-de-datos-metodo-2-ajax-tutorial-7/#comments</comments>
		<pubDate>Wed, 29 Jun 2011 21:12:57 +0000</pubDate>
		<dc:creator>GARA</dc:creator>
				<category><![CDATA[Php]]></category>

		<guid isPermaLink="false">http://www.danielgara.com/?p=343</guid>
		<description><![CDATA[Formulario e inserción de datos en la base de datos método 2 (ajax). Tutorial 7
El método anterior para inserción de datos se basa en volver a cargar un controlador, en post y get, pero hoy en día ese método de volver a cargar toda una página resulta muchas veces ser ineficiente, entonces el ajax lo [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Formulario e inserción de datos en la base de datos método 2 (ajax). Tutorial 7</strong></p>
<p>El método anterior para inserción de datos se basa en volver a cargar un controlador, en post y get, pero hoy en día ese método de volver a cargar toda una página resulta muchas veces ser ineficiente, entonces el ajax lo que te permite es SIN necesidad de volver a cargar toda una página, todos unos archivos, agregar o editar la información en “Tiempo Real” y mostrar los resultados en la misma página donde los estas agregando.</p>
<p><strong>Nuevamente primero organizaremos los pasos para luego empezar a codificar</strong></p>
<p><strong>1)</strong> crear un template un formulario donde podamos recoger la información, la característica de este formulario es que no tendrá la parte del form, porque este formulario NO nos enviara a otro sitio.</p>
<p><strong>2)</strong> crear un controlador que nos permita mostrar el template anterior, este controlador a diferencia del de el tuorial pasado no tendrá post ni get ni la función agregar, será nuevamente muy muy sencillo.</p>
<p><strong>3)</strong> crear una o varias funciones javascript q nos permita recolectar en tiempo real la información que se lleno en el formulario anterior.<span id="more-343"></span></p>
<p><strong>4)</strong> crear un archivo php que nos recoja la información que envio el javascrip anterior, y luego se conecte a la base de datos para agregar los datos.</p>
<p><strong>5)</strong> crear otra función javascript que recoja el resultado de ese archivo php y que muestre en la pagina actual el aviso de que se agrego correctamente la información.</p>
<p><strong>EMPECEMOS</strong></p>
<p><strong>Codificación 1</strong></p>
<p><strong>Archivo:</strong> agregarpersona.tpl &#8211; C://wamp/www/trabajo/templates/agregarpersona.tpl</p>
<pre><code>
&lt;html&gt;
&lt;title&gt;&lt;/title&gt;
&lt;head&gt;
{literal}
&lt;script type="text/javascript" charset="utf-8" src="varios/funciones.js"&gt;&lt;/script&gt;
{/literal}
&lt;/head&gt;
&lt;body&gt;

&lt;div id="mensajeoculto" style="display:none"&gt;
&lt;table border="0" cellspacing="10"&gt;&lt;tr&gt;&lt;td&gt;
&lt;b&gt;Aviso&lt;/b&gt;&lt;br /&gt;
&lt;div id="respuesta"&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;

&lt;table border="0" cellspacing="10"&gt;
&lt;tr&gt;&lt;td&gt;&lt;b&gt;Documento:&lt;/b&gt;&lt;/td&gt;&lt;td </code>class="informacion"<code>&gt;&lt;input type="text" name="documento"&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;b&gt;Nombre:&lt;/b&gt;&lt;/td&gt;&lt;td </code>class="informacion"<code>&gt;&lt;input type="text" name="nombre"&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;b&gt;Apellido:&lt;/b&gt;&lt;/td&gt;&lt;td </code>class="informacion"<code>&gt;&lt;input type="text" name="apellido"&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;button onclick="guardarregistro('persona',this)"&gt;Agregar&lt;/button&gt;&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;
&lt;/body&gt;
&lt;/html&gt;
</code></pre>
<p><img src="http://img26.imageshack.us/img26/2193/ajax1.png" alt="" /></p>
<p>El código anterior, es lo que muestra es: primero incluyo un archivo .js que es donde van a estar todas las funciones que me permiten trabajar con javascript, como ven esa línea esta entre etiquetal {literal} {/literal} ya que smarty solo me permite usar scripts cuando uso estas etiquetas; luego hay una división, de oculto, esa división solo se mostrara cuando una persona sea agregada (ahí va un truco); luego creo una tabla de 4 filas por 2 columnas, como podemos ver las columnas donde agrego los input son de clase “informacion” (eso me lo invente yo) simplemente lo que hago es que esas columnas las voy a tratar de un modo especial, ya que lo que diferencian esas columnas de las otras es que de ahí debo sacar la información que digita el usuario. Y por ultimo creo un botón que al darle clic ejecutara la función guardarregistro que leera los datos y realizara otros pasos que explicare en la codificación 3.</p>
<p><strong>Codificación 2</strong></p>
<p><strong>Archivo:</strong> agregarpersona.php &#8211; C://wamp/www/trabajo/agregarpersona.php</p>
<pre><code>
&lt;?php

//cargamos las librerías de smarty
require('include.php');

class agregarpersona {

public function display()
{
global $smarty;

//Muestra por pantalla todos los diferentes templates
$smarty-&gt;display('agregarpersona.tpl');
}

}

$call = new agregarpersona();
$call-&gt;display();

?&gt;
</code></pre>
<p>Es un simple controlador que muestra el archivo agregarpersona.tpl</p>
<p><strong>Codificación 3 y 5 (juntamos estas codificaciones ya que las funciones están juntas dentro del mismo archivo)</strong></p>
<p><strong>Archivo:</strong> funciones.js &#8211; C://wamp/www/trabajo/varios/funciones.js</p>
<pre><code>
function guardarregistro(tipo,obj)
{
var j=0;
var resultados = new Array();;

while (obj.tagName!='TABLE')
obj = obj.parentNode;

var td = obj.getElementsByTagName('TD');
var len = td.length;

for (var i=0; i&lt;len; i++)
{
if(td[i].className=='informacion')
{
resultados[j]=td[i].firstChild.value;
j=j+1;
}
}

procesarregistro(resultados,tipo);
}

function procesarregistro(re,tipoformato)
{
ajax=objetoAjax();
ajax.open("POST", "ajax.php",true);
ajax.onreadystatechange=function()
{
if (ajax.readyState==1)
{}
if (ajax.readyState==4)
{
data = ajax.responseText.split('[INTER]');
mostraraviso(data); // una vez recogemos la respuesta, actualizamos las columnas
}
}

ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");

if (tipoformato == 'persona')
{
ajax.send("documento="+re[0]+"&amp;nombre="+re[1]+"&amp;apellido="+re[2]+"&amp;tipoformato="+tipoformato);
}
}

function mostraraviso(data)
{
document.getElementById('mensajeoculto').style.display='';
divResultado = document.getElementById('respuesta');
divResultado.innerHTML = data[0];
}

function objetoAjax(){
var xmlhttp=false;
try {
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (E) {
xmlhttp = false;
}
}

if (!xmlhttp &amp;&amp; typeof XMLHttpRequest!='undefined') {
xmlhttp = new XMLHttpRequest();
}
return xmlhttp;
}
</code></pre>
<p><strong>- Funcion guardarregistro:</strong> cuando se da clic en el botón Agregar, se llama esta función, esta función envia la posición en la que estaba parado el botón, apartir de esta posición busca la primer tabla (table) que contega esa posición, una ves encontrada esa primera tabla, busca todas las columnas o td dentro de esa tabla, luego hace un for o un recorrido por todos los td, dentro de ese recorrido analiza SI el td es de clase información (osea un input) entonces recoge la información que hay allí guardada y la asigna a un vector. Finalmente envia todos los resultados a la función procesarregistro, y una variable “tipo” que en el botón definimos como “persona”.</p>
<p><strong>- Funcion procesarregistro:</strong> crea un objeto tipo ajax (este objeto o función esta definido mas abajo y es una función general, algo global que se ha definido para todos los ajax y no fue inventado por mi) este objeto ajax luego indica que va a enviar los datos pot POSt a un archivo ajax.php luego el ajax.send envia los datos en el orden en el cual fueron recolectados y por ultimo luego de que se ejecute lo que hay dentro de ajax.php (que veremos en codificación 4) llama la función mostrar aviso.</p>
<p><strong>- Funcion mostrar aviso:</strong> recolecta lo que envio el ajax.php y anteriormente habíamos definido en agregarpersona.tpl una división “mensajeoculto” como oculta que nos e mostrara, en este caso mostraraviso activa esa división, y además en la división le asigna el mensaje que envio el ajax.php (el ajax.php es visto en codificación 4).</p>
<p><img src="http://img535.imageshack.us/img535/1906/ajax2o.png" alt="" /></p>
<p><strong>Codificación 4</strong></p>
<p><strong>Archivo:</strong> ajax.php &#8211; C://wamp/www/trabajo/ajax.php</p>
<pre><code>
&lt;?php
include_once ("varios/gestor.php");

class ajaxclas{

public function funciones($Datos)
{
$myGestorBD = new gestor();
$myGestorBD-&gt;conectar();
$myGestorBD-&gt;agregar($Datos['tipoformato'],$Datos);
$myGestorBD-&gt;cerrarConexion();

echo "Informaci&amp;oacute;n agregada correctamente";
}
}

$Datos = $_POST;
$call = new ajaxclas();
$call-&gt;funciones($Datos);

?&gt;
</code></pre>
<p>Es un archivo muy sencillo, simplemente recoge por post los datos, llama a la función “funciones” y crea un objeto tipo gestor, y le dice que agregue una persona y le envia los datos. Lo raro de esta función es que hace un “echo” o impresión de datos, y si saben de php un echo muestra datos por pantalla, pero en este caso como el ajax.php fue llamado por un objetoajax, el echo no se mostrara si no que será devuelto al objeto ajax que lo llamo. En este caso ese mensaje de información agregada correctamente, será devuelta y luego enviada a mostraraviso, allí mostrar aviso lo asignara al template y ahí si saldrá por pantalla.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.danielgara.com/2011/06/formulario-e-insercion-de-datos-en-la-base-de-datos-metodo-2-ajax-tutorial-7/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Formulario e inserción de datos en la base de datos método 1 (get y post). Tutorial 6</title>
		<link>http://www.danielgara.com/2011/06/formulario-e-insercion-de-datos-en-la-base-de-datos-metodo-1-get-y-post/</link>
		<comments>http://www.danielgara.com/2011/06/formulario-e-insercion-de-datos-en-la-base-de-datos-metodo-1-get-y-post/#comments</comments>
		<pubDate>Wed, 29 Jun 2011 19:53:21 +0000</pubDate>
		<dc:creator>GARA</dc:creator>
				<category><![CDATA[Php]]></category>

		<guid isPermaLink="false">http://www.danielgara.com/?p=331</guid>
		<description><![CDATA[Formulario e inserción de datos en la base de datos método 1 (get y post). Tutorial 6
Basándonos en los tutoriales pasados, en la tabla persona y en el gestor de datos, vamos a hacer una simple inserción desde un formulario web a la base de datos, usando un solo archivo php (controlador) y continuando con [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Formulario e inserción de datos en la base de datos método 1 (get y post). Tutorial 6</strong></p>
<p>Basándonos en los tutoriales pasados, en la tabla persona y en el gestor de datos, vamos a hacer una simple inserción desde un formulario web a la base de datos, usando un solo archivo php (controlador) y continuando con la técnica de separación por capas que se hablo en el primer tutorial.</p>
<p>En el desarrollo php es supremamente importante, antes de empezar a copiar código php, pensar bien las cosas que se van a hacer (los pasos que hay que realizar). En este caso los pasos son los siguientes:</p>
<p><strong>1)</strong> Desarrollar un template el cual tenga un formulario para recolectar el nombre, apellido y documento de una persona.</p>
<p><strong>2)</strong> Desarrollar un controlador, desde el cual se llame ese template y en el caso de que ya se haya introducido información se deberá  enviar la información al gestor y luego mostrar otro template donde haya un aviso diciendo que la información fue agregada correctamente.<span id="more-331"></span></p>
<p><strong>3)</strong> Agregarle las funciones de adicionar personas a la base de datos al gestor.</p>
<p>Los pasos son muy sencillo, y una ves uno tiene bien definido esos pasos podrá seguir con el proceso de codificación.</p>
<p><strong>Codificación 1</strong></p>
<p><strong>Archivo:</strong> agregarpersona.tpl &#8211; C://wamp/www/trabajo/templates/agregarpersona.tpl</p>
<pre><code>
&lt;html&gt;
&lt;title&gt;&lt;/title&gt;
&lt;body&gt;

&lt;table border="0" cellspacing="10"&gt;&lt;tr&gt;&lt;td&gt;
&lt;form action="agregarpersona.php?opcion=agregar" name="agregarpersona" method="post"&gt;
&lt;b&gt;Documento:&lt;/b&gt; &lt;input type="text" name="documento" /&gt;&lt;br /&gt;
&lt;b&gt;Nombre:&lt;/b&gt; &lt;input type="text" name="nombre" /&gt;&lt;br /&gt;
&lt;b&gt;Apellido:&lt;/b&gt; &lt;input type="text" name="apellido" /&gt;&lt;br /&gt;
&lt;input type="submit" value="Agregar" /&gt;
&lt;/form&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/body&gt;
&lt;/html&gt;
</code></pre>
<p>El template lo llamaremos agregarpersona.tpl (es muy importante utilizar nombres acordes a lo que hace cada cosa) todos los formularios deben ser tipo POST ya que por ahí la información viaja mas protegida. Y el resto son simplemente los campos que el usuario deberá llenar. Cuando el usuario da clic en agregar envía los datos que la persona lleno, y llama el controlador, enseguida observaremos que un mismo controlador puede mostrar el template del formulario, encargarse del envió de datos y mostrar mensajes, mucha gente utiliza varios controladores o archivos php, para estas cosas, eso es muy ineficiente y lo único que hace es complicar la lógica de la programación y aumentar las líneas de código.</p>
<p><strong>Codificación 2</strong></p>
<p><strong>Archivo:</strong> agregarpersona.php &#8211; C://wamp/www/trabajo/agregarpersona.php</p>
<pre><code>&lt;?php

//cargamos las librerías de smarty
require('include.php');
include ('varios/gestor.php');

class agregarpersona {

 public function agregar($Opcion,$Datos)
 {
 global $smarty, $TemplateAuxiliar;

 switch($Opcion)
 {

 case "agregar":
 $gestor = new gestor();
 $gestor-&gt;conectar();
 $gestor-&gt;agregar('persona',$Datos);
 $gestor-&gt;cerrarConexion();
 $smarty-&gt;assign('mensaje','Persona agregada correctamente');
 $TemplateAuxiliar = 'mensaje.tpl';
 break;

 default:
 break;
 }
 }

 public function display()
 {
 global $smarty, $TemplateAuxiliar;

 //Muestra por pantalla todos los diferentes templates
 $smarty-&gt;display($TemplateAuxiliar);
 }

}

//guarda el tipo de accion que se desea realizar
$Opcion = $_GET['opcion'];
//guarda los datos enviados en una nueva conexion
$Datos = $_POST;

$TemplateAuxiliar ='agregarpersona.tpl'; 

$call = new agregarpersona();
$call-&gt;agregar($Opcion,$Datos);
$call-&gt;display();

?&gt;
</code></pre>
<p>Como podemos ver he llamado la clase igual al nombre del controlador, es simplemente por referencia; lo primero que ejecuta el navegador es la parte donde se llama al include.php y además incluye el gestor para futuras operaciones, luego guarda la opción que se manda por get, y los datos por post; luego crea una variable template auxiliar que luego miraremos para que sirve, y por ultimo crea un objeto agregarpersona y llama la función agregar; en esta función se detecta si se recibió algo por get o no, en caso de que la persona entre por primera ves al archivo agregarperosna.php la variable opción estará vacia por lo cual en la función agregar ira al default donde no hace nada; en caso contrario creara un objeto tipo gestor, lamara la función agregar, y enviara los datos para q sean agregados.</p>
<p>Aquí viene un truco, el template auxiliar se cambia a mensaje.tpl, por defecto al principio estaba en agregarpersona.tpl pero ahora se cambia porque ya sabemos que en este caso se agrego una persona y mostrara simplemente un mensaje que se asigna con smarty diciendo que la persona se agrego satisfactoriamente.</p>
<p>Finalmente se ejecutara la función display y mostrara un template dependiendo del caso.</p>
<p>Adicionalmente adjunto el archivo mensaje.tpl para que vean su sencillez</p>
<p><strong>Archivo:</strong> mensaje.tpl &#8211; C://wamp/www/trabajo/templates/mensaje.tpl</p>
<pre><code>
&lt;html&gt;
&lt;title&gt;&lt;/title&gt;
&lt;body&gt;

&lt;table border="0" cellspacing="10"&gt;&lt;tr&gt;&lt;td&gt;
&lt;b&gt;Aviso&lt;/b&gt;&lt;br /&gt;
{$mensaje}
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/body&gt;
&lt;/html&gt;
</code></pre>
<p><strong>Codificación 3</strong></p>
<p><strong>Agregar al Archivo:</strong> gestor.php &#8211; C://wamp/www/trabajo/varios/gestor.php (para encontrar el archivo completo ver tutorial 5)</p>
<pre><code>
function agregar($Opcion,$Datos)
	{
		switch($Opcion)
		{
			case "persona":
			  $nombre= mysql_real_escape_string($Datos['nombre']);
			  $apellido= mysql_real_escape_string($Datos['apellido']);
		      $documento= mysql_real_escape_string($Datos['documento']);

$consulta = "INSERT INTO persona (documento, nombre, apellido) values ('$documento', '$nombre', '$apellido')";
       	      $this-&gt;realizarOperacion($consulta);
			  break;

		    default:
			    break;
		}
	}
</code></pre>
<p>El código es muy sencillo, simplemente coge los datos que se enviara, a cada uno les saca los caracteres extraños con la función mysql_real_escape_string esto para evitar que nos envíen códigos maliciosos o nos quieran hacer una injection sql de la cual hablaremos después, y finalmente envía la consulta a la base de datos.</p>
<p>Luego de hacer un experimento podremos observar que claramente en phpmyadmin aparece registrado algún dato que metamos por agregarpersona.php</p>
]]></content:encoded>
			<wfw:commentRss>http://www.danielgara.com/2011/06/formulario-e-insercion-de-datos-en-la-base-de-datos-metodo-1-get-y-post/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Gestor de base de datos. Tutorial 5</title>
		<link>http://www.danielgara.com/2011/06/gestor-de-base-de-datos-tutorial-5/</link>
		<comments>http://www.danielgara.com/2011/06/gestor-de-base-de-datos-tutorial-5/#comments</comments>
		<pubDate>Fri, 24 Jun 2011 02:42:15 +0000</pubDate>
		<dc:creator>GARA</dc:creator>
				<category><![CDATA[Php]]></category>

		<guid isPermaLink="false">http://www.danielgara.com/?p=325</guid>
		<description><![CDATA[Gestor de base de datos
El gestor de base de datos es un archivo que nos permitirá en todos nuestros proyectos, conectar a la base de datos para: guardar datos, eliminar datos, editar datos, sacar datos y mucho mas. Este será el UNICO archivo en el cual se colocaran las consultas sql, y será el único [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Gestor de base de datos</strong></p>
<p>El gestor de base de datos es un archivo que nos permitirá en todos nuestros proyectos, conectar a la base de datos para: guardar datos, eliminar datos, editar datos, sacar datos y mucho mas. Este será el UNICO archivo en el cual se colocaran las consultas sql, y será el único archivo que tendrá la contraseña y el nombre de la base de datos y servidor.<span id="more-325"></span></p>
<p>El siguiente código, es un código que actualmente utilizo en TODAS las páginas y/o software que requieren de una base de datos, es un archivo que a pesar de varios años que han pasado no e necesitado modificarlo. Obviamente para cada página y para cada software deberemos agregar funciones adicionales, pero las funciones que pegare son las más generales y son demasiado útiles.</p>
<p>Continuando con los tutoriales anteirores, este archivo deberá ser guardado en C://wamp/www/trabajo/varios/gestor.php</p>
<pre><code>
&lt;?php

class gestor{

var $servidor = "localhost";
var $user = "prueba";
var $pass = "prueba";
var $db = "prueba";
var $cn;

function gestor(){
}

function conectar(){
$this-&gt;cn = mysql_pconnect($this-&gt;servidor, $this-&gt;user, $this-&gt;pass );
if ( !$this-&gt;cn )
die("Fallo en la conexion a la base de datos: ".mysql_error());
if(!mysql_select_db($this-&gt;db))
die ( "No fue posible comunicarse con la base de datos $db: ".mysql_error());
}

function realizarOperacion($codigo){
$resultado = mysql_query($codigo, $this-&gt;cn) ;
}

/**Realiza una consulta sobre la BD*/
function consultar($codigo){
//vector donde se almacenaran los resultados de la consulta; cada elemento sera un registro
$datos = array();
$resultado = mysql_query($codigo, $this-&gt;cn) or die(mysql_error($this-&gt;cn));
while ( $row = mysql_fetch_object($resultado) ){
array_push($datos, $row);
}
return $datos;
}

/**Cierra la conexion a la BD*/
function cerrarConexion(){
if($this-&gt;cn)
mysql_close( $this-&gt;cn );
}

}
?&gt;
</code></pre>
<p><strong>Explicacion:</strong></p>
<p>Las 4 variables que aparecen en el gestor, son el servidor, que en nuestro caso es localhost, el nombre de usuario que debe ser prueba, la contraseña que también es prueba, y el nombre de la base de datos que igual que el usuario es prueba.</p>
<p><strong>Funcion conectar:</strong> nos permite conectarnos a la base de datos.</p>
<p><strong>Funcion realizarOperacion:</strong> permite realizar consultas o modificación a la base de datos.</p>
<p><strong>Funcion consultar:</strong> permite sacar datos de la base de datos y los transforma en forma de objeto (mas adelante veremos como los saca y como utilizamos esa información que sacamos)</p>
<p><strong>Funcion cerrarConexion:</strong> como su nombre lo indica cierra la conexión que se establece con la base de datos, es FUNDAMENTAL siempre que se haga una conexión, y luego se realicen todos los procedimientos necesarios al final cerrar la conexión para no sobrecargar el servidor.</p>
<p>Gracias a estas funciones en el próximo tutorial podremos realizar nuestra primera inserción a la base de datos para guardar la información de forma segura.<br />
<a href="http://www.danielgara.com/2011/06/phpmyadmin-creacion-de-una-base-de-datos-y-tabla-tutorial-4/"><br />
Volver al tutorial anterior <-</a><br />
<a href="http://www.danielgara.com/2011/06/formulario-e-insercion-de-datos-en-la-base-de-datos-metodo-1-get-y-post/">Ir al tutorial Siguiente -></a></p>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 181px; width: 1px; height: 1px; overflow: hidden;">
<p>&lt;?php</p>
<p>class gestor{</p>
<p>var $servidor = &#8220;localhost&#8221;;<br />
var $user = &#8220;prueba&#8221;;<br />
var $pass = &#8220;prueba&#8221;;<br />
var $db = &#8220;prueba&#8221;;<br />
var $cn;</p>
<p>function gestor(){<br />
}</p>
<p>function conectar(){<br />
$this-&gt;cn = mysql_pconnect($this-&gt;servidor, $this-&gt;user, $this-&gt;pass );<br />
if ( !$this-&gt;cn )<br />
die(&#8220;Fallo en la conexion a la base de datos: &#8220;.mysql_error());<br />
if(!mysql_select_db($this-&gt;db))<br />
die ( &#8220;No fue posible comunicarse con la base de datos $db: &#8220;.mysql_error());<br />
}</p>
<p>function realizarOperacion($codigo){<br />
$resultado = mysql_query($codigo, $this-&gt;cn) ;<br />
}</p>
<p>/**Realiza una consulta sobre la BD*/<br />
function consultar($codigo){<br />
//vector donde se almacenaran los resultados de la consulta; cada elemento sera un registro<br />
$datos = array();<br />
$resultado = mysql_query($codigo, $this-&gt;cn) or die(mysql_error($this-&gt;cn));<br />
while ( $row = mysql_fetch_object($resultado) ){<br />
array_push($datos, $row);<br />
}<br />
return $datos;<br />
}</p>
<p>/**Cierra la conexion a la BD*/<br />
function cerrarConexion(){<br />
if($this-&gt;cn)<br />
mysql_close( $this-&gt;cn );<br />
}</p>
<p>}<br />
?&gt;</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.danielgara.com/2011/06/gestor-de-base-de-datos-tutorial-5/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Phpmyadmin, creación de una base de datos y tabla. Tutorial 4</title>
		<link>http://www.danielgara.com/2011/06/phpmyadmin-creacion-de-una-base-de-datos-y-tabla-tutorial-4/</link>
		<comments>http://www.danielgara.com/2011/06/phpmyadmin-creacion-de-una-base-de-datos-y-tabla-tutorial-4/#comments</comments>
		<pubDate>Fri, 24 Jun 2011 02:08:43 +0000</pubDate>
		<dc:creator>GARA</dc:creator>
				<category><![CDATA[Php]]></category>

		<guid isPermaLink="false">http://www.danielgara.com/?p=318</guid>
		<description><![CDATA[Phpmyadmin, creación de una base de datos y tabla
Es muy importante que toda la información este almacenada en una base de datos por cuestiones de seguridad, en este tutorial vamos a crear una tabla desde phpmyadmin en wampserver, y en los 2 próximos tutoriales siguientes vamos a aprender a llenar la información de esta tabla [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Phpmyadmin, creación de una base de datos y tabla</strong></p>
<p>Es muy importante que toda la información este almacenada en una base de datos por cuestiones de seguridad, en este tutorial vamos a crear una tabla desde phpmyadmin en wampserver, y en los 2 próximos tutoriales siguientes vamos a aprender a llenar la información de esta tabla desde un proyecto php y vamos a aprender a manejar el gestor de base de datos el cual es fundamental para todo desarrollo.</p>
<p>Lo primero que debemos hacer es abrir wampserver y luego entrar a <a href="http://localhost/phpmyadmin/">http://localhost/phpmyadmin/</a> seguidamente dar clic en <span style="text-decoration: underline;">privilegios</span> y a continuación dar clic en <span style="text-decoration: underline;">agregar un nuevo usuario</span> después colocamos:</p>
<p><strong>Nombre de usuario:</strong> prueba<br />
<strong>Servidor:</strong> y de la lista desplegable que hay lado seleccionamos “Local”<br />
<strong>Contraseña:</strong> prueba</p>
<p>Y finalmente chuleamos la opción <span style="text-decoration: underline;">“Crear base de datos con el mismo nombre y otorgue todos los privilegios”</span>; Por ultimo clic en continuar y ya tenemos creada nuestra primer base de datos (prueba) y tenemos asignado un usuario con el mismo nombre (prueba).</p>
<p>En la parte izquierda nos aparecerá el nombre de la base de datos (prueba) damos clic ahí, y luego procedemos a crear una tabla, en nuestro caso crearemos una tabla que se va a llamar <span style="text-decoration: underline;">persona</span> y que va a tener <span style="text-decoration: underline;">3</span> campos.</p>
<p>Entonces colocamos lo anterior:<span id="more-318"></span></p>
<p><strong>Nombre:</strong> persona<br />
<strong>Numero de campos:</strong> 3</p>
<p>Seguidamente procederemos a llenar los datos como muestra la imagen:</p>
<p><img src="http://www.danielgara.com/images/tutorial4.png" width="650" alt="" /></p>
<p>a la persona simplemente le colocaremos un documento, un nombre y un apellido; el documento será la clave primaria, la clave primaria es aquella que identifica o diferencia una persona de otra, como sabemos no pueden existir 2 personas con un mismo documento, y en este caso el documento será INT que son números enteros; los otros 2 campos serán tipo texto (varchar) y tendrán una máxima longitud de 100 caracteres. Es FUNDAMENTAL que todas las tablas que se creen sean de tipo InnoDB esto nos permitirá más adelante crear claves foráneas (las cuales explicaremos en otro tutorial).</p>
<p>Por último damos clic en <span style="text-decoration: underline;">Grabar</span> y ya tenemos creado nuestra primera tabla y nuestra primera base de datos; en el próximo tutorial veremos cómo es el manejo del gestor y más adelante insertaremos datos desde una página web a esa base de datos.</p>
<p><a href="http://www.danielgara.com/2011/06/que-es-smarty-y-como-usarlo-un-ejemplo/">Volver al tutorial anterior <-</a><br />
<a href="http://www.danielgara.com/2011/06/gestor-de-base-de-datos-tutorial-5/">Ir al tutorial siguiente -></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.danielgara.com/2011/06/phpmyadmin-creacion-de-una-base-de-datos-y-tabla-tutorial-4/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Que es Smarty y como usarlo, un ejemplo. Tutorial 3</title>
		<link>http://www.danielgara.com/2011/06/que-es-smarty-y-como-usarlo-un-ejemplo/</link>
		<comments>http://www.danielgara.com/2011/06/que-es-smarty-y-como-usarlo-un-ejemplo/#comments</comments>
		<pubDate>Thu, 23 Jun 2011 04:33:11 +0000</pubDate>
		<dc:creator>GARA</dc:creator>
				<category><![CDATA[Php]]></category>

		<guid isPermaLink="false">http://www.danielgara.com/?p=302</guid>
		<description><![CDATA[Que es Smarty y como usarlo, un ejemplo
Como lo dijimos en un tutorial pasado “Smarty es la herramienta clave para poder hacer la separación por capas, simplemente permite al programador separa el código php del html y usar una serie de etiquetas smarty”
Una vez instalado el wampserver, vamos a hacer nuestro primer desarrollo con smarty.
Nota [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Que es Smarty y como usarlo, un ejemplo</strong></p>
<p>Como lo dijimos en un tutorial pasado “Smarty es la herramienta clave para poder hacer la separación por capas, simplemente permite al programador separa el código php del html y usar una serie de etiquetas smarty”</p>
<p>Una vez instalado el wampserver, vamos a hacer nuestro primer desarrollo con smarty.<br />
<strong>Nota (Regla):</strong> nunca crear nombres de carpetas o archivos empezando con mayuscula, nunca usar mayuscula siempre minuscula, aveces general problema al llamar archivos o carpetas desde otros lugares por la bendita mayuscula<span id="more-302"></span></p>
<p><strong>1)</strong> Creamos una carpeta llamado trabajo en la ruta C://wamp/www/</p>
<p><strong>2)</strong> Dentro de esta carpeta crearemos las siguientes carpetas:</p>
<p>- C://wamp/www/trabajo/cache/<br />
- C://wamp/www/trabajo/configs/<br />
- C://wamp/www/trabajo/images/<br />
- C://wamp/www/trabajo/smarty/<br />
- C://wamp/www/trabajo/templates/<br />
- C://wamp/www/trabajo/templates_c/<br />
- C://wamp/www/trabajo/varios/</p>
<p>Las carpetas cache, configs, smarty, templates, tempaltes_c son de uso exclusivo para smarty; en la carpeta images guardaremos mas adelante todas las imágenes, y en la carpeta varios, guardaremosmas adelante archivos de javascript, el gestor.php, archivos de estilo y muchas otras cosas.</p>
<p><strong>3)</strong> Descargamos smarty desde aquí: <a href="http://www.smarty.net/download">http://www.smarty.net/download</a><br />
Una vez descargado lo descomprimimos y ojo! Entramos a la carpeta libs y TODO lo que hay ahí (dentro de la carpeta libs) lo copiamos y lo pegamos dentro de la carpeta C://wamp/www/trabajo/smarty/ esos son los archivos necesarios, el resto de archivos que trae ese comprimido no son necesarios son ejemplos o demos de smarty</p>
<p><strong>4)</strong> Crearemos un archivo llamado include.php en esta ruta: C://wamp/www/trabajo/include.php con lo siguiente:</p>
<pre><code>
&lt;?php
define ('RUTA','http://localhost/trabajo/');
include_once('C:/wamp/www/trabajo/smarty/Smarty.class.php');

$smarty = new Smarty;

$smarty-&gt;template_dir = 'C:/wamp/www/trabajo/templates';
$smarty-&gt;config_dir = 'C:/wamp/www/trabajo/configs';
$smarty-&gt;cache_dir = 'C:/wamp/www/trabajo/cache';
$smarty-&gt;compile_dir = 'C:/wamp/www/trabajo/templates_c';
?&gt;
</code></pre>
<p>Lo anterior indica lo siguiente:</p>
<p>Definimos una variable RUTA que es la ruta vía web de nuestro proyecto “trabajo”.<br />
- En la tercera línea incluimos la clase smarty la cual es esencial para todo el proyecto.<br />
- En la cuarta línea creamos un nuevo objeto tipo smarty.<br />
- En el resto de las líneas definimos los directorios smarty donde se va a ubicar información clave; por ejemplo definimos el directorio template_dir en la carpeta templates lo cual indica que ahí irán todos los archivos html, el directorio de templates_c que será donde se ubiquen los cache de los templates “pre” cargados para que la pagina cargue mas rápido y muchas otras cosas que en otros tutoriales explicaremos.</p>
<p><strong>5)</strong> creamos un archivo index.php que será el controlador y el primer archivo que manejara la información</p>
<pre><code>
&lt;?php

//cargamos las librerías de smarty
require('include.php');

class index {

             public function display()
             {
                   global $smarty;

                    //Muestra por pantalla todos los diferentes templates
                   $smarty-&gt;display('hola.tpl');
            }
}

$call = new index();
$call-&gt;display();

?&gt;
</code></pre>
<p>Lo anterior indica lo siguiente:</p>
<p>- En la línea de require, incluimos el archivo que anteriormente creamos.<br />
- En la línea de class creamos una clase llamada index (todos los controladores se sugieren que sean clases para seguir el mismo lineamiento en todos los archivos y que sea de fácil manejo)<br />
- En la línea de public function display lo que hacemos es que crearemos una función que será característica de todos los controladores que es donde decidimos que mostrar por pantalla en este caso, esa función tiene la línea global smarty, que indica que cogerá el objeto smarty que creamos en el include (debe ser global porque no está definida dentro de la clase, si no fuera de la clase) y por ultimo usando este objeto smarty usamos una función de smarty llamada display que lo que hace es que muestra por pantalla algún archivo .tpl o .html (son lo mismo) que se debe encontrar ubicado dentro del directorio de template que definimos anteriormente en include.php y que es el directorio “<span style="text-decoration: underline;">templates</span>” en este caso coge un archivo llamado hola.tpl y que debe estar ubicado en C://wamp/www/trabajo/templates/hola.tpl el cual crearemos enseguida.<br />
- Por ultimo cuando entramos desde el navegador a <a href="http://localhost/trabajo/index.php">http://localhost/trabajo/index.php</a> el navegador NO lee lo que hay por dentro de la clase, si no que lee la línea donde se incluye el include.php y luego salta hasta el final de la definición de la clase, y lee la línea donde creamos un nuevo objeto tipo index.php <span style="text-decoration: underline;">$call = new index();</span> y seguidamente llama la función display y ejecuta lo que hay allí dentro (mostrando finalmente lo que hay dentro de hola.tpl)</p>
<p><strong>6)</strong> Creamos el archivo hola.tpl en la ubicación C://wamp/www/trabajo/templates/hola.tpl</p>
<pre><code>
&lt;html&gt;
&lt;title&gt;&lt;/title&gt;
&lt;body&gt;

hola

&lt;/body&gt;
&lt;/html&gt;
</code></pre>
<p>Este archivo simplemente muestra un mensaje de hola</p>
<p><strong>7)</strong> entramos al navegador a esta pagina <a href="http://localhost/trabajo/index.php">http://localhost/trabajo/index.php</a> y vemos que sale el aviso de hola.</p>
<p>Aunque parece algo muy bobo y un poco complicado, son los primeros pasos muy muy escensiales para una buena programación php, el resto será repetir este proceso varias veces e ir agregando cosas.</p>
<p><a href="http://www.danielgara.com/2011/06/wampserver-tutorial-2/">Volver al tutorial anterior <-</a><br />
<a href="http://www.danielgara.com/2011/06/phpmyadmin-creacion-de-una-base-de-datos-y-tabla-tutorial-4/">Ir al tutorial siguiente -></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.danielgara.com/2011/06/que-es-smarty-y-como-usarlo-un-ejemplo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Wampserver. Tutorial 2</title>
		<link>http://www.danielgara.com/2011/06/wampserver-tutorial-2/</link>
		<comments>http://www.danielgara.com/2011/06/wampserver-tutorial-2/#comments</comments>
		<pubDate>Thu, 23 Jun 2011 03:30:15 +0000</pubDate>
		<dc:creator>GARA</dc:creator>
				<category><![CDATA[Php]]></category>

		<guid isPermaLink="false">http://www.danielgara.com/?p=295</guid>
		<description><![CDATA[WampServer
Wampserver es el programa que nos permitirá hacer de nuestro computador un “servidor”, montar nuestros trabajos php y verlos en funcionamiento.
Se descarga desde aquí: http://www.wampserver.com/en/download.php
Una vez instalado deben tener en cuenta, todos los desarrollos php que se vayan a hacer deben ir en la carpeta c://wamp/www/ en ese directorio deberán crear una carpeta por cada [...]]]></description>
			<content:encoded><![CDATA[<p><strong>WampServer</strong></p>
<p>Wampserver es el programa que nos permitirá hacer de nuestro computador un “servidor”, montar nuestros trabajos php y verlos en funcionamiento.</p>
<p>Se descarga desde aquí: <a href="http://www.wampserver.com/en/download.php">http://www.wampserver.com/en/download.php</a></p>
<p>Una vez instalado deben tener en cuenta, todos los desarrollos php que se vayan a hacer deben ir en la carpeta c://wamp/www/ en ese directorio deberán crear una carpeta por cada pagina o desarrollo, y dentro de esa carpeta deberán montar todos los archivos de su desarrollo.</p>
<p>Es importante tener en cuenta que wampserver aveces presenta conflictos con skype, por lo cual se sugiere no abrir estos simultáneamente.</p>
<p>Otra cosa es que el wampserver es muy escandaloso con los warnings o alertas, por lo cual es muy importante hacer lo siguiente, dar clic en el icono de wampserver en la barra de inicio; luego pararse en la carpeta <span style="text-decoration: underline;">PHP</span> y dar clic en <span style="text-decoration: underline;">php.ini</span></p>
<p>Esto abrirá un archivo en bloc de notas, deben buscar la línea <strong>error_reporting = E_ALL</strong> y sustituirla por <strong>error_reporting = E_ALL &amp; ~E_NOTICE</strong></p>
<p>Lo ultimo es reiniciar el wampserver y ya estará listo para trabajar.</p>
<p><a href="http://www.danielgara.com/2011/06/programacion-php-orientada-a-objetos-con-separacion-por-capas-y-smarty/">Volver al tutorial 1 &lt;-</a><br />
<a href="http://www.danielgara.com/2011/06/que-es-smarty-y-como-usarlo-un-ejemplo/">Ir al tutorial 3 -&gt;</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.danielgara.com/2011/06/wampserver-tutorial-2/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

