<?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>zenphp :: blog &#187; AJAX</title>
	<atom:link href="http://blog.zenphp.es/category/ajax/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.zenphp.es</link>
	<description>Escribre tu aplicación como si fuera la última que escribieras</description>
	<lastBuildDate>Tue, 08 Mar 2011 12:24:07 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Aplicaciones de administración</title>
		<link>http://blog.zenphp.es/2008/04/29/aplicaciones-de-administracion/</link>
		<comments>http://blog.zenphp.es/2008/04/29/aplicaciones-de-administracion/#comments</comments>
		<pubDate>Tue, 29 Apr 2008 11:42:20 +0000</pubDate>
		<dc:creator>juaxix</dc:creator>
				<category><![CDATA[AJAX]]></category>
		<category><![CDATA[Funcionalidades]]></category>
		<category><![CDATA[PHP-Gtk]]></category>
		<category><![CDATA[Progreso]]></category>
		<category><![CDATA[Sistema Gestor Contenidos]]></category>

		<guid isPermaLink="false">http://blog.zenphp.es/?p=129</guid>
		<description><![CDATA[Un gestor de contenidos de una aplicación de administración, a lo largo de la historia de zenphp me he visto obligado a crear diversos tipos de administradores e ingeniármelas para hacerlo de forma tan general que pudiera compartir el código entre proyectos para no reescribir todo el código una y otra vez en función de [...]]]></description>
			<content:encoded><![CDATA[<p>Un gestor de contenidos de una aplicación de administración, a lo largo de la historia de zenphp me he visto obligado a crear diversos tipos de administradores e ingeniármelas para hacerlo de forma tan general que pudiera compartir el código entre proyectos para no reescribir todo el código una y otra vez en función de las necesidades de los usuarios finales.<br />
Para generar dichas aplicaciones, estoy diseñando un modelo general de aplicación web de administración con una serie de plantillas, el conjunto total de la aplicación con administración es el cartucho que carga el generador Gtk y es compilado por el generador POA de forma que obtenemos el esqueleto inicial de una aplicación en pocos segundos ,sobre la que vamos a trabajar, podemos cambiar las plantillas de administración pero realmente no es algo primordial ya que sólo con cambiar el logo para cada proyecto y un par de cosas más estará completado.<br />
Adjunto una captura de una de las aplicaciones web de administración del modelo de &#8220;Portal&#8221; que estoy preparando como cartucho para incluir en el repositorio SVN del proyecto.<br />
<a href="http://blog.zenphp.es/wp-content/uploads/2008/04/captura_admin.jpg"><img class="aligncenter size-medium wp-image-130" title="captura_admin" src="http://blog.zenphp.es/wp-content/uploads/2008/04/captura_admin-300x141.jpg" alt="" width="300" height="141" /></a></p>
<p>En la imagen se puede ver el visualizador HTML donde el único HTML que hay son pequeños mensajes de resultados, una pregunta, una confirmación, cosas simples, que han de estar mejor en funciones que lean una plantilla por defecto, asi está todo bien organizado. El resultado es una página de administración para mantener el contenido de una aplicación web cliente de forma que cualquier usuario pueda modificar cualquier parte de la misma.</p>
<span class="akst_link"><a href="http://blog.zenphp.es/?p=129&amp;akst_action=share-this"  title="E-mail this, post to del.icio.us, etc." id="akst_link_129"  class="akst_share_link">Compártelo</a>
</span>]]></content:encoded>
			<wfw:commentRss>http://blog.zenphp.es/2008/04/29/aplicaciones-de-administracion/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Primer &#8220;cartucho&#8221; para el generador de aplicaciones</title>
		<link>http://blog.zenphp.es/2008/03/07/primer-cartucho-para-el-generador-de-aplicaciones/</link>
		<comments>http://blog.zenphp.es/2008/03/07/primer-cartucho-para-el-generador-de-aplicaciones/#comments</comments>
		<pubDate>Fri, 07 Mar 2008 00:05:44 +0000</pubDate>
		<dc:creator>juaxix</dc:creator>
				<category><![CDATA[AJAX]]></category>
		<category><![CDATA[Documentación]]></category>
		<category><![CDATA[Funcionalidades]]></category>
		<category><![CDATA[Generadores]]></category>
		<category><![CDATA[]]></category>
		<category><![CDATA[aplicaciones]]></category>

		<guid isPermaLink="false">http://blog.zenphp.es/2008/03/07/primer-cartucho-para-el-generador-de-aplicaciones/</guid>
		<description><![CDATA[Esta vez he tomado la captura en Windows, el primer &#8220;cartucho&#8221; o dicho de otra forma: aplicación configurable donde poder incluir nuestro propio código a generar es el de un portal en AJAX. Se pretende hacer un portal, algo como este pero más sencillo y administrable desde una interfaz gráfica en PHP/GTK que use el [...]]]></description>
			<content:encoded><![CDATA[<p>Esta vez he tomado la captura en Windows, el primer &#8220;cartucho&#8221; o dicho de otra forma: aplicación configurable donde poder incluir nuestro propio código a generar es el de un portal en AJAX.</p>
<p><a href="http://picasaweb.google.es/juaxix/Zenphp/photo#5174783406213001234"><img src="http://lh5.google.es/juaxix/R9CGFzzpcBI/AAAAAAAAATY/_vsTvQgQGW8/s288/portal_cartucho.gif" border="0" height="307" width="306" /></a></p>
<p>Se pretende hacer un portal, algo como <a href="http://extjs.com/deploy/dev/examples/portal/portal.html">este</a> pero más sencillo y administrable desde una interfaz gráfica en PHP/GTK que use el sistema zenphp como framework de aplicaciones web usando el paradigma de programación orientada a aspectos.</p>
<span class="akst_link"><a href="http://blog.zenphp.es/?p=71&amp;akst_action=share-this"  title="E-mail this, post to del.icio.us, etc." id="akst_link_71"  class="akst_share_link">Compártelo</a>
</span>]]></content:encoded>
			<wfw:commentRss>http://blog.zenphp.es/2008/03/07/primer-cartucho-para-el-generador-de-aplicaciones/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Video tutoriales</title>
		<link>http://blog.zenphp.es/2008/02/27/video-tutoriales/</link>
		<comments>http://blog.zenphp.es/2008/02/27/video-tutoriales/#comments</comments>
		<pubDate>Wed, 27 Feb 2008 13:26:04 +0000</pubDate>
		<dc:creator>juaxix</dc:creator>
				<category><![CDATA[AJAX]]></category>
		<category><![CDATA[Documentación]]></category>
		<category><![CDATA[Noticias]]></category>
		<category><![CDATA[senseidav]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[video]]></category>
		<category><![CDATA[web 2.0]]></category>

		<guid isPermaLink="false">http://blog.zenphp.es/2008/02/27/video-tutoriales/</guid>
		<description><![CDATA[Hay una nueva sección de video tutoriales de zenphp en los documentos. https://forja.rediris.es/docman/?group_id=252 He intentado subir a la Forja el último vídeo de un tutorial de un sitio web 2,0  pero supongo que por que pesa 24MB no me ha salido bien, asi que lo he alojado en mi servidor zenphp.es. En dicho tutorial se [...]]]></description>
			<content:encoded><![CDATA[<p>Hay una nueva sección de video tutoriales de zenphp en los <a href="https://forja.rediris.es/docman/?group_id=252">documentos.</a></p>
<p>https://forja.rediris.es/docman/?group_id=252</p>
<p>He intentado subir a la Forja el último vídeo de un tutorial de un sitio web 2,0  pero supongo que por que pesa 24MB no me ha salido bien, asi que lo he alojado en mi servidor zenphp.es. En dicho tutorial se explica brevemente cómo crear un componente en AJAX para cargarlo en la web (muy por encima) asi como la parte AJAX de la administración de la web,se edita una sección, se crea una categoría y una obra, se añade una imagen y se coloca en la descripción un vídeo de Youtube.El resultado del tutorial está <a href="http://www.senseidav.com/index.php?ido=125">aquí</a>.</p>
<span class="akst_link"><a href="http://blog.zenphp.es/?p=67&amp;akst_action=share-this"  title="E-mail this, post to del.icio.us, etc." id="akst_link_67"  class="akst_share_link">Compártelo</a>
</span>]]></content:encoded>
			<wfw:commentRss>http://blog.zenphp.es/2008/02/27/video-tutoriales/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Comunicando tecnologías : PHP + mySQL + AJAX + PERL + DHTML</title>
		<link>http://blog.zenphp.es/2008/02/23/comunicando-tecnologias-php-mysql-ajax-perl-dhtml/</link>
		<comments>http://blog.zenphp.es/2008/02/23/comunicando-tecnologias-php-mysql-ajax-perl-dhtml/#comments</comments>
		<pubDate>Sat, 23 Feb 2008 20:32:18 +0000</pubDate>
		<dc:creator>juaxix</dc:creator>
				<category><![CDATA[AJAX]]></category>
		<category><![CDATA[Documentación]]></category>
		<category><![CDATA[Funcionalidades]]></category>
		<category><![CDATA[dhtml]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[internet explorer]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[perl]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[scripts]]></category>

		<guid isPermaLink="false">http://blog.zenphp.es/2008/02/23/comunicando-tecnologias-php-mysql-ajax-perl-dhtml/</guid>
		<description><![CDATA[Hoy se suponía que iba a estar recogiendo la aceituna pero ayer salimos para desquitarnos un poco a una fiesta de americanas xD asi que imposible varear nada ,entonces he picado un poco de artículo matinal por cierto habis visto el Wii Aceitunero? Cambiando de tema,&#8230;esto es un ¡Todo en uno! Mi reto ha sido [...]]]></description>
			<content:encoded><![CDATA[<p>Hoy se suponía que iba a estar recogiendo la aceituna pero ayer salimos para desquitarnos un poco a una fiesta de americanas xD asi que imposible varear nada ,entonces he picado un poco de artículo matinal <img src='http://blog.zenphp.es/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  por cierto habis visto el <a href="http://www.youtube.com/watch?v=4YpnPhdM0hY">Wii Aceitunero</a>?</p>
<p>Cambiando de tema,&#8230;esto es un ¡Todo en uno!</p>
<p>Mi reto ha sido hoy sincronizar las tecnologías PHP + mySQL + AJAX + PERL + DHTML en un sólo script.</p>
<p>La idea es:</p>
<ul>
<li>Una ventana con 2iframes, en uno se añaden los ficheros , se envían comprobando el estado con un script PERL/CGI su estado que es actualizado en la ventana en su iframe por medio de AJAX y al llegar a completarse dicha transferencia se envia una señal al segundo iframe que inserta una entrada en la BD con el nuevo fichero.</li>
</ul>
<ul>
<li> Todo ésto con comprobaciones de sesiones en PHP gracias a zenphp&#8230;y Funciona! pero <strike>bendito</strike> internet explorer, con navegadores como este podemos decir que el trabajo de programador web no está bien pagado ni mucho menos&#8230;porque me hace reescribir las aplicaciones 2 veces, &#8230;para el ie no es lo mismo :<br />
parent.document.getElementById(&#8216;frm_Ficheros&#8217;).contentDocument.getElementById(&#8216;frmSubeFicheros&#8217;);<br />
que:<br />
window.fileUpload.window.parent.frm_Ficheros.document<br />
lo mejor es que tengo el ie4linux y SI me dice donde está el error, y en windows no&#8230;es irónico ¿no?</li>
</ul>
<p>Bueno,como viene siendo habitual, una captura:<br />
<a href="http://picasaweb.google.es/juaxix/Zenphp/photo#5170829938177253730"><img src="http://lh3.google.es/juaxix/R8J6brsCoWI/AAAAAAAAARI/2G2aGbkpJHc/s288/zen_cgi_uploader.png" border="0" /></a></p>
<p style="text-align: center"> <span id="more-65"></span></p>
<p style="text-align: left" align="left"><a href="http://picasaweb.google.es/juaxix/Zenphp/photo#5170275110006989138"><img src="http://lh4.google.es/juaxix/R8CB0bsCoVI/AAAAAAAAAQ8/ekpn_h-3W2M/s400/captura_subidor_cgi.jpg" border="0" /></a></p>
<p style="text-align: left" align="left">Lo importante es configurar bien el directorio en PERL para que coincida con el de la sesión de PHP y hacer que la sincronización entre iframes funcione con javascript ,por eso éste método no es el ideal para subir ficheros ya que si no tenemos una buena conexión a Internet no podremos estar realizando actualizaciones de peticiones para comprobar el estado de la subida del fichero&#8230;</p>
<span class="akst_link"><a href="http://blog.zenphp.es/?p=65&amp;akst_action=share-this"  title="E-mail this, post to del.icio.us, etc." id="akst_link_65"  class="akst_share_link">Compártelo</a>
</span>]]></content:encoded>
			<wfw:commentRss>http://blog.zenphp.es/2008/02/23/comunicando-tecnologias-php-mysql-ajax-perl-dhtml/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Perfeccionando los mecanismos de automatización</title>
		<link>http://blog.zenphp.es/2008/02/19/perfeccionando-los-mecanismos-de-automatizacion/</link>
		<comments>http://blog.zenphp.es/2008/02/19/perfeccionando-los-mecanismos-de-automatizacion/#comments</comments>
		<pubDate>Tue, 19 Feb 2008 08:37:15 +0000</pubDate>
		<dc:creator>juaxix</dc:creator>
				<category><![CDATA[AJAX]]></category>
		<category><![CDATA[Documentación]]></category>
		<category><![CDATA[Funcionalidades]]></category>
		<category><![CDATA[Progreso]]></category>
		<category><![CDATA[automatización]]></category>
		<category><![CDATA[formularios]]></category>
		<category><![CDATA[galería]]></category>
		<category><![CDATA[imágenes]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://blog.zenphp.es/2008/02/19/perfeccionando-los-mecanismos-de-automatizacion/</guid>
		<description><![CDATA[La meta del proyecto es generalizar todos los procesos de creación de una web para que sea más fácil empezar un proyecto de un sitio con todo lo que necesitemos gracias al uso de varias herramientas, la más nueva de ellas es el prototipo de generador con PHP/GTK zenphp, que se basa en la creación [...]]]></description>
			<content:encoded><![CDATA[<p>La <strike>meta</strike> del <strong>proyecto</strong> es <em>generalizar</em> <strike>todos</strike> los procesos de creación de una web para que sea más fácil empezar un proyecto de un sitio con todo lo que necesitemos gracias al uso de varias herramientas, la más nueva de ellas es el prototipo de <a href="https://forja.rediris.es/docman/view.php/252/479/zenphp_gtk.pdf" title="Abrir documento de diseño">generador con PHP/GTK zenphp</a>, que se basa en la creación de proyectos como el de la <a href="https://forja.rediris.es/docman/view.php/252/409/TutorialAZA.pdf" title="Abrir paper del proyecto" target="_blank">Asociación Zen de Andalucía</a> o el <a href="https://forja.rediris.es/docman/view.php/252/476/splat.pdf" title="Paper del proyecto Splatter" target="_blank">Proyecto Splatter</a>. He estado realizando algunas modificaciones para tenerlo todo a punto&#8230;</p>
<p>Nuevos cambios:<br />
- <a href="https://forja.rediris.es/websvn/wsvn/csl2-zenphp/trunk/zenphp/clases/clase_zen_controlador_modelo_datos.php?op=file&amp;rev=0&amp;sc=0" title="Ver el modelo de datos" target="_blank">modelo de datos</a><br />
- <a href="https://forja.rediris.es/websvn/wsvn/csl2-zenphp/trunk/zenphp/funciones/zen_ficheros.php?op=file&amp;rev=0&amp;sc=0" title="Ver funciones de ficheros" target="_blank">funciones de ficheros</a></p>
<p>Lo que podemos hacer ahora con los nuevos cambios es, un listado de imágenes como este:</p>
<p style="overflow: auto">&nbsp;</p>
<pre style="background: #f1f0f0 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial"><span style="color: #a65700">&lt;</span><span style="color: #400000; font-weight: bold">ul</span><span style="color: #a65700">&gt;</span>
  <span style="color: #a65700">&lt;</span><span style="color: #400000; font-weight: bold">li</span><span style="color: #a65700">&gt;</span><span style="color: #a65700">
      &lt;</span><span style="color: #400000; font-weight: bold">a</span><span style="color: #074726"> </span><span style="color: #074726">target</span><span style="color: #806030">=</span><span style="color: #e60000">"_blank"</span><span style="color: #074726"> </span><span style="color: #074726">href</span><span style="color: #806030">=</span><span style="color: #e60000">"/media/galerias/logo2.jpg"</span><span style="color: #a65700">&gt;
      </span><span style="color: #a65700"> &lt;</span><span style="color: #400000; font-weight: bold">img</span><span style="color: #074726"> </span><span style="color: #074726">width</span><span style="color: #806030">=</span><span style="color: #e60000">"23"</span><span style="color: #074726"> </span><span style="color: #074726">height</span><span style="color: #806030">=</span><span style="color: #e60000">"23"</span><span style="color: #074726"> </span><span style="color: #074726">border</span><span style="color: #806030">=</span><span style="color: #e60000">"0"</span><span style="color: #074726"> </span><span style="color: #074726">src</span><span style="color: #806030">=</span><span style="color: #e60000">"/media/galerias/logo2.jpg"</span><span style="color: #a65700">/&gt;
      </span><span style="color: #a65700">&lt;/</span><span style="color: #400000; font-weight: bold">a</span><span style="color: #a65700">&gt;</span><span style="color: #a65700">
      &lt;</span><span style="color: #400000; font-weight: bold">input</span><span style="color: #074726"> </span><span style="color: #074726">type</span><span style="color: #806030">=</span><span style="color: #e60000">"checkbox"</span><span style="color: #074726"> </span><span style="color: #074726">value</span><span style="color: #806030">=</span><span style="color: #e60000">"logo2.jpg"</span><span style="color: #074726"> </span><span style="color: #074726">name</span><span style="color: #806030">=</span><span style="color: #e60000">"borrar_imgs[]"</span><span style="color: #074726"> </span><span style="color: #074726">id</span><span style="color: #806030">=</span><span style="color: #e60000">"logo2.jpg"</span><span style="color: #a65700">/&gt;</span><span style="color: #a65700">
  &lt;/</span><span style="color: #400000; font-weight: bold">li</span><span style="color: #a65700">&gt;</span>
<span style="color: #a65700">  &lt;</span><span style="color: #400000; font-weight: bold">li</span><span style="color: #a65700">&gt;
     </span><span style="color: #a65700">&lt;</span><span style="color: #400000; font-weight: bold">a</span><span style="color: #074726"> </span><span style="color: #074726">target</span><span style="color: #806030">=</span><span style="color: #e60000">"_blank"</span><span style="color: #074726"> </span><span style="color: #074726">href</span><span style="color: #806030">=</span><span style="color: #e60000">"/media/galerias/logo3.jpg"</span><span style="color: #a65700">&gt;
      </span><span style="color: #a65700">&lt;</span><span style="color: #400000; font-weight: bold">img</span><span style="color: #074726"> </span><span style="color: #074726">width</span><span style="color: #806030">=</span><span style="color: #e60000">"23"</span><span style="color: #074726"> </span><span style="color: #074726">height</span><span style="color: #806030">=</span><span style="color: #e60000">"23"</span><span style="color: #074726"> </span><span style="color: #074726">border</span><span style="color: #806030">=</span><span style="color: #e60000">"0"</span><span style="color: #074726"> </span><span style="color: #074726">src</span><span style="color: #806030">=</span><span style="color: #e60000">"/media/galerias/logo3.jpg"</span><span style="color: #a65700">/&gt;</span><span style="color: #a65700">
     &lt;/</span><span style="color: #400000; font-weight: bold">a</span><span style="color: #a65700">&gt;
</span><span style="color: #a65700">     &lt;</span><span style="color: #400000; font-weight: bold">input</span><span style="color: #074726"> </span><span style="color: #074726">type</span><span style="color: #806030">=</span><span style="color: #e60000">"checkbox"</span><span style="color: #074726"> </span><span style="color: #074726">value</span><span style="color: #806030">=</span><span style="color: #e60000">"logo3.jpg"</span><span style="color: #074726"> </span><span style="color: #074726">name</span><span style="color: #806030">=</span><span style="color: #e60000">"borrar_imgs[]"</span><span style="color: #074726"> </span><span style="color: #074726">id</span><span style="color: #806030">=</span><span style="color: #e60000">"logo3.jpg"</span><span style="color: #a65700">/&gt;</span><span style="color: #a65700">
  &lt;/</span><span style="color: #400000; font-weight: bold">li</span><span style="color: #a65700">&gt;</span>
<span style="color: #a65700">&lt;/</span><span style="color: #400000; font-weight: bold">ul</span><span style="color: #a65700">&gt;</span></pre>
<p style="overflow: auto">asi se pueden ver/seleccionar para borrar, y ahora un mecanismo para añadirlas:</p>
<p style="overflow: auto">&nbsp;</p>
<pre style="background: #f1f0f0 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial"><span style="color: #a65700">&lt;</span><span style="color: #400000; font-weight: bold">div</span><span style="color: #074726"> </span><span style="color: #074726">id</span><span style="color: #806030">=</span><span style="color: #e60000">"imagenes"</span><span style="color: #a65700">&gt;</span>
 <span style="color: #a65700">&lt;</span><span style="color: #400000; font-weight: bold">input</span><span style="color: #074726"> </span><span style="color: #074726">name</span><span style="color: #806030">=</span><span style="color: #e60000">"imagenes[]"</span><span style="color: #074726"> </span><span style="color: #074726">id</span><span style="color: #806030">=</span><span style="color: #e60000">"imagen"</span><span style="color: #074726"> </span><span style="color: #074726">type</span><span style="color: #806030">=</span><span style="color: #e60000">"file"</span><span style="color: #a65700">&gt;</span><span style="color: #a65700">&lt;</span><span style="color: #400000; font-weight: bold">br</span><span style="color: #a65700">&gt;</span>
<span style="color: #a65700">&lt;/</span><span style="color: #400000; font-weight: bold">div</span><span style="color: #a65700">&gt;</span>
<span style="color: #a65700">&lt;</span><span style="color: #400000; font-weight: bold">a</span><span style="color: #074726"> </span><span style="color: #074726">href</span><span style="color: #806030">=</span><span style="color: #e60000">"javascript:anadirImagen();"</span><span style="color: #a65700">&gt;</span><span style="color: #a65700">&lt;</span><span style="color: #400000; font-weight: bold">img</span><span style="color: #074726"> </span><span style="color: #074726">src</span><span style="color: #806030">=</span><span style="color: #e60000">"img/boton_anadir.gif"</span><span style="color: #074726"> </span><span style="color: #074726">border</span><span style="color: #806030">=</span><span style="color: #e60000">"0"</span><span style="color: #a65700">&gt;</span><span style="color: #a65700">&lt;/</span><span style="color: #400000; font-weight: bold">a</span><span style="color: #a65700">&gt;</span></pre>
<p style="overflow: auto">Se añaden dinámicamente con una función JavaScript simple como esta:</p>
<p style="overflow: auto">&nbsp;</p>
<p style="overflow: auto">&nbsp;</p>
<pre style="background: #f6f8ff none repeat scroll 0% 50%; color: #000020; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial"><span style="color: #0057a6">&lt;</span><span style="color: #200080; font-weight: bold">script language="</span><span style="color: #1060b6">JavaScript</span><span style="color: #200080; font-weight: bold">" type="text/javascript"</span><span style="color: #0057a6">&gt;</span>
<span style="color: #200080; font-weight: bold">var</span> items <span style="color: #308080">=</span> <span style="color: #008c00">1</span><span style="color: #406080">;</span>
<span style="color: #200080; font-weight: bold">function</span> anadirImagen<span style="color: #308080">(</span><span style="color: #308080">)</span><span style="color: #406080">{</span>
 div<span style="color: #308080">=</span>document<span style="color: #308080">.</span>getElementById<span style="color: #308080">(</span><span style="color: #1060b6">"imagenes"</span><span style="color: #308080">)</span><span style="color: #406080">;</span>
 img<span style="color: #308080">=</span>document<span style="color: #308080">.</span>getElementById<span style="color: #308080">(</span><span style="color: #1060b6">"imagen"</span><span style="color: #308080">)</span><span style="color: #406080">;</span>
 items<span style="color: #308080">++</span><span style="color: #406080">;</span>
 itemnuevo<span style="color: #308080">=</span><span style="color: #1060b6">"&lt;b&gt;&lt;label for=</span><span style="color: #0f69ff">\"</span><span style="color: #1060b6">imagen"</span><span style="color: #308080">+</span>items<span style="color: #308080">+</span><span style="color: #1060b6">"</span><span style="color: #0f69ff">\"</span><span style="color: #1060b6">&gt; Nueva Imagen "</span> <span style="color: #308080">+</span> items <span style="color: #308080">+</span> <span style="color: #1060b6">"&lt;/label&gt;: &lt;/b&gt;"</span><span style="color: #406080">;</span>
 itemnuevo<span style="color: #308080">+=</span><span style="color: #1060b6">"&lt;input type=</span><span style="color: #0f69ff">\"</span><span style="color: #1060b6">file</span><span style="color: #0f69ff">\"</span><span style="color: #1060b6"> id=</span><span style="color: #0f69ff">\"</span><span style="color: #1060b6">imagen"</span><span style="color: #308080">+</span>items<span style="color: #308080">+</span><span style="color: #1060b6">"</span><span style="color: #0f69ff">\"</span><span style="color: #1060b6"> name=</span><span style="color: #0f69ff">\"</span><span style="color: #1060b6">imagenes[]"</span><span style="color: #406080">;</span>
 itemnuevo<span style="color: #308080">+=</span><span style="color: #1060b6">"</span><span style="color: #0f69ff">\"</span><span style="color: #1060b6">&gt;&lt;br&gt;"</span><span style="color: #406080">;</span>
 nodonuevo<span style="color: #308080">=</span>document<span style="color: #308080">.</span>createElement<span style="color: #308080">(</span><span style="color: #1060b6">"span"</span><span style="color: #308080">)</span><span style="color: #406080">;</span>
 nodonuevo<span style="color: #308080">.</span>innerHTML<span style="color: #308080">=</span>itemnuevo<span style="color: #406080">;</span>
 div<span style="color: #308080">.</span>insertBefore<span style="color: #308080">(</span>nodonuevo<span style="color: #308080">,</span>img<span style="color: #308080">)</span><span style="color: #406080">;</span>
<span style="color: #406080">}</span>
<span style="color: #0057a6">&lt;/</span><span style="color: #200080; font-weight: bold">script</span><span style="color: #0057a6">&gt;</span></pre>
<p style="overflow: auto"> y ahora, lo único que queda es la comunicación con PHP (todo el trabajo ha estado en diseñar el formulario y el JS <img src='http://blog.zenphp.es/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p style="overflow: auto">&nbsp;</p>
<pre style="background: #ffffff none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial"><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #7f0055; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">&lt;?php</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial"></span>
<span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000084; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; font-weight: bold">function</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial"> guardar_imagenes</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">(</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">$actual</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">)</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">{</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial"></span>
<span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">        </span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">$errores</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial"> </span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">=</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial"> </span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #0000ff; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">""</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">;</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial"></span>
<span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">        zen___carga_funciones</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">(</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #0000ff; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">'zen_ficheros'</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">)</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">;</span>
<span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial"></span>
<span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">        </span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000084; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; font-weight: bold">if</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial"> </span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">(</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000084; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; font-weight: bold">is_array</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">(</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">$_REQUEST</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">[</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #0000ff; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">'borrar_imgs'</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">]</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">)</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">)</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial"></span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #808080; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">//se marcó alguna imagen para borrar?</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial"></span>
<span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">         </span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">$actual</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial"> </span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">=</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial"> </span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000084; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; font-weight: bold">array_diff</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">(</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">$actual</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">,</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">$_REQUEST</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">[</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #0000ff; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">'borrar_imgs'</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">]</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">)</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">;</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial"></span>
<span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">        </span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">$array</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial"> </span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">=</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial"> zen</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">_</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">serializar</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">(</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000084; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; font-weight: bold">array_merge</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">(</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">$actual</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">,</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">zen_guardarFicheros</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">(</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #0000ff; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">"imagenes"</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">,</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">ZF_DIR_PPAL</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">.</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #0000ff; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">'media/galerias/'</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">,</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">$errores</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">)</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">)</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">)</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">;</span>
<span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial"></span>
<span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">        </span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000084; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; font-weight: bold">if</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial"> </span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">(</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">!</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000084; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; font-weight: bold">empty</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">(</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">$errores</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">)</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">)</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial"> </span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">{</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial"></span>
<span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">            </span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000084; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; font-weight: bold">echo</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial"> </span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">$errores</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">;</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial"></span>
<span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">            </span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000084; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; font-weight: bold">return</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial"> zen_serializar</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">(</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">$actual</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">)</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">;</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial"> </span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #808080; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">//dejar los datos como estaban</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial"></span>
<span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">        </span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">}</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial"> </span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000084; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; font-weight: bold">else</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial"> </span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">{</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial"></span>
<span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">            </span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000084; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; font-weight: bold">return</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial"> </span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">$array</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">;</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial"></span>
<span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">        </span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">}</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial"></span>
<span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">    </span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">}</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial"></span>
<span style="background: #ffffe8 none repeat scroll 0% 50%; color: #7f0055; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">?&gt;</span></pre>
<p>El parámetro $actual son los datos que tenia, para que no se repitan, entonces podemos obetenerlos de la siguiente forma:</p>
<p style="overflow: auto">&nbsp;</p>
<pre style="background: #ffffff none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial"><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #7f0055; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">&lt;?php</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial"></span>
<span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">$_REQUEST</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">[</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #0000ff; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">'listado'</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">]</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial"> </span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">=</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial"> </span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial"></span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial"></span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">guardar_imagenes</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">(</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">
 zen_deserializar</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">(</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">$</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000084; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; font-weight: bold">aplicacion</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">-</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">&gt;</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000084; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; font-weight: bold">bd</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">-</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">&gt;</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">seleccion_unica</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">(</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #0000ff; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">"listado from galerias where idg="</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">.</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000084; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; font-weight: bold">intval</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">(</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">$_REQUEST</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">[</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #0000ff; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">'idg'</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">]</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">)</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">)</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">)</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">
)</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">;</span><span style="background: #ffffe8 none repeat scroll 0% 50%; color: #000000; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial"></span>
<span style="background: #ffffe8 none repeat scroll 0% 50%; color: #7f0055; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial">?&gt;</span></pre>
<span class="akst_link"><a href="http://blog.zenphp.es/?p=58&amp;akst_action=share-this"  title="E-mail this, post to del.icio.us, etc." id="akst_link_58"  class="akst_share_link">Compártelo</a>
</span>]]></content:encoded>
			<wfw:commentRss>http://blog.zenphp.es/2008/02/19/perfeccionando-los-mecanismos-de-automatizacion/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Documentos sobre eficiencia</title>
		<link>http://blog.zenphp.es/2008/02/08/documentos-sobre-eficiencia/</link>
		<comments>http://blog.zenphp.es/2008/02/08/documentos-sobre-eficiencia/#comments</comments>
		<pubDate>Fri, 08 Feb 2008 22:52:23 +0000</pubDate>
		<dc:creator>juaxix</dc:creator>
				<category><![CDATA[AJAX]]></category>
		<category><![CDATA[Documentación]]></category>
		<category><![CDATA[Funcionalidades]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Progreso]]></category>
		<category><![CDATA[Zen]]></category>
		<category><![CDATA[eficiencia]]></category>
		<category><![CDATA[optimización]]></category>

		<guid isPermaLink="false">http://blog.zenphp.es/2008/02/08/documentos-sobre-eficiencia/</guid>
		<description><![CDATA[Las optimizaciones me apasionan, es por eso que he creado un nuevo documento de eficiencia con zenphp: https://forja.rediris.es/docman/view.php/252/470/optimizacion_web.pdf Explica las técnicas que usa el framework tanto automática como manualmente y cómo podemos mejorar la eficiencia para obtener un sobresaliente. XD P.D.: Bueno y no se si os habréis dado cuenta que en la misma columna [...]]]></description>
			<content:encoded><![CDATA[<p>Las optimizaciones me apasionan, es por eso que he creado un nuevo documento de eficiencia con zenphp:<br />
<a href="https://forja.rediris.es/docman/view.php/252/470/optimizacion_web.pdf" target="_new">https://forja.rediris.es/docman/view.php/252/470/optimizacion_web.pdf</a><br />
Explica las técnicas que usa el framework tanto automática como manualmente y cómo podemos mejorar la eficiencia para obtener un sobresaliente. XD</p>
<p>P.D.: Bueno y no se si os habréis dado cuenta que en la misma columna del blog del selector de temas he puesto un RSS de poemas zen <img src='http://blog.zenphp.es/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Saludos</p>
<span class="akst_link"><a href="http://blog.zenphp.es/?p=51&amp;akst_action=share-this"  title="E-mail this, post to del.icio.us, etc." id="akst_link_51"  class="akst_share_link">Compártelo</a>
</span>]]></content:encoded>
			<wfw:commentRss>http://blog.zenphp.es/2008/02/08/documentos-sobre-eficiencia/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Comprobando la regla 90/10 en PHP</title>
		<link>http://blog.zenphp.es/2008/02/03/comprobando-la-regla-9010-en-una-aplicacion-php-post-1/</link>
		<comments>http://blog.zenphp.es/2008/02/03/comprobando-la-regla-9010-en-una-aplicacion-php-post-1/#comments</comments>
		<pubDate>Sun, 03 Feb 2008 18:18:59 +0000</pubDate>
		<dc:creator>juaxix</dc:creator>
				<category><![CDATA[AJAX]]></category>
		<category><![CDATA[Documentación]]></category>
		<category><![CDATA[Funcionalidades]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Progreso]]></category>
		<category><![CDATA[90/10]]></category>
		<category><![CDATA[aplicación]]></category>
		<category><![CDATA[framework español]]></category>
		<category><![CDATA[generador de aplicaciones]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[software php]]></category>

		<guid isPermaLink="false">http://blog.zenphp.es/2008/02/03/comprobando-la-regla-9010-en-una-aplicacion-php-post-1/</guid>
		<description><![CDATA[¿90/10? Este post es para iniciar el estudio de comprobación de si, realmente se cumple el que una aplicación escrita en PHP siga la regla 90/10 del software, la cual nos dice que un programa pasa el 90% de su tiempo de ejecución en tan sólo un 10% de su código. Tomando los resultados de [...]]]></description>
			<content:encoded><![CDATA[<p><strong>¿90/10?</strong></p>
<p>Este post es para <em>iniciar</em> el estudio de <strong>comprobación</strong> de si, realmente se cumple el que una aplicación escrita en PHP siga la regla <em>90/10</em> del software, la cual nos dice que un programa pasa el <strong>90%</strong> de su tiempo de ejecución en tan sólo un <strong>10%</strong> de su código.</p>
<p>Tomando los resultados de un &#8220;<strong>profiler</strong>&#8221; PHP y analizadolos podemos ver dónde <em>&#8220;vive&#8221;</em> el código de nuestra aplicación y de este modo realizar las optimizaciones necesarias&#8230;Basándonos en el pasado reciente de un script, podemos predecir con una predicción razonable qué instrucciones y datos utilizará en un futuro próximo, para ello podemos usar la caché de la clase zen_cache ,el sistema de memoria de System V con las llamadas de PHP, guardar datos de consultas en una sesión, etc.</p>
<p>Recordemos que existen dos tipos de localidad<br />
<em>LOCALIDAD ESPACIAL</em><br />
d(t) + k = d(t+n) con n y k pequeños<br />
“Si se referencia un elemento, los elementos cercanos a él tenderán a ser referenciados pronto”.<br />
Es decir, si estamos accediendo a un array, seguramente volvamos a acceder pronto a él, no tiene sentido hacer un array muy grande, deberíamos optimizar el código para no usar arrays más grandes que uno bidimensional&#8230;</p>
<p>“Las direcciones de memoria que se están utilizando suelen ser contiguas”.<br />
Por eso, es mejor utilizar<br />
JUSTIFICACIÓN: Los datos relacionados se almacenan juntos.<br />
Las instrucciones se ejecutan secuencialmente. k = n = 1<br />
<em>LOCALIDAD TEMPORAL</em><br />
d(t) = d(τ+n) con n pequeño<br />
“Si se referencia un elemento, tenderá a ser referenciados pronto”.<br />
“La información que se usará en un futuro próximo es aproximadamente la misma que se está usando actualmente”.</p>
<p>Para diseñar un sistema óptimo se realizan todas las posibles configuraciones en ficheros .XML que definan el comportamiento para cada parte independientemente, por ejemplo, si quiero disponer de un modelo de datos de noticias con una caché que se actualice sólo, creando un fichero .XML y a la hora de usar el zen_generador, para obtener nuestra aplicación de noticias, añadiré una propiedad para que se inserte una clase zen_cache y su configuración es:</p>
<ul>
<li>que se actualice siempre que se añada/modifique/borre una noticia (o se fuerce a ello)</li>
<li>que genere los listados de noticias automáticamente y los guarde en un fichero .HTML que es mucho más rápido que generar todos los listados cada vez que se cargue el script de noticias&#8230;</li>
<li>que disponga de un administrador con soporte AJAX y un cliente básico</li>
<li>que use el tema por defecto de zenphp para mostrar la información de los modelos&#8230;</li>
</ul>
<p>Bueno,resumidamente, es lo que estoy haciendo en estos momentos&#8230;</p>
<span class="akst_link"><a href="http://blog.zenphp.es/?p=48&amp;akst_action=share-this"  title="E-mail this, post to del.icio.us, etc." id="akst_link_48"  class="akst_share_link">Compártelo</a>
</span>]]></content:encoded>
			<wfw:commentRss>http://blog.zenphp.es/2008/02/03/comprobando-la-regla-9010-en-una-aplicacion-php-post-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Incrustar Efectos Prototype en los atributos de un enlace</title>
		<link>http://blog.zenphp.es/2008/02/01/incrustar-efectos-prototype-en-los-atributos-de-un-enlace/</link>
		<comments>http://blog.zenphp.es/2008/02/01/incrustar-efectos-prototype-en-los-atributos-de-un-enlace/#comments</comments>
		<pubDate>Fri, 01 Feb 2008 10:45:26 +0000</pubDate>
		<dc:creator>juaxix</dc:creator>
				<category><![CDATA[AJAX]]></category>
		<category><![CDATA[Documentación]]></category>
		<category><![CDATA[Funcionalidades]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[efectos]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[prototype]]></category>
		<category><![CDATA[zen_ajax]]></category>

		<guid isPermaLink="false">http://blog.zenphp.es/2008/02/01/incrustar-efectos-prototype-en-los-atributos-de-un-enlace/</guid>
		<description><![CDATA[En zenphp gracias a la macro zen_ajax.js podemos añadir efectos simplemente con un atributo, el resto es automático. Para ello ponemos nuestro enlace como es normal con &#60;a href=&#8221;/direccion_al_script_ajax.php/&#8221; ajax=&#8221;1&#8243; animacion_carga=&#8221;slideDown&#8221; animacion_descarga=&#8221;slideUp&#8221; division=&#8221;contenido&#8221;&#62;Enlace AJAX&#60;/a&#62; Y lo que hará el motor será , convertir el enlace en un enlace ajax que se cargará por el método [...]]]></description>
			<content:encoded><![CDATA[<p>En <strong>zenphp </strong><strike>gracias </strike>a la macro <a href="https://forja.rediris.es/plugins/scmsvn/viewcvs.php/trunk/zenphp/contenido/macros/zen_ajax.js?root=csl2-zenphp&amp;view=markup" title="Ver el fichero" target="_blank"><em>zen_ajax.js</em></a> podemos añadir <strong>efectos </strong>simplemente con un <strong>atributo</strong>, el resto es <strike>automático</strike>.<br />
Para ello ponemos nuestro enlace como es normal con<br />
&lt;a href=&#8221;/direccion_al_script_ajax.php/&#8221; <strong>ajax</strong>=&#8221;1&#8243; <strong>animacion_carga</strong>=&#8221;slideDown&#8221; <strong>animacion_descarga</strong>=&#8221;slideUp&#8221; <strong>division</strong>=&#8221;contenido&#8221;&gt;Enlace AJAX&lt;/a&gt;</p>
<p>Y lo que hará el motor será , convertir el enlace en un enlace ajax que se cargará por el método POST en segundo plano mientras se aplica el efecto de &#8220;correr hacia arriba&#8221; la división &#8220;contenido&#8221; ,al recuperar el contenido del fichero php del enlace se coloca dentro de la misma división y se aplica el efecto de &#8220;correr hacia abajo&#8221; mostrándose <img src='http://blog.zenphp.es/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p><strong>Efectos disponibles</strong>: highlight, fade, grow, shrink, fold, blindUp, blindDown, slideUp, slideDown, pulsate, shake, puff, squish, switchOff.</p>
<span class="akst_link"><a href="http://blog.zenphp.es/?p=46&amp;akst_action=share-this"  title="E-mail this, post to del.icio.us, etc." id="akst_link_46"  class="akst_share_link">Compártelo</a>
</span>]]></content:encoded>
			<wfw:commentRss>http://blog.zenphp.es/2008/02/01/incrustar-efectos-prototype-en-los-atributos-de-un-enlace/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>AJAX :: Administración por defecto de los modelos</title>
		<link>http://blog.zenphp.es/2008/01/29/ajax-administracion-por-defecto-de-los-modelos/</link>
		<comments>http://blog.zenphp.es/2008/01/29/ajax-administracion-por-defecto-de-los-modelos/#comments</comments>
		<pubDate>Tue, 29 Jan 2008 10:30:50 +0000</pubDate>
		<dc:creator>juaxix</dc:creator>
				<category><![CDATA[AJAX]]></category>
		<category><![CDATA[Funcionalidades]]></category>
		<category><![CDATA[Progreso]]></category>
		<category><![CDATA[automatización]]></category>
		<category><![CDATA[contacto]]></category>
		<category><![CDATA[validaciones]]></category>

		<guid isPermaLink="false">http://blog.zenphp.es/2008/01/29/ajax-administracion-por-defecto-de-los-modelos/</guid>
		<description><![CDATA[Me pareció muy simple hacer sólo una clase scaffolding así que además le añadí la posibilidad de la complejidad de los modelos tipo Django, (aunque sin llaves externas, por ahora) y además le puse un tema por defecto para mostrar la información de los modelo con un presentador por defecto en HTML, y ahora un [...]]]></description>
			<content:encoded><![CDATA[<p>Me pareció muy simple hacer sólo una clase scaffolding así que además le añadí la posibilidad de la complejidad de los modelos tipo Django, (aunque sin llaves externas, por ahora) y además le puse un tema por defecto para mostrar la información de los modelo con un presentador por defecto en HTML,  y ahora un administrador con AJAX.</p>
<table style="width: auto">
<tr>
<td><a href="http://picasaweb.google.es/juaxix/Blogging/photo#5160659146754740930"><img src="http://lh4.google.es/juaxix/R55YJtEv0sI/AAAAAAAAAGY/sem7JUg4C14/s400/Fotiko%28377%29.jpg" /></a></td>
</tr>
<tr>
<td style="font-family: arial,sans-serif; font-size: 11px; text-align: right">Las brujas <img src='http://blog.zenphp.es/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />  magia AJAX? De <a href="http://picasaweb.google.es/juaxix/Blogging">Blogging</a></td>
</tr>
</table>
<p>Para explicarlo, ¿qué mejor que una imagen?</p>
<p><a href="http://picasaweb.google.es/juaxix/Zenphp/photo#5159474410090910354"><img src="http://lh5.google.es/juaxix/R5oio9Ev0pI/AAAAAAAAAFo/TIOr8cMg6D8/s400/validaciones_ajax.gif" /></a></p>
<p>En la imagen podemos ver un ejemplo de visualizador de contenido con soporte <strong>AJAX</strong>, la función contactar (que es llamada por el <em><a href="https://forja.rediris.es/websvn/wsvn/csl2-zenphp/trunk/zenphp/clases/clase_zen_enrutador.php?op=file&amp;rev=0&amp;sc=0">enrutador</a> </em>al invocar la <em><a href="https://forja.rediris.es/websvn/wsvn/csl2-zenphp/trunk/index.php?op=file&amp;rev=0&amp;sc=0">delegación</a> </em>por el <a href="https://forja.rediris.es/websvn/wsvn/csl2-zenphp/trunk/zenphp/config/zen_login.php?op=file&amp;rev=0&amp;sc=0">usuario</a>) vincula la variable <strong><font style="color: orange">$c</font> </strong>con el <a href="https://forja.rediris.es/websvn/wsvn/csl2-zenphp/trunk/zenphp/clases/clase_zen.php?op=file&amp;rev=0&amp;sc=0"></a><em>contenido </em>de la página, que está en el padre que es la <a href="https://forja.rediris.es/websvn/wsvn/csl2-zenphp/trunk/zenphp/clases/clase_zen_aplicacion.php?op=file&amp;rev=0&amp;sc=0">aplicación web</a>. Dicha variable es de tipo <em>array </em>y se utiliza para reemplazar las <strong>#etiquetas#</strong> de la plantilla <strong>HTML </strong>usada para mostrar el <em>contenido </em>final, las <a href="https://forja.rediris.es/websvn/wsvn/csl2-zenphp/trunk/media/idiomas/?rev=0&amp;sc=0">constantes de idiomas</a> se definen en un fichero PHP que es cargado en el <a href="https://forja.rediris.es/websvn/wsvn/csl2-zenphp/trunk/zenphp/clases/clase_zen_html.php?op=file&amp;rev=0&amp;sc=0">constructor del visualizador</a> donde reside esta función [en realidad donde reside es una clase heredada de esta] , que tiene una <a href="https://forja.rediris.es/websvn/wsvn/csl2-zenphp/trunk/zenphp/clases/clase_zen_plantilla.php?op=file&amp;rev=0&amp;sc=0">clase plantilla</a> asociada para realizar operaciones de lectura de ficheros HTML y procesamiento de reemplazos simples y rápidos con str_replace en lugar de preg_match.<br />
En el código se utiliza la carga de funciones, ésto quizás pueda resultar molesto pero es por temas de eficiencia el que se cargen las distintas partes de zenphp sólo cuando las necesitemos, es decir, cargaremos las funciones HTML para aplicar una validación a un formulario, además podemos insertar el código en JavaScript para añadir las validaciones que creamos oportunas.<br />
Por último se hace una llamada a <strong><font style="color: orange">$this</font>-&gt;mostrar_web(</strong><strong><font style="color: orange">$c</font></strong><strong>);</strong> que lo que hace es tomar el array de contenido y reemplazar todas sus etiquetas para finalmente mostrar la salida por pantalla.</p>
<p>Las validaciones son automáticas, sólo necesitamos añadir el fichero de script y definir qué campos son los que necesitamos validar&#8230;</p>
<span class="akst_link"><a href="http://blog.zenphp.es/?p=41&amp;akst_action=share-this"  title="E-mail this, post to del.icio.us, etc." id="akst_link_41"  class="akst_share_link">Compártelo</a>
</span>]]></content:encoded>
			<wfw:commentRss>http://blog.zenphp.es/2008/01/29/ajax-administracion-por-defecto-de-los-modelos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Extendiendo POA a AJAX : El zen de zen_ajax</title>
		<link>http://blog.zenphp.es/2008/01/25/extendiendo-poa-a-ajax-el-zen-de-zen_ajax/</link>
		<comments>http://blog.zenphp.es/2008/01/25/extendiendo-poa-a-ajax-el-zen-de-zen_ajax/#comments</comments>
		<pubDate>Fri, 25 Jan 2008 10:34:17 +0000</pubDate>
		<dc:creator>juaxix</dc:creator>
				<category><![CDATA[AJAX]]></category>
		<category><![CDATA[Funcionalidades]]></category>
		<category><![CDATA[]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[zen_ajax]]></category>

		<guid isPermaLink="false">http://blog.zenphp.es/2008/01/25/extendiendo-poa-a-ajax-el-zen-de-zen_ajax/</guid>
		<description><![CDATA[¿Programación Orientada a Aspectos sobre AJAX? Propongo la siguiente metáfora: en un sistema AJAX las peticiones son como en una bici los piñones&#8230;si me monto en la bicicleta y le doy a los pedales pero no anda es que hay un piñón que hace que se salga la cadena, se trata de encontrar ese pequeño [...]]]></description>
			<content:encoded><![CDATA[<p>¿Programación Orientada a Aspectos sobre AJAX?<br />
Propongo la siguiente metáfora: en un sistema AJAX las peticiones son como en una bici los piñones&#8230;si me monto en la bicicleta y le doy a los pedales pero no anda es que hay un piñón que hace que se salga la cadena, se trata de encontrar ese pequeño piñón o piñones que no están bien metidos en la cadena para que podamos disfrutar del paseo.<br />
El AJAX de zenphp utiliza mecanismos para que se pueda asociar partes de un fichero HTML a llamadas AJAX y, de forma automática los eventos &#8220;onclick&#8221; de los enlaces &lt;a&gt; serán reemplazados por la llamada AJAX de Prototype, que por cierto, usa una versión muy ligera con todo lo necesario para que sea más eficiente.</p>
<p>Trae una gestión de detección de errores que hace que si no se puede mostrar una web con javascript o el navegador no soporta AJAX se carga el enlace normal.</p>
<p>Una captura de zen_ajax en funcionamiento:<br />
<a href="http://picasaweb.google.es/juaxix/Zenphp/photo#5159362212660236930"><img src="http://lh5.google.es/juaxix/R5m8mNEv0oI/AAAAAAAAAFg/Cn_mNwYYYNU/s400/ajax_poa.gif" /></a></p>
<p>Poco a poco, automáticamente, instantáneamente&#8230;</p>
<span class="akst_link"><a href="http://blog.zenphp.es/?p=39&amp;akst_action=share-this"  title="E-mail this, post to del.icio.us, etc." id="akst_link_39"  class="akst_share_link">Compártelo</a>
</span>]]></content:encoded>
			<wfw:commentRss>http://blog.zenphp.es/2008/01/25/extendiendo-poa-a-ajax-el-zen-de-zen_ajax/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

