<?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>Pedro Ventura | Blog jquery artículos jquery Encuentra manuales y tutoriales sobre jquery Ejemplos de código y trucos.
 </title>
	<atom:link href="http://www.pedroventura.com/blog_programacion/tag/jquery/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.pedroventura.com</link>
	<description>Portfolio Profesional y Blog</description>
	<lastBuildDate>Sat, 04 Feb 2012 10:50:33 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Jquery activar desactivar boton submit de formulario</title>
		<link>http://www.pedroventura.com/blog_programacion/javascript/jquery-activar-desactivar-boton-submit-de-formulario/</link>
		<comments>http://www.pedroventura.com/blog_programacion/javascript/jquery-activar-desactivar-boton-submit-de-formulario/#comments</comments>
		<pubDate>Sat, 18 Jun 2011 08:00:55 +0000</pubDate>
		<dc:creator>Pedro Ventura</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[jquery]]></category>

		<guid isPermaLink="false">http://www.pedroventura.com/?p=3133</guid>
		<description><![CDATA[Pongamos que tenemos un formulario con n campos y su correspondiente botón submit para enviarlo. Para hacer el formulario mas usable e intuitivo siempre está bien desactivar el botón submit de enviar, siempre y cuando el formulario no este completado. Importante también mostrando mensajes de ayuda, o tooltips que es fundamental. Vamos a poner que tenemos un formulario con una caja de texto y un botón submit. Lo que haremos será desactivar o deshabilitar el botón submit hasta que no haya algo escrito en la caja de texto. &#60;input type=&#34;text&#34; name=&#34;textField&#34; /&#62; &#60;input type=&#34;submit&#34; value=&#34;send&#34; /&#62; Para deshabilitar o desactivar el boton submit. Usaremos Jquery para llevar a cabo esta tarea y no usar Javascript a pelo. Seleccionamos todos los inputs que sean del tipo submit y le agregamos el atributo disabled=&#8221;disabled&#8221; $('input[type=&#34;submit&#34;]').attr('disabled','disabled'); Para habilitar o activar el botón submit y poder enviar el formulario. Ejecutamos el siguiente código. Que lo que hace es eliminar el atributo disabled que hemos agregado anteriormente. $('input[type=&#34;submit&#34;]').removeAttr('disabled'); Ejemplo completo. Cuando la caja de texto esta vacía el botón submit de desactiva. Cuando algo se escribe en la caja del formulario se muestra el boton submit activo. Si la caja de texto volviese a estar [...]


Related posts:<ol><li><a href='http://www.pedroventura.com/blog_programacion/javascript/comprobar-seleccionar-y-deseleccionar-todos-los-checkbox-de-un-formulario-con-jquery/' rel='bookmark' title='Comprobar, seleccionar y deseleccionar todos los checkbox de un formulario con jquery'>Comprobar, seleccionar y deseleccionar todos los checkbox de un formulario con jquery</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/javascript/cambiar-el-nombre-de-una-clase-css-con-javascript-y-con-jquery/' rel='bookmark' title='Cambiar el nombre de una clase css con javascript y con jquery'>Cambiar el nombre de una clase css con javascript y con jquery</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/cakephp/ajax-y-jquery-en-cakephp/' rel='bookmark' title='ajax y jquery en cakephp'>ajax y jquery en cakephp</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/social-media/anadir-el-boton-me-gusta-like-de-facebook-en-tu-blog-wordpress/' rel='bookmark' title='Añadir el boton &#8220;me gusta&#8221; &#8220;like&#8221; de Facebook en tu blog wordpress'>Añadir el boton &#8220;me gusta&#8221; &#8220;like&#8221; de Facebook en tu blog wordpress</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/social-media/registrar-eventos-del-boton-1-de-google-en-google-analytics/' rel='bookmark' title='Registrar eventos del botón +1 de Google en Google Analytics'>Registrar eventos del botón +1 de Google en Google Analytics</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Pongamos que tenemos un formulario con <em>n</em> campos y su correspondiente botón submit para enviarlo. Para hacer el formulario mas usable e intuitivo siempre está bien desactivar el botón submit de enviar, siempre y cuando el formulario no este completado. Importante también mostrando <a href="http://www.pedroventura.com/blog_programacion/javascript/mensajes-de-ayuda-o-tooltip-con-jquery/">mensajes de ayuda, o tooltips</a> que es fundamental.</p>
<p>Vamos a poner que tenemos un formulario con una caja de texto y un botón submit. Lo que haremos será desactivar o deshabilitar el botón submit hasta que no haya algo escrito en la caja de texto.</p>
<pre class="brush: xml; title: ;">
&lt;input type=&quot;text&quot; name=&quot;textField&quot; /&gt;
 &lt;input type=&quot;submit&quot; value=&quot;send&quot; /&gt;
</pre>
<p>Para deshabilitar o desactivar el boton submit. Usaremos Jquery para llevar a cabo esta tarea y no usar Javascript a pelo.<br />
Seleccionamos todos los inputs que sean del tipo submit y le agregamos el atributo disabled=&#8221;disabled&#8221;</p>
<pre class="brush: jscript; title: ;">
$('input[type=&quot;submit&quot;]').attr('disabled','disabled');
</pre>
<p>Para habilitar o activar el botón submit y poder enviar el formulario. Ejecutamos el siguiente código. Que lo que hace es eliminar el atributo disabled que hemos agregado anteriormente.</p>
<pre class="brush: jscript; title: ;">
$('input[type=&quot;submit&quot;]').removeAttr('disabled');
</pre>
<p>Ejemplo completo.<br />
Cuando la caja de texto esta vacía el botón submit de desactiva. Cuando algo se escribe en la caja del formulario se muestra el boton submit activo. Si la caja de texto volviese a estar vacía se tendría que volver a desactivar el botón submit otra vez.</p>
<pre class="brush: jscript; title: ;">
$(document).ready(function(){
     $('input[type=&quot;submit&quot;]').attr('disabled','disabled');
     $('input[type=&quot;text&quot;]').keypress(function(){
            if($(this).val() != ''){
               $('input[type=&quot;submit&quot;]').removeAttr('disabled');
            }
     });
 });
</pre>
<p class="listadoTagRelacionados">Tags de búsquedas:</p><p class="listadoTagRelacionados"> javascript habilitar botón al marcar un cjeckbox, jquery desactivar click, activar y desactivar botones con js, habilitar boton en jquery, html deshabilitar formulario y hacer un submit, jquery bloquear elementos dentro un div, jquery deshabilitar boton, jquery habilitar por id, jquery submit, deshabilitar un boton y habilitar uno deshabilitado javascript</p><!-- SEO SearchTerms Tagging 2 Plugin -->

<p>Related posts:<ol><li><a href='http://www.pedroventura.com/blog_programacion/javascript/comprobar-seleccionar-y-deseleccionar-todos-los-checkbox-de-un-formulario-con-jquery/' rel='bookmark' title='Comprobar, seleccionar y deseleccionar todos los checkbox de un formulario con jquery'>Comprobar, seleccionar y deseleccionar todos los checkbox de un formulario con jquery</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/javascript/cambiar-el-nombre-de-una-clase-css-con-javascript-y-con-jquery/' rel='bookmark' title='Cambiar el nombre de una clase css con javascript y con jquery'>Cambiar el nombre de una clase css con javascript y con jquery</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/cakephp/ajax-y-jquery-en-cakephp/' rel='bookmark' title='ajax y jquery en cakephp'>ajax y jquery en cakephp</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/social-media/anadir-el-boton-me-gusta-like-de-facebook-en-tu-blog-wordpress/' rel='bookmark' title='Añadir el boton &#8220;me gusta&#8221; &#8220;like&#8221; de Facebook en tu blog wordpress'>Añadir el boton &#8220;me gusta&#8221; &#8220;like&#8221; de Facebook en tu blog wordpress</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/social-media/registrar-eventos-del-boton-1-de-google-en-google-analytics/' rel='bookmark' title='Registrar eventos del botón +1 de Google en Google Analytics'>Registrar eventos del botón +1 de Google en Google Analytics</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.pedroventura.com/blog_programacion/javascript/jquery-activar-desactivar-boton-submit-de-formulario/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Mostrar elementos secuencialmente con Jquery</title>
		<link>http://www.pedroventura.com/blog_programacion/javascript/mostrar-elementos-secuencialmente-con-jquery/</link>
		<comments>http://www.pedroventura.com/blog_programacion/javascript/mostrar-elementos-secuencialmente-con-jquery/#comments</comments>
		<pubDate>Wed, 15 Jun 2011 08:56:01 +0000</pubDate>
		<dc:creator>Pedro Ventura</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[jquery]]></category>

		<guid isPermaLink="false">http://www.pedroventura.com/?p=3150</guid>
		<description><![CDATA[Desde el siguiente vídeo consejo, podremos aprender como hacer para mostrar los elementos de un listado que aparezcan secuencialmente mediante Jquery. Hay muchas formas de llevar a cabo esta tarea pero la que comenta el video tutorial es una de ellas y no esta del todo mal porque es bastante sencillo y no incluye mucho código. Se trata de una técnica para utilizar funciones recursivas. (function() { // Inicialmente ocultamos todos los elementos del listado var lis = $('li').hide(); // El desencadenante es en este caso un anchor, un enalce. Esto es muy generico pero se puede customizar, claro. $('a').click(function() { var i = 0; // Hacemos un FadeIn a cada elemento del listado cuando llega a los 200 ms, despues, // cuando ha terminado, recursivamente se llama a displayImages. // Cuando eq(i) hace referencia a un elemento que no existe, // jQuery devolverá un objeto vacio y no continuará haciendo fadeIn (function displayImages() { lis.eq(i++).fadeIn(200, displayImages); })(); }); })(); Lo que hace este uso efectivo es el hecho de que, cuando lis.eq (i) se refiere a un elemento que no existe en el conjunto, se devuelve un objeto vacio jQuery. Cuando esto sucede, los métodos posteriores de la cadena [...]


Related posts:<ol><li><a href='http://www.pedroventura.com/blog_programacion/javascript/comprobar-seleccionar-y-deseleccionar-todos-los-checkbox-de-un-formulario-con-jquery/' rel='bookmark' title='Comprobar, seleccionar y deseleccionar todos los checkbox de un formulario con jquery'>Comprobar, seleccionar y deseleccionar todos los checkbox de un formulario con jquery</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/javascript/centrar-un-div-con-jquery/' rel='bookmark' title='Centrar un div con jquery'>Centrar un div con jquery</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/javascript/cambiar-el-nombre-de-una-clase-css-con-javascript-y-con-jquery/' rel='bookmark' title='Cambiar el nombre de una clase css con javascript y con jquery'>Cambiar el nombre de una clase css con javascript y con jquery</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/javascript/mensajes-de-ayuda-o-tooltip-con-jquery/' rel='bookmark' title='mensajes de ayuda o tooltip con jquery'>mensajes de ayuda o tooltip con jquery</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/javascript/jquery-activar-desactivar-boton-submit-de-formulario/' rel='bookmark' title='Jquery activar desactivar boton submit de formulario'>Jquery activar desactivar boton submit de formulario</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Desde el siguiente vídeo consejo, podremos aprender como hacer para mostrar los elementos de un listado que aparezcan secuencialmente mediante Jquery. Hay muchas formas de llevar a cabo esta tarea pero la que comenta el video tutorial es una de ellas y no esta del todo mal porque es bastante sencillo y no incluye mucho código. Se trata de una técnica para utilizar funciones recursivas.</p>
<p><iframe width="560" height="349" src="http://www.youtube.com/embed/dHkZx-6GP_o" frameborder="0" allowfullscreen></iframe></p>
<pre class="brush: jscript; title: ;">
(function() {
   // Inicialmente ocultamos todos los elementos del listado
   var lis = $('li').hide();

   // El desencadenante es en este caso un anchor, un enalce. Esto es muy generico pero se puede customizar, claro.
   $('a').click(function() {
      var i = 0;

      // Hacemos un FadeIn a cada elemento del listado cuando llega a los 200 ms, despues,
      // cuando ha terminado, recursivamente se llama a displayImages.
      // Cuando eq(i) hace referencia a un elemento que no existe,
      // jQuery devolverá un objeto vacio y no continuará haciendo fadeIn
      (function displayImages() {
         lis.eq(i++).fadeIn(200, displayImages);
      })();
   });
})();
</pre>
<p>Lo que hace este uso efectivo es el hecho de que, cuando lis.eq (i) se refiere a un elemento que no existe en el conjunto, se devuelve un objeto vacio jQuery. Cuando esto sucede, los métodos posteriores de la cadena (fadeIn) nunca será llamados.</p>
<p>Fuente: <a href="http://net.tutsplus.com/tutorials/javascript-ajax/quick-tip-display-elements-sequentially-with-jquery/" rel="nofollow" target="_blank">http://net.tutsplus.com/</a></p>
<p class="listadoTagRelacionados">Tags de búsquedas:</p><p class="listadoTagRelacionados"> hacer lista de viseos con jquery</p><!-- SEO SearchTerms Tagging 2 Plugin -->

<p>Related posts:<ol><li><a href='http://www.pedroventura.com/blog_programacion/javascript/comprobar-seleccionar-y-deseleccionar-todos-los-checkbox-de-un-formulario-con-jquery/' rel='bookmark' title='Comprobar, seleccionar y deseleccionar todos los checkbox de un formulario con jquery'>Comprobar, seleccionar y deseleccionar todos los checkbox de un formulario con jquery</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/javascript/centrar-un-div-con-jquery/' rel='bookmark' title='Centrar un div con jquery'>Centrar un div con jquery</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/javascript/cambiar-el-nombre-de-una-clase-css-con-javascript-y-con-jquery/' rel='bookmark' title='Cambiar el nombre de una clase css con javascript y con jquery'>Cambiar el nombre de una clase css con javascript y con jquery</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/javascript/mensajes-de-ayuda-o-tooltip-con-jquery/' rel='bookmark' title='mensajes de ayuda o tooltip con jquery'>mensajes de ayuda o tooltip con jquery</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/javascript/jquery-activar-desactivar-boton-submit-de-formulario/' rel='bookmark' title='Jquery activar desactivar boton submit de formulario'>Jquery activar desactivar boton submit de formulario</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.pedroventura.com/blog_programacion/javascript/mostrar-elementos-secuencialmente-con-jquery/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Comprobar, seleccionar y deseleccionar todos los checkbox de un formulario con jquery</title>
		<link>http://www.pedroventura.com/blog_programacion/javascript/comprobar-seleccionar-y-deseleccionar-todos-los-checkbox-de-un-formulario-con-jquery/</link>
		<comments>http://www.pedroventura.com/blog_programacion/javascript/comprobar-seleccionar-y-deseleccionar-todos-los-checkbox-de-un-formulario-con-jquery/#comments</comments>
		<pubDate>Sun, 13 Feb 2011 15:56:19 +0000</pubDate>
		<dc:creator>Pedro Ventura</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[jquery]]></category>

		<guid isPermaLink="false">http://www.pedroventura.com/?p=2190</guid>
		<description><![CDATA[A continuación indico algunas funciones de Jquery muy útiles para trabajar con elementos de formularios. En este caso para trabajar con checkbox. Seleccionar/deseleccionar un checkbox: // Seleccionar un checkbox $('input[name=acheckbox]').attr('checked', true); // Deseleccionar un checkbox $('input[name=acheckbox]').attr('checked', false); Seleccionar/deseleccionar todos los checkbox: // Seleccionar todos los checkboxes $(&#34;input:checkbox&#34;).attr('checked', true); // Deseleccionar todos los checkboxes $(&#34;input:checkbox&#34;).attr('checked', false); A continuación una función para obtener la lista de checkboxes seleccionados. Se crea una función que extiende las propiedades de Jquery. Para todos los checkbox seleccionados se va guardando su valor en un array. Con este array se puede pasar a un ajax, a otra funcion jquery, o se puede hacer lo que cada uno desee en su lógica. También se puede hacer un alert() con el array para testear y comprobar los datos del mismo antes de continuar. jQuery.fn.getCheckboxValues = function(){ var values = []; var i = 0; this.each(function(){ values[i++] = $(this).val(); }); return values; } var arr = $(&#34;input:checked&#34;).getCheckboxValues(); Tags de búsquedas: checkbox marcar desmarcar todos, ajax comprobar checkbox, obtener datos vector checkbox nombre, obtener el valor de un checkbox jquery, pasar chekbox a array en php, pasar parametros con ajax jquery, pasar valores de checkboxes a arreglo con javascript, recoger valores [...]


Related posts:<ol><li><a href='http://www.pedroventura.com/blog_programacion/javascript/jquery-activar-desactivar-boton-submit-de-formulario/' rel='bookmark' title='Jquery activar desactivar boton submit de formulario'>Jquery activar desactivar boton submit de formulario</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/javascript/cambiar-el-nombre-de-una-clase-css-con-javascript-y-con-jquery/' rel='bookmark' title='Cambiar el nombre de una clase css con javascript y con jquery'>Cambiar el nombre de una clase css con javascript y con jquery</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/javascript/mostrar-elementos-secuencialmente-con-jquery/' rel='bookmark' title='Mostrar elementos secuencialmente con Jquery'>Mostrar elementos secuencialmente con Jquery</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/javascript/centrar-un-div-con-jquery/' rel='bookmark' title='Centrar un div con jquery'>Centrar un div con jquery</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/javascript/mensajes-de-ayuda-o-tooltip-con-jquery/' rel='bookmark' title='mensajes de ayuda o tooltip con jquery'>mensajes de ayuda o tooltip con jquery</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>A continuación indico algunas funciones de Jquery muy útiles para trabajar con elementos de formularios. En este caso para trabajar con checkbox.</p>
<p>Seleccionar/deseleccionar un checkbox:</p>
<pre class="brush: jscript; title: ;">
// Seleccionar un checkbox
$('input[name=acheckbox]').attr('checked', true);

// Deseleccionar un checkbox
$('input[name=acheckbox]').attr('checked', false);
</pre>
<p>Seleccionar/deseleccionar todos los checkbox:</p>
<pre class="brush: jscript; title: ;">
// Seleccionar todos los checkboxes
$(&quot;input:checkbox&quot;).attr('checked', true);

// Deseleccionar todos los checkboxes
$(&quot;input:checkbox&quot;).attr('checked', false);
</pre>
<p>A continuación una función para obtener la lista de checkboxes seleccionados.<br />
Se crea una función que extiende las propiedades de Jquery. Para todos los checkbox seleccionados se va guardando su valor en un array.<br />
Con este array se puede pasar a un ajax, a otra funcion jquery, o se puede hacer lo que cada uno desee en su lógica.<br />
También se puede hacer un alert() con el array para testear y comprobar los datos del mismo antes de continuar.</p>
<pre class="brush: jscript; title: ;">
jQuery.fn.getCheckboxValues = function(){
    var values = [];
    var i = 0;
    this.each(function(){
        values[i++] = $(this).val();
    });
    return values;
} 

var arr = $(&quot;input:checked&quot;).getCheckboxValues();
</pre>
<p class="listadoTagRelacionados">Tags de búsquedas:</p><p class="listadoTagRelacionados"> checkbox marcar desmarcar todos, ajax comprobar checkbox, obtener datos vector checkbox nombre, obtener el valor de un checkbox jquery, pasar chekbox a array en php, pasar parametros con ajax jquery, pasar valores de checkboxes a arreglo con javascript, recoger valores checkbox jquery, seleccionar checkbox javascript, seleccionar todos los tags con el mismo nombre en jquery</p><!-- SEO SearchTerms Tagging 2 Plugin -->

<p>Related posts:<ol><li><a href='http://www.pedroventura.com/blog_programacion/javascript/jquery-activar-desactivar-boton-submit-de-formulario/' rel='bookmark' title='Jquery activar desactivar boton submit de formulario'>Jquery activar desactivar boton submit de formulario</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/javascript/cambiar-el-nombre-de-una-clase-css-con-javascript-y-con-jquery/' rel='bookmark' title='Cambiar el nombre de una clase css con javascript y con jquery'>Cambiar el nombre de una clase css con javascript y con jquery</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/javascript/mostrar-elementos-secuencialmente-con-jquery/' rel='bookmark' title='Mostrar elementos secuencialmente con Jquery'>Mostrar elementos secuencialmente con Jquery</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/javascript/centrar-un-div-con-jquery/' rel='bookmark' title='Centrar un div con jquery'>Centrar un div con jquery</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/javascript/mensajes-de-ayuda-o-tooltip-con-jquery/' rel='bookmark' title='mensajes de ayuda o tooltip con jquery'>mensajes de ayuda o tooltip con jquery</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.pedroventura.com/blog_programacion/javascript/comprobar-seleccionar-y-deseleccionar-todos-los-checkbox-de-un-formulario-con-jquery/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Cakephp ajax start voting. Sistema de votaciones en ajax mediante estrellas</title>
		<link>http://www.pedroventura.com/blog_programacion/cakephp/cakephp-ajax-start-voting-sistema-de-votaciones-en-ajax-mediante-estrellas/</link>
		<comments>http://www.pedroventura.com/blog_programacion/cakephp/cakephp-ajax-start-voting-sistema-de-votaciones-en-ajax-mediante-estrellas/#comments</comments>
		<pubDate>Thu, 13 Jan 2011 00:24:35 +0000</pubDate>
		<dc:creator>Pedro Ventura</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[tutoriales]]></category>

		<guid isPermaLink="false">http://www.pedroventura.com/?p=1974</guid>
		<description><![CDATA[Hace mucho tiempo que he implementado en un site en cakephp, un sistema de votaciones con estrellas que funciona con ajax. Fue bastante complejo y me llevó un tiempo, ahora lo retomo para publicarlo y compartirlo. Inicialmente seguí las indicaciones de un articulo publicado en bakery.cakephp.org que al final se puede ver la fuente original. El sistema de votos por estrellas es ya muy conocido y lo tienen integrados muchos sites, pero meterlo en cakephp es un poco mas &#8220;laberíntico&#8221; porque hay muchos archivos que interfieren y en muchas capas de la lógica. A continuación indico los pasos que he seguido 1 ) Lo primero descargar el plugin. Tener en cuenta la versión de Cakephp que uséis. Aquí indico las dos versiones disponibles hasta el momento. 2) Extraer el plugin, incluir la carpeta rating en la carpeta de plugins en app/plugins 3) Copiar el archivo rating/config/plugin_rating.php a tu carpeta app en app/config/plugin_rating.php En este archivo se pueden especificar muchos detalles de configuración Si se quiere habilitar para que usuarios anónimos no logeaos puedan usar el sistema para votar habrá que tener la siguiente activa a true $config['Rating.guest'] = true; Otro punto interesante de la configuración del plugins es poder guardar [...]


Related posts:<ol><li><a href='http://www.pedroventura.com/blog_programacion/cakephp/ajax-y-jquery-en-cakephp/' rel='bookmark' title='ajax y jquery en cakephp'>ajax y jquery en cakephp</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/cakephp/usando-memcached-con-cakephp/' rel='bookmark' title='usando memcached con cakephp'>usando memcached con cakephp</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/cakephp/recortar-imagenes-en-cakephp-con-jquery/' rel='bookmark' title='recortar imagenes en cakephp con jquery.'>recortar imagenes en cakephp con jquery.</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/cakephp/cakephp-funcion-para-bloquear-ips-y-evitar-spam/' rel='bookmark' title='cakephp funcion para bloquear ips y evitar spam'>cakephp funcion para bloquear ips y evitar spam</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/javascript/autocomplementador-en-ajax/' rel='bookmark' title='Autocomplementador en AJAX'>Autocomplementador en AJAX</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Hace mucho tiempo que he implementado en un site en cakephp, un sistema de votaciones con estrellas que funciona con ajax.</p>
<p>Fue bastante complejo y me llevó un tiempo, ahora lo retomo para publicarlo y compartirlo. Inicialmente seguí las indicaciones de un articulo publicado en bakery.cakephp.org que al final se puede ver la fuente original.</p>
<p>El sistema de votos por estrellas es ya muy conocido y lo tienen integrados muchos sites, pero meterlo en cakephp es un poco mas &#8220;laberíntico&#8221; porque hay muchos archivos que interfieren y en muchas capas de la lógica.</p>
<p>A continuación indico los pasos que he seguido</p>
<p><strong>1 )</strong><br />
Lo primero descargar el plugin. Tener en cuenta la versión de Cakephp que uséis. Aquí indico las dos versiones disponibles hasta el momento.</p>
<p>
<img alt="zip" title="zip" class="download-icon" src="http://www.pedroventura.com/wp-content/plugins/download-monitor/img/filetype_icons/document-zipper.png" /><br /><a href="http://www.pedroventura.com/wp-content/plugins/download-monitor/download.php?id=11" title="Descargado 40 veces" rel="nofollow">Descargar Rating plugin v2.3 for CakePHP 1.2.zip</a> - Descargado 40 veces<br />
<br />
<img alt="zip" title="zip" class="download-icon" src="http://www.pedroventura.com/wp-content/plugins/download-monitor/img/filetype_icons/document-zipper.png" /><br /><a href="http://www.pedroventura.com/wp-content/plugins/download-monitor/download.php?id=10" title="Descargado 89 veces" rel="nofollow">Descargar Rating plugin v2.4 for CakePHP 1.3 .zip</a> - Descargado 89 veces<br />
<br />
<strong>2)</strong><br />
Extraer el plugin, incluir la carpeta rating en la carpeta de plugins en app/plugins</p>
<p><strong>3)</strong><br />
Copiar el archivo rating/config/plugin_rating.php a tu carpeta app en app/config/plugin_rating.php</p>
<p>En este archivo se pueden especificar muchos detalles de configuración</p>
<p>Si se quiere habilitar para que usuarios anónimos no logeaos puedan usar el sistema para votar habrá que tener la siguiente activa a true</p>
<pre class="brush: php; title: ;">
$config['Rating.guest'] = true;
</pre>
<p>Otro punto interesante de la configuración del plugins es poder guardar los resultados de cada voto en su modelo (tabla) correspondiente. Para ello tener en cuenta las siguientes variables.</p>
<pre class="brush: php; title: ;">
$config['Rating.saveToModel'] = true;
$config['Rating.modelAverageField'] = 'votos_media';
$config['Rating.modelVotesField'] = 'votos';
</pre>
<p>Vienen bien explicadas en el archivo, así como las sqls que habría que ejecutar para crear los campos necesarios en cada tabla. Pero serían así<br />
<code><br />
</code></p>
<pre class="brush: plain; title: ;">
ALTER TABLE [TABLA] ADD (votos_media decimal(3,1) unsigned default '0.0');
ALTER TABLE [TABLA] ADD (votos int(11) unsigned default '0');
</pre>
<p>Si esto diera algún problema, recordar borrar la cache de los modelos  en  app/tmp/cache/models.</p>
<p><strong>4)</strong><br />
Ejecutar las consultas que hay en el archivo install.sql para crear la tabla de ratings donde se guardarán todos los votos.</p>
<pre class="brush: plain; title: ;">
CREATE TABLE `ratings` (
 `id` int(11) unsigned NOT NULL auto_increment,
 `user_id` char(36) NOT NULL default '',
 `model_id` char(36) NOT NULL default '',
 `model` varchar(100) NOT NULL default '',
 `rating` tinyint(2) unsigned NOT NULL default '0',
 `name` varchar(100) default '',
 `created` datetime default NULL,
 `modified` datetime default NULL,
 PRIMARY KEY (`id`),
 KEY `rating` (`model_id`,`model`,`rating`,`name`)
);
</pre>
<p><strong>5)</strong><br />
Cargar los archivos javascript y css del plugin en el layout o directamente en una vista. Reemplazar [your_framework] por prototype_min o jquery_min dependiendo del framework javascript que useis.<br />
Personalmente yo he usado y me gusta mucho mas jquery.</p>
<pre class="brush: php; title: ;">
&lt;?php
 echo $javascript-&gt;link('/rating/js/rating_jquery_min');
 echo $html-&gt;css('/rating/css/rating');
?&gt;
</pre>
<p><strong>6)</strong><br />
Agregar el elemento rating en la vista de la siguiente manera. Reemplazar  [name_of_your_model] y [id_of_your_model] por vuestros valores</p>
<pre class="brush: php; title: ;">
&lt;?php
echo $this-&gt;element('rating', array('plugin' =&gt; 'rating',
 'model' =&gt; '[name_of_your_model]',
 'id' =&gt; [id_of_your_model]));
?&gt;
</pre>
<p>Un ejemplo real podría ser el siguiente:</p>
<pre class="brush: php; title: ;">
&lt;?php
echo $this-&gt;element('rating', array('plugin' =&gt; 'rating',
'model' =&gt; 'Articulo',
'id' =&gt; $articulo_ficha['Articulo']['id']));
?&gt;
</pre>
<p>Puediera ser que os de errores. Yo tuve que poner el archivo /rating/model/rating.php en mi aplicación app/models/rating.php<br />
También comenté todo el sistema que tiene de validación de campos.</p>
<pre class="brush: php; title: ;">
&lt;?php
/**
 * Model for the AJAX star rating plugin.
 *
 * @author Michael Schneidt &lt;michael.schneidt@arcor.de&gt;
 * @copyright Copyright 2009, Michael Schneidt
 * @license http://www.opensource.org/licenses/mit-license.php
 * @link http://bakery.cakephp.org/articles/view/ajax-star-rating-plugin-1
 * @version 2.3
 */
class Rating extends RatingAppModel {
  var $name = 'Rating';
  /*
  var $validate = array('user_id' =&gt; array('rule' =&gt; array('maxLength' =&gt; 36),
                                           'required' =&gt; true),
                        'model_id' =&gt; array('rule' =&gt; array('maxLength' =&gt; 36),
                                            'required' =&gt; true),
                        'model' =&gt; array('rule' =&gt; 'alphaNumeric',
                                         'required' =&gt; true));
*/
}
?&gt;
</pre>
<p>Espero que os funcione a la primera! <img src='http://blogpv2011.s3.amazonaws.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Fuente original: http://bakery.cakephp.org/articles/schneimi/2010/08/19/ajax-star-rating-plugin-1</p>
<p class="listadoTagRelacionados">Tags de búsquedas:</p><p class="listadoTagRelacionados"> cakephp sistema de votacion, ajax sistema de comentarios, sistema de votacion ajax, sistema de votacion con ajax, sistema de votación con estrellas o star rating con jquery, sistema de votacion online jquery, sistemas votacion estrellas php</p><!-- SEO SearchTerms Tagging 2 Plugin -->

<p>Related posts:<ol><li><a href='http://www.pedroventura.com/blog_programacion/cakephp/ajax-y-jquery-en-cakephp/' rel='bookmark' title='ajax y jquery en cakephp'>ajax y jquery en cakephp</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/cakephp/usando-memcached-con-cakephp/' rel='bookmark' title='usando memcached con cakephp'>usando memcached con cakephp</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/cakephp/recortar-imagenes-en-cakephp-con-jquery/' rel='bookmark' title='recortar imagenes en cakephp con jquery.'>recortar imagenes en cakephp con jquery.</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/cakephp/cakephp-funcion-para-bloquear-ips-y-evitar-spam/' rel='bookmark' title='cakephp funcion para bloquear ips y evitar spam'>cakephp funcion para bloquear ips y evitar spam</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/javascript/autocomplementador-en-ajax/' rel='bookmark' title='Autocomplementador en AJAX'>Autocomplementador en AJAX</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.pedroventura.com/blog_programacion/cakephp/cakephp-ajax-start-voting-sistema-de-votaciones-en-ajax-mediante-estrellas/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Centrar un div con jquery</title>
		<link>http://www.pedroventura.com/blog_programacion/javascript/centrar-un-div-con-jquery/</link>
		<comments>http://www.pedroventura.com/blog_programacion/javascript/centrar-un-div-con-jquery/#comments</comments>
		<pubDate>Sun, 09 Jan 2011 20:34:52 +0000</pubDate>
		<dc:creator>Pedro Ventura</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[jquery]]></category>

		<guid isPermaLink="false">http://www.pedroventura.com/?p=1964</guid>
		<description><![CDATA[Para centrar un div horizontalmente y verticalmente normalmente se usa css para ello. Pero a veces es imposible hacerlo mediante css, porque cada usuario tiene una resolucion en su pantalla diferente, al mismo tiempo que empleamos menos tiempo en centrarlo mediante jquery y javascript, ya que no tenemos que estar calculando anchos y altos. He encontrado una función muy sencilla a la que le pasamos la clase o el id del div y lo centrará automáticamente en la pantalla. Con la función $(window).width() y $(window).height() obtenemos el ancho y altura de la ventana abierta. Con la función outerWidth() y outerHeight() obtenemos el ancho y altura del div. $(document).ready(function(){ $(window).resize(function(){ $('#contenedor_caja').css({ position:'absolute', left: ($(window).width() - $('#contenedor_caja').outerWidth())/2, top: ($(window).height() - $('#contenedor_caja').outerHeight())/2 }); }); // Ejecutamos la función $(window).resize(); }); &#60;div id=&#34;contenedor_caja&#34;&#62; &#60;p&#62;Contenido del div&#60;/p&#62; &#60;/div&#62; Tags de búsquedas: centrar div horizontalmente jquery, centrar una pantalla javascript, centrar con javascript, funcion java para centrar div, jquery centrar, jquery centrar capa, modificar posicion de un elemento jquery, modificer un div con query, posicionar un div con jquery, situar un div a un % de la pantalla Related posts:Cambiar el nombre de una clase css con javascript y con jquery Comprobar, seleccionar y deseleccionar todos [...]


Related posts:<ol><li><a href='http://www.pedroventura.com/blog_programacion/javascript/cambiar-el-nombre-de-una-clase-css-con-javascript-y-con-jquery/' rel='bookmark' title='Cambiar el nombre de una clase css con javascript y con jquery'>Cambiar el nombre de una clase css con javascript y con jquery</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/javascript/comprobar-seleccionar-y-deseleccionar-todos-los-checkbox-de-un-formulario-con-jquery/' rel='bookmark' title='Comprobar, seleccionar y deseleccionar todos los checkbox de un formulario con jquery'>Comprobar, seleccionar y deseleccionar todos los checkbox de un formulario con jquery</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/javascript/mostrar-elementos-secuencialmente-con-jquery/' rel='bookmark' title='Mostrar elementos secuencialmente con Jquery'>Mostrar elementos secuencialmente con Jquery</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/javascript/mensajes-de-ayuda-o-tooltip-con-jquery/' rel='bookmark' title='mensajes de ayuda o tooltip con jquery'>mensajes de ayuda o tooltip con jquery</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/cakephp/recortar-imagenes-en-cakephp-con-jquery/' rel='bookmark' title='recortar imagenes en cakephp con jquery.'>recortar imagenes en cakephp con jquery.</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Para centrar un div horizontalmente y verticalmente normalmente se usa css para ello. Pero a veces es imposible hacerlo mediante css, porque cada usuario tiene una resolucion en su pantalla diferente, al mismo tiempo que empleamos menos tiempo en centrarlo mediante jquery y javascript, ya que no tenemos que estar calculando anchos y altos.<br />
He encontrado una función muy sencilla a la que le pasamos la clase o el id del div y lo centrará automáticamente en la pantalla.</p>
<p>Con la función $(window).width() y $(window).height() obtenemos el ancho y altura de la ventana abierta.<br />
Con la función outerWidth() y outerHeight() obtenemos el ancho y altura del div.</p>
<pre class="brush: plain; title: ;">
$(document).ready(function(){

     $(window).resize(function(){
          $('#contenedor_caja').css({
               position:'absolute',
               left: ($(window).width() - $('#contenedor_caja').outerWidth())/2,
               top: ($(window).height() - $('#contenedor_caja').outerHeight())/2
          });

	});

// Ejecutamos la función
$(window).resize();

});
</pre>
<pre class="brush: plain; title: ;">
&lt;div id=&quot;contenedor_caja&quot;&gt;
&lt;p&gt;Contenido del div&lt;/p&gt;
&lt;/div&gt;
</pre>
<p class="listadoTagRelacionados">Tags de búsquedas:</p><p class="listadoTagRelacionados"> centrar div horizontalmente jquery, centrar una pantalla javascript, centrar con javascript, funcion java para centrar div, jquery centrar, jquery centrar capa, modificar posicion de un elemento jquery, modificer un div con query, posicionar un div con jquery, situar un div a un % de la pantalla</p><!-- SEO SearchTerms Tagging 2 Plugin -->

<p>Related posts:<ol><li><a href='http://www.pedroventura.com/blog_programacion/javascript/cambiar-el-nombre-de-una-clase-css-con-javascript-y-con-jquery/' rel='bookmark' title='Cambiar el nombre de una clase css con javascript y con jquery'>Cambiar el nombre de una clase css con javascript y con jquery</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/javascript/comprobar-seleccionar-y-deseleccionar-todos-los-checkbox-de-un-formulario-con-jquery/' rel='bookmark' title='Comprobar, seleccionar y deseleccionar todos los checkbox de un formulario con jquery'>Comprobar, seleccionar y deseleccionar todos los checkbox de un formulario con jquery</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/javascript/mostrar-elementos-secuencialmente-con-jquery/' rel='bookmark' title='Mostrar elementos secuencialmente con Jquery'>Mostrar elementos secuencialmente con Jquery</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/javascript/mensajes-de-ayuda-o-tooltip-con-jquery/' rel='bookmark' title='mensajes de ayuda o tooltip con jquery'>mensajes de ayuda o tooltip con jquery</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/cakephp/recortar-imagenes-en-cakephp-con-jquery/' rel='bookmark' title='recortar imagenes en cakephp con jquery.'>recortar imagenes en cakephp con jquery.</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.pedroventura.com/blog_programacion/javascript/centrar-un-div-con-jquery/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>ajax y jquery en cakephp</title>
		<link>http://www.pedroventura.com/blog_programacion/cakephp/ajax-y-jquery-en-cakephp/</link>
		<comments>http://www.pedroventura.com/blog_programacion/cakephp/ajax-y-jquery-en-cakephp/#comments</comments>
		<pubDate>Fri, 08 Oct 2010 16:29:18 +0000</pubDate>
		<dc:creator>Pedro Ventura</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[tutoriales]]></category>

		<guid isPermaLink="false">http://www.pedroventura.com/?p=1407</guid>
		<description><![CDATA[En este post voy a explicar como es de simple usar ajax y jquery en cakephp. Se puede usar ajax para muchos temas, guardar los checkbox de un formulario sin tener que hacer submit, para seleccionar subcategorias de una categoría en varios select option aninados, para recargar el contenido de una determinada zona de la web, en general para muchas cosas pero siempre que se necesite. En este caso voy a explicar como usar menus desplegables con ajax y jquery. De manera que teniendo un menú select option con una serie de categorías al seleccionar una de ellas te aparezcan sus subcategorías. Básicamente necesitamos descargar y subir la librería de jquery a nuestro servidor o usar la que hay en Google Code, crear nuestro formulario con una serie de id que son los elementos que harán de &#8220;bindeo&#8221; con jquery, una función en nuestro controlador que busque las subcategorias de la categoria dado el id y una vista para renderizar el select option con las subcategorías que hemos obtenido Lo explico con mas detalle. 1.- INSERTAR LA LIBRERÍA DE JQUERY Sino nada va a funcionar, podéis incluir directamente este fragmento de código entre las etiquetas &#60;head&#62;&#60;/head&#62; &#60;script type=&#34;text/javascript&#34; src=&#34;http://jqueryjs.googlecode.com/files/jquery-1.3.2.min.js&#34;&#62;&#60;/script&#62; 2.- [...]


Related posts:<ol><li><a href='http://www.pedroventura.com/blog_programacion/cakephp/cakephp-ajax-start-voting-sistema-de-votaciones-en-ajax-mediante-estrellas/' rel='bookmark' title='Cakephp ajax start voting. Sistema de votaciones en ajax mediante estrellas'>Cakephp ajax start voting. Sistema de votaciones en ajax mediante estrellas</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/javascript/autocomplementador-en-ajax/' rel='bookmark' title='Autocomplementador en AJAX'>Autocomplementador en AJAX</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/cakephp/recortar-imagenes-en-cakephp-con-jquery/' rel='bookmark' title='recortar imagenes en cakephp con jquery.'>recortar imagenes en cakephp con jquery.</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/javascript/mensajes-de-ayuda-o-tooltip-con-jquery/' rel='bookmark' title='mensajes de ayuda o tooltip con jquery'>mensajes de ayuda o tooltip con jquery</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/javascript/comprobar-seleccionar-y-deseleccionar-todos-los-checkbox-de-un-formulario-con-jquery/' rel='bookmark' title='Comprobar, seleccionar y deseleccionar todos los checkbox de un formulario con jquery'>Comprobar, seleccionar y deseleccionar todos los checkbox de un formulario con jquery</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>En este post voy a explicar como es de simple usar ajax y jquery en cakephp.<br />
Se puede usar ajax para muchos temas, guardar los checkbox de un formulario sin tener que hacer submit, para seleccionar subcategorias de una categoría en varios select option aninados, para recargar el contenido de una determinada zona de la web, en general para muchas cosas pero siempre que se necesite.</p>
<p>En este caso voy a explicar como usar menus desplegables con ajax y jquery.<br />
De manera que teniendo un menú <em>select option</em> con una serie de categorías al seleccionar una de ellas te aparezcan sus subcategorías.</p>
<p>Básicamente necesitamos descargar y subir la librería de jquery a nuestro servidor o usar la que hay en <a href="http://www.pedroventura.com/?s=google" target="_blank">Google </a>Code, crear nuestro formulario con una serie de id que son los elementos que harán de &#8220;bindeo&#8221; con jquery, una función en nuestro controlador que busque las subcategorias de la categoria dado el id y una vista para renderizar el select option con las subcategorías que hemos obtenido</p>
<p>Lo explico con mas detalle.</p>
<p>1.- INSERTAR LA LIBRERÍA DE JQUERY<br />
Sino nada va a funcionar, podéis incluir directamente este fragmento de código entre las etiquetas &lt;head&gt;&lt;/head&gt;</p>
<pre class="brush: jscript; title: ;">
&lt;script type=&quot;text/javascript&quot; src=&quot;http://jqueryjs.googlecode.com/files/jquery-1.3.2.min.js&quot;&gt;&lt;/script&gt;
</pre>
<p>2.- EL FORMULARIO<br />
Tener una vista o un HTML donde tengáis un formulario.<br />
En el formulario habrá que crear un identificador para el select option en este caso he puesto</p>
<pre class="brush: plain; title: ;">
id=&quot;select_categoria&quot;
</pre>
<p>Este es un select option de ejemplo, faltaría poner todo el html que vosotros necesitéis, pero para explicarlo con sólo esto es suficiente</p>
<pre class="brush: xml; title: ;">
&lt;select id=&quot;select_categoria&quot;&gt;
  &lt;option value=&quot;1&quot;&gt;categoria1&lt;/option&gt;
  &lt;option value=&quot;2&quot;&gt;categoria2&lt;/option&gt;
  &lt;option value=&quot;3&quot;&gt;categoria3&lt;/option&gt;
&lt;/select&gt;
</pre>
<p>También habrá que crear un div o un p para que cuando se devuelva el select option con las subcategorias se pinten en dentro de un html. Lo ideal sería ponerlo después del select option para que las subcategorias se visualicen a continuación</p>
<pre class="brush: xml; title: ;">
&lt;div id=&quot;div_subcategorias_wrapper&quot;&gt;&lt;/div&gt;
</pre>
<p>3.- LAS FUNCIONES JQUERY</p>
<p>Este puede que sea el paso mas difícil de todo el proceso</p>
<p>El id que hemos puesto al select option de las categorías se utiliza para que jquery haga un <em>bindeo</em> a una determinada acción que nosotros especifiquemos. En este caso estamos bindeando que el id select_categoria, en jquery se definen mediante el símbolo # (por si alguien no lo sabe y esta algo perdido) se binde a una accion de click, por lo que cuando se seleccione una categoría haciendo click sobre ella se lanza la función siguiente de jquery.<br />
Se hace una llamada ajax $.ajax(); con una serie de parámetros<br />
type: si es GET o POST<br />
url: la url a la que llamamos para obtener la información necesaria, $(this).val() es el valor de la categoría que he seleccionado, en este caso si identificador por el que buscaré sus subcategorías relacionadas<br />
beforeSend: (antes de enviar) lo que hago es meter en el div que hemos creado para pintar los select option de las subcategorias, meto un div con un gif animado, esto da el efecto como que se esta cargando algo y el usuario entiende que tiene que esperar. El gif que verían sería algo como esto: <img class="aligncenter size-full wp-image-1408" title="ajax-loader_mini" src="http://blogpv2011.s3.amazonaws.com/wp-content/uploads/2010/10/ajax-loader_mini.gif" alt="" width="16" height="11" style="border:0px !important; -moz-box-shadow:0px" /><br />
success: cuando ha terminado y se devuelve la información, se genera la variable msg (yo la he llamado así) que contiene el resultado de lo que se ha ejecutado en el controlador, simplemente lo insertamos en el div anterior y ya tendríamos los select option cargados dinámicamente.</p>
<pre class="brush: jscript; title: ;">

$(&quot;document&quot;).ready(
function() {

    $('#select_categoria').bind('click', function()
    {
        $.ajax({
               type: &quot;GET&quot;,
               url: &quot;/articulos/obtener_subcategorias/&quot;+$(this).val(),
               beforeSend: function() {
                     $('#div_subcategorias_wrapper').html('&lt;div class=&quot;rating-flash&quot; id=&quot;cargando_div&quot;&gt;Cargando  &lt;img src=&quot;/img/ajax-loader_mini.gif&quot;&gt;&lt;/div&gt;');
                     },
               success: function(msg){
                   $('#div_subcategorias_wrapper').html(msg);
               }
             });
    });

}
);
</pre>
<p>4.- El CONTROLADOR O LA LÓGICA DE PHP</p>
<p>Esta parte es variable, yo estoy explicando el ejemplo para quien usa CakePHP pero se puede hacer en php puro si se quiere u otro framework.</p>
<p>También hay que tener cuenta que el siguiente controller es de ejemplo, y sirve como guía para quien ya sepa CakePHP.</p>
<pre class="brush: php; title: ;">
&lt;?php
class ArticulosController extends AppController
{
    var $uses = array('Articulo','ArticuloCategoria','ArticuloSubcategoria');
    function index()
    {
        // lógica
    }

    function obtener_subcategorias($id)
    {
        $this-&gt;layout = 'ajax';
        // aquí la lógica que uséis para obtener datos de la base de datos
        // y generar un array con todas las categorías
        // por lo normal y rápido será usar la funcion find con el primer parámetro list para que lo devuelva formateado con el identificador de cada opcion como key de los nodos del array
        $subcategorias = $this-&gt;ArticuloSubcategoria-&gt;find('list',array('conditions' =&gt; array('ArticuloSubcategoria.categoria_id' =&gt; $id), 'fields' =&gt; 'nombre_subcategoria'));
        $this-&gt;set('listado_subcategorias',$subcategorias);
    }

}
?&gt;
</pre>
<p>5.- RENDERIZAR EL SELECT OPTION EN LA VISTA</p>
<p>Renderizar el resultado de lo que hemos obtenido en la función obtener_subcategorias() en la vista<br />
Necesitaremos crear la vista /app/views/articulos/obtener_subcategoria.ctp</p>
<pre class="brush: php; title: ;">
&lt;? echo $form-&gt;input('Articulo.id_subcategoria', array('options' =&gt; $listado_subcategorias,'label'=&gt;false,'div'=&gt;null));?&gt;
</pre>
<p>Y listo! el resultado lo recoge el ajax y lo pinta en el div que hemos explicado anteriormente.</p>
<p>Es muy sencillo usar AJAX con JQUERY, integrarlo con CakePHP puede ser algo mas liado hasta que lo haces la primera vez.</p>
<p>Cualquier duda o comentario no dudéis en escribirlo.</p>
<p class="listadoTagRelacionados">Tags de búsquedas:</p><p class="listadoTagRelacionados"> busqueda cakephp select, jquery ajax cakephp, usar jquery con cakephp, jquery click ajax, cakephp ajax, jquery onclick para $select, mensaje de espera al guardar en jquery, jquery añadir options mediante ajax a un select, jquery ajax phpcake, jquery ajax option</p><!-- SEO SearchTerms Tagging 2 Plugin -->

<p>Related posts:<ol><li><a href='http://www.pedroventura.com/blog_programacion/cakephp/cakephp-ajax-start-voting-sistema-de-votaciones-en-ajax-mediante-estrellas/' rel='bookmark' title='Cakephp ajax start voting. Sistema de votaciones en ajax mediante estrellas'>Cakephp ajax start voting. Sistema de votaciones en ajax mediante estrellas</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/javascript/autocomplementador-en-ajax/' rel='bookmark' title='Autocomplementador en AJAX'>Autocomplementador en AJAX</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/cakephp/recortar-imagenes-en-cakephp-con-jquery/' rel='bookmark' title='recortar imagenes en cakephp con jquery.'>recortar imagenes en cakephp con jquery.</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/javascript/mensajes-de-ayuda-o-tooltip-con-jquery/' rel='bookmark' title='mensajes de ayuda o tooltip con jquery'>mensajes de ayuda o tooltip con jquery</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/javascript/comprobar-seleccionar-y-deseleccionar-todos-los-checkbox-de-un-formulario-con-jquery/' rel='bookmark' title='Comprobar, seleccionar y deseleccionar todos los checkbox de un formulario con jquery'>Comprobar, seleccionar y deseleccionar todos los checkbox de un formulario con jquery</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.pedroventura.com/blog_programacion/cakephp/ajax-y-jquery-en-cakephp/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
		<item>
		<title>recortar imagenes en cakephp con jquery.</title>
		<link>http://www.pedroventura.com/blog_programacion/cakephp/recortar-imagenes-en-cakephp-con-jquery/</link>
		<comments>http://www.pedroventura.com/blog_programacion/cakephp/recortar-imagenes-en-cakephp-con-jquery/#comments</comments>
		<pubDate>Fri, 06 Aug 2010 15:14:23 +0000</pubDate>
		<dc:creator>Pedro Ventura</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[tutoriales]]></category>

		<guid isPermaLink="false">http://www.pedroventura.com/?p=1282</guid>
		<description><![CDATA[Para poder recortar una imagen mediante una seleccion se consigue con imgAreaSelect que es un plugin de JQuery para seleccionar un area de una imagen. El publin se puede configurar y permite diferentes funcionalidades que nos ayudará y nos enriquecerá la tarea de recortar una imagen, ya sea a nosotros a los usuarios cuando por ejemplo quieren subir un avatar y recortar la zona que quieran de la foto previamente subida. El plugin permite trabajar escalando imágenes o recortando unas dimesiones asignadas. Por ejemplo. 1.- Selecciona y recorta una imagen con unas dimensiones determinadas. $(document).ready(function () { $('#avatar').imgAreaSelect({ maxWidth: 200, maxHeight: 150, handles: true }); }); 2.- Selecciona y recorta la foto manteniendo un porcentaje escalado previamente asignado. $(document).ready(function () { $('#avatar').imgAreaSelect({ aspectRatio: '4:3', handles: true }); }); Esto es muy sencillo de integrar en php y jquery pero bueno como ya sabemos en Cakephp se complica un poquito mas debiado a que hay que seguir el patrón de diseño MVC. Como siempre habrá que crear un componente que interactue con el controlador o controladores, un helper para incluir en la vista las funciones de javascript y la implementación de la vista. Para esta receta necesitaremos 1.- El componente /app/controllers/components/jq_imgcrop.php [...]


Related posts:<ol><li><a href='http://www.pedroventura.com/blog_programacion/cakephp/ajax-y-jquery-en-cakephp/' rel='bookmark' title='ajax y jquery en cakephp'>ajax y jquery en cakephp</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/javascript/comprobar-seleccionar-y-deseleccionar-todos-los-checkbox-de-un-formulario-con-jquery/' rel='bookmark' title='Comprobar, seleccionar y deseleccionar todos los checkbox de un formulario con jquery'>Comprobar, seleccionar y deseleccionar todos los checkbox de un formulario con jquery</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/cakephp/subir-ficheros-con-swfupload-componente-cakephp/' rel='bookmark' title='subir ficheros con swfupload componente cakephp'>subir ficheros con swfupload componente cakephp</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/cakephp/captcha-de-seguridad-en-cakephp-con-securimage/' rel='bookmark' title='Captcha de seguridad en cakePHP con Securimage'>Captcha de seguridad en cakePHP con Securimage</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/cakephp/componente-geo-posicionamiento-ip-con-cakephp/' rel='bookmark' title='componente geo posicionamiento ip con cakephp'>componente geo posicionamiento ip con cakephp</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Para poder recortar una imagen mediante una seleccion se consigue con imgAreaSelect que es un plugin de JQuery para seleccionar un area de una imagen.</p>
<p>El publin se puede configurar y permite diferentes funcionalidades que nos ayudará y nos enriquecerá la tarea de recortar una imagen, ya sea a nosotros a los usuarios cuando por ejemplo quieren subir un avatar y recortar la zona que quieran de la foto previamente subida.</p>
<p>El plugin permite trabajar escalando imágenes o recortando unas dimesiones asignadas. Por ejemplo.<br />
1.- Selecciona y recorta una imagen con unas dimensiones determinadas.</p>
<pre class="brush: plain; title: ;">
$(document).ready(function () { $('#avatar').imgAreaSelect({ maxWidth: 200, maxHeight: 150, handles: true }); });
</pre>
<p>2.-  Selecciona y recorta la foto manteniendo un porcentaje escalado previamente asignado.</p>
<pre class="brush: plain; title: ;">
$(document).ready(function () { $('#avatar').imgAreaSelect({ aspectRatio: '4:3', handles: true }); });
</pre>
<p>Esto es muy sencillo de integrar en php y jquery pero bueno como ya sabemos en Cakephp se complica un poquito mas debiado a que hay que seguir el patrón de diseño MVC.<br />
Como siempre habrá que crear un componente que interactue con el controlador o controladores, un helper para incluir en la vista las funciones de javascript y la implementación de la vista.</p>
<p>Para esta receta necesitaremos <img src='http://blogpv2011.s3.amazonaws.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>1.- El componente<br />
/app/controllers/components/jq_imgcrop.php</p>
<pre class="brush: php; title: ;">
&lt;?php
class JqImgcropComponent extends Object
{

    function uploadImage($uploadedInfo, $uploadTo, $prefix)
    {
        $webpath = $uploadTo;
        $upload_dir = WWW_ROOT.str_replace(&quot;/&quot;, DS, $uploadTo);
        $upload_path = $upload_dir.DS;
        $max_file = &quot;34457280&quot;;
        $max_width = 400;
        // añado al prefijo, el identificador de tiempo, para que el archivo que se suba siempre sea unico
        $prefix = $prefix.time();

        $userfile_name = $uploadedInfo['name'];
        $userfile_tmp =  $uploadedInfo[&quot;tmp_name&quot;];
        $userfile_size = $uploadedInfo[&quot;size&quot;];
        //$filename = $prefix.basename($uploadedInfo[&quot;name&quot;]);
        $id_unic = $uuid = String::uuid();
        $extension =  $this-&gt;getFileExtension($uploadedInfo[&quot;name&quot;]);
        if (($extension != &quot;jpeg&quot;)  &amp;&amp; ($extension != &quot;jpg&quot;) &amp;&amp; ($extension != &quot;gif&quot;) &amp;&amp; ($extension != &quot;png&quot;))
        {
            return false;
        }
        $filename = $prefix.$id_unic.'.'.$extension;
        //$file_ext = mb_substr($filename, strrpos($filename, &quot;.&quot;) + 1);
        $uploadTarget = $upload_path.$filename;

        if(empty($uploadedInfo)) {
                  return false;
                }

        if (isset($uploadedInfo['name'])){
            move_uploaded_file($userfile_tmp, $uploadTarget );
            chmod ($uploadTarget , 0777);
            $width = $this-&gt;getWidth($uploadTarget);
            $height = $this-&gt;getHeight($uploadTarget);
            // Scale the image if it is greater than the width set above
            if ($width &gt; $max_width){
                $scale = $max_width/$width;
                $uploaded = $this-&gt;resizeImage($uploadTarget,$width,$height,$scale);
            }else{
                $scale = 1;
                $uploaded = $this-&gt;resizeImage($uploadTarget,$width,$height,$scale);
            }
        }
        return array('imagePath' =&gt; $webpath.$filename, 'imageName' =&gt; $filename, 'imageWidth' =&gt; $this-&gt;getWidth($uploadTarget), 'imageHeight' =&gt; $this-&gt;getHeight($uploadTarget));
    }

    function getHeight($image)
    {
        $sizes = getimagesize($image);
        $height = $sizes[1];
        return $height;
    }

    function getWidth($image)
    {
        $sizes = getimagesize($image);
        $width = $sizes[0];
        return $width;
    }

    function resizeImage($image,$width,$height,$scale)
    {
        $newImageWidth = ceil($width * $scale);
        $newImageHeight = ceil($height * $scale);
        $newImage = imagecreatetruecolor($newImageWidth,$newImageHeight);
$ext = strtolower(mb_substr(basename($image), strrpos(basename($image), &quot;.&quot;) + 1));
        $source = &quot;&quot;;
        if($ext == &quot;png&quot;){
            $source = imagecreatefrompng($image);
        }elseif($ext == &quot;jpg&quot; || $ext == &quot;jpeg&quot;){
            $source = imagecreatefromjpeg($image);
        }elseif($ext == &quot;gif&quot;){
            $source = imagecreatefromgif($image);
        }
        imagecopyresampled($newImage,$source,0,0,0,0,$newImageWidth,$newImageHeight,$width,$height);
        imagejpeg($newImage,$image,90);
        chmod($image, 0777);
        return $image;
    }

    function resizeThumbnailImage($thumb_image_name, $image, $width, $height, $start_width, $start_height, $scale)
    {
        $newImageWidth = ceil($width * $scale);
        $newImageHeight = ceil($height * $scale);
        $newImage = imagecreatetruecolor($newImageWidth,$newImageHeight);
        $ext = strtolower(mb_substr(basename($image), strrpos(basename($image), &quot;.&quot;) + 1));
        $source = &quot;&quot;;
        if($ext == &quot;png&quot;){
            $source = imagecreatefrompng($image);
        }elseif($ext == &quot;jpg&quot; || $ext == &quot;jpeg&quot;){
            $source = imagecreatefromjpeg($image);
        }elseif($ext == &quot;gif&quot;){
            $source = imagecreatefromgif($image);
        }
        imagecopyresampled($newImage,$source,0,0,$start_width,$start_height,$newImageWidth,$newImageHeight,$width,$height);
        imagejpeg($newImage,$thumb_image_name,90);
        chmod($thumb_image_name, 0777);
        return $thumb_image_name;
    }

    function cropImage($thumb_width, $x1, $y1, $x2, $y2, $w, $h, $thumbLocation, $imageLocation)
    {
        $scale = $thumb_width/$w;
        $cropped = $this-&gt;resizeThumbnailImage(WWW_ROOT.str_replace(&quot;/&quot;, DS,$thumbLocation),WWW_ROOT.str_replace(&quot;/&quot;, DS,$imageLocation),$w,$h,$x1,$y1,$scale);
        return $cropped;
    }

     function getFileExtension($str)
     {
        /*
        $i = strrpos($str,&quot;.&quot;);
        if (!$i) { return &quot;&quot;; }
        $l = strlen($str) - $i;
        $ext = mb_substr($str,$i,$l);
        return $ext;
        */
        return end(explode(&quot;.&quot;, $str));

    }
}
?&gt;
</pre>
<p>2.- El Helper</p>
<p>/app/views/helpers/cropimage.php</p>
<pre class="brush: php; title: ;">
&lt;?php
class CropimageHelper extends Helper {
    var $helpers = array('Html', 'Javascript', 'Form');

    function createJavaScript($imgW, $imgH, $thumbW, $thumbH) {
            return $this-&gt;output(&quot;&lt;script type=\&quot;text/javascript\&quot;&gt;
                function preview(img, selection) {
                    var scaleX = $thumbW / selection.width;
                    var scaleY = $thumbW / selection.height;

                  /*
                  Esta parte esta dando un bug en IE x aunque en el resto de browsers va ok.
                    $('#thumbnail + div &gt; img').css({
                        width: Math.round(scaleX * $imgW) + 'px',
                        height: Math.round(scaleY * $imgH) + 'px',
                        marginLeft: '-' + Math.round(scaleX * selection.x1) + 'px',
                        marginTop: '-' + Math.round(scaleY * selection.y1) + 'px'
                    });
                    */
                    $('#x1').val(selection.x1);
                    $('#y1').val(selection.y1);
                    $('#x2').val(selection.x2);
                    $('#y2').val(selection.y2);
                    $('#w').val(selection.width);
                    $('#h').val(selection.height);
                }

                $(document).ready(function () {
                    $('#save_thumb').click(function() {
                        var x1 = $('#x1').val();
                        var y1 = $('#y1').val();
                        var x2 = $('#x2').val();
                        var y2 = $('#y2').val();
                        var w = $('#w').val();
                        var h = $('#h').val();
                        if(x1==\&quot;\&quot; || y1==\&quot;\&quot; || x2==\&quot;\&quot; || y2==\&quot;\&quot;|| w==\&quot;\&quot; || h==\&quot;\&quot;){
                            alert('Seleccione sobre la foto la zona que quiere');
                            return false;
                        }else{
                            return true;
                    }
                });
            });

            $(window).load(function () {
                $('#thumbnail').imgAreaSelect({ aspectRatio:'4:3', onSelectChange: preview });
            });
            &lt;/script&gt;&quot;);
    }

  function createForm($imagePath, $tH, $tW)
  {
    $x1 = $this-&gt;Form-&gt;hidden('x1', array(&quot;value&quot; =&gt; &quot;&quot;, &quot;id&quot;=&gt;&quot;x1&quot;));
    $y1 = $this-&gt;Form-&gt;hidden('y1', array(&quot;value&quot; =&gt; &quot;&quot;, &quot;id&quot;=&gt;&quot;y1&quot;));
    $x2 = $this-&gt;Form-&gt;hidden('x2', array(&quot;value&quot; =&gt; &quot;&quot;, &quot;id&quot;=&gt;&quot;x2&quot;,));
    $y2 = $this-&gt;Form-&gt;hidden('y2', array(&quot;value&quot; =&gt; &quot;&quot;, &quot;id&quot;=&gt;&quot;y2&quot;));
    $w = $this-&gt;Form-&gt;hidden('w', array(&quot;value&quot; =&gt; &quot;&quot;, &quot;id&quot;=&gt;&quot;w&quot;));
    $h = $this-&gt;Form-&gt;hidden('h', array(&quot;value&quot; =&gt; &quot;&quot;, &quot;id&quot;=&gt;&quot;h&quot;));
    $imgP = $this-&gt;Form-&gt;hidden('imagePath', array(&quot;value&quot; =&gt; $imagePath));
    return $this-&gt;output(&quot;&lt;img src=\&quot;$imagePath\&quot; style=\&quot;float: left; margin-right: 10px;\&quot; id=\&quot;thumbnail\&quot; alt=\&quot;Create Thumbnail\&quot; /&gt;
                &lt;div style=\&quot;position:relative; overflow:hidden; width:&quot;.$tW.&quot;px; height:&quot;.$tH.&quot;px; display:none\&quot;&gt;
                    &lt;img src=\&quot;$imagePath\&quot; style=\&quot;position: relative;\&quot; alt=\&quot;Thumbnail Preview\&quot; /&gt;
                &lt;/div&gt;
                &lt;br style=\&quot;clear:both;\&quot;/&gt;$x1 $y1 $x2 $y2 $w $h $imgP&quot;);
    }
}
?&gt;
</pre>
<p>3.- No olvidar incluir el componente ni el helper en el controlador</p>
<pre class="brush: php; title: ;">
var $helpers = array('Cropimage');
var $components = array(&quot;JqImgcrop&quot;);
</pre>
<p>4.- Voy a integrar el ejemplo de redimensionar una imagen o una foto en un ejemplo real. En este caso yo he hecho una funcion para crear o modifcar el avatar del usuario en el controlador /app/controllers/usuarios_controller.php</p>
<pre class="brush: php; title: ;">
   &lt;?php
    /**
    * funcion para crear/ modificar el avatar del usuario
    * @version 1.0
    * @author Pedro Ventura
    *
    */
    function alterar_avatar()
    {
        $path_thmb_subida = $this-&gt;Avatars-&gt;comprobar_ruta_subida('usuarios');
        if($path_thmb_subida)
        {
            if(!empty($this-&gt;data))
            {
                if(isset($this-&gt;data['Avatar']['step']) &amp;&amp; ($this-&gt;data['Avatar']['step']=='1'))
                {
                    # subo esta que será la original
                    # esta que subo despues se pisará con el thumb del cropping
                    $uploaded = $this-&gt;JqImgcrop-&gt;uploadImage($this-&gt;data['Avatar']['name1'], $path_thmb_subida, 'original_');
                    if($uploaded)
                    {
                        $this-&gt;set('uploaded',$uploaded);
                        $this-&gt;set('step',2);
                    }
                    else
                    {
                        $this-&gt;Session-&gt;setFlash(__('Tipo de archivo incorrecto, seleciona una imagen .jpg, .jpeg, .gif o .png',true));
                        $this-&gt;set('step',1);
                    }
                }
                if(isset($this-&gt;data['Avatar']['step']) &amp;&amp; ($this-&gt;data['Avatar']['step']=='2'))
                {
                    # sustituyo el path del thumbnail que se acaba de subir pues es el original y cambio el nombre del archivo,
                    # para que se genere un thumbnail con un nombre nuevo
                    $path_thmb =  str_replace('original_','thumb_',$this-&gt;data['Usuario']['imagePath']);
                    $cropped = $this-&gt;JqImgcrop-&gt;cropImage(85, $this-&gt;data['Usuario']['x1'], $this-&gt;data['Usuario']['y1'], $this-&gt;data['Usuario']['x2'], $this-&gt;data['Usuario']['y2'], $this-&gt;data['Usuario']['w'], $this-&gt;data['Usuario']['h'], $path_thmb, $this-&gt;data['Usuario']['imagePath']);
                    $this-&gt;set('step',3);
                    # guardo el path del avatar en el registro del usuario
                    $this-&gt;Usuario-&gt;id = $_SESSION['Usuario']['id'];
                    $this-&gt;Usuario-&gt;saveField('avatar_path',$path_thmb);
                    $this-&gt;Session-&gt;setFlash(__('Avatar Alterado con éxito',true));
                    # seteo el avatar resultante despues de la redimension y lo asigno a la vista
                    $this-&gt;set('avatar_final',str_replace(WWW_ROOT,'',$cropped));
                }
            }
            else
            {
                $this-&gt;set('step',1);
            }
        }
    }
?&gt;
</pre>
<p>5.- Los pasos para recortar la imagen integrados en la vista son los siguientes</p>
<pre class="brush: php; title: ;">
&lt;?
    /* librerías para crop de imagenes */
    echo $html-&gt;css('img_select/imgareaselect-animated_0.9.2',NULL, false). &quot; \n&quot;;
    echo $javascript-&gt;link('jquery.imgareaselect_0.9.2.js',NULL, false);
    # formulario paso 1 de crear avatar
    if(isset($step) &amp;&amp; ($step == 1))
    {
        echo $form-&gt;create('Usuario', array('type' =&gt; 'file','url' =&gt; array('controller' =&gt; 'usuarios', 'action' =&gt; 'alterar_avatar')));
        echo '&lt;br /&gt;';
        echo $form-&gt;input('Avatar.step', array('label' =&gt; false,'div'=&gt;null, 'type' =&gt; 'hidden', 'value'=&gt;$step));
        echo '&lt;br /&gt;';
        echo 'Selecciona tu avatar : '.  $form-&gt;file('Avatar.name1', array('size' =&gt; '60'));
        echo $form-&gt;submit('Guarda Avatar');
    }
    elseif(isset($step) &amp;&amp; ($step == 2))
    {
        echo $cropimage-&gt;createJavaScript($uploaded['imageWidth'],$uploaded['imageHeight'],85,85,$uploaded[&quot;imagePath&quot;]);
        echo $form-&gt;create('Usuario', array('type' =&gt; 'file','url' =&gt; array('controller' =&gt; 'usuarios', 'action' =&gt; 'alterar_avatar')));
        echo $form-&gt;input('Avatar.step', array('label' =&gt; false,'div'=&gt;null, 'type' =&gt; 'hidden', 'value'=&gt;$step));
        echo $cropimage-&gt;createForm($uploaded[&quot;imagePath&quot;], 85, 85);
        echo $form-&gt;submit('Terminar', array(&quot;id&quot;=&gt;&quot;save_thumb&quot;));
        echo $form-&gt;end();
    }
    elseif(isset($step) &amp;&amp; ($step == 3))
    {
        ?&gt;
        &lt;br /&gt;
        &lt;p&gt;Enhorabuena!! ya has creado tu avatar!! lo podrás ver en tu perfil.&lt;/p&gt;
        &lt;br /&gt;
        &lt;?
        echo $html-&gt;image($avatar_final);
    }
    else
    {
        # sin acciones
    }
?&gt;
</pre>
<p>Para los que les cueste seguir el flujo de datos, resumo a de manera básica.</p>
<ol style="list-style:decimal">
<li>Se incluyen el helper y el componente en el controlador</li>
<li>Una vez que se hace la llamada a la funcion empieza en step =1, es decir que dentro de la vista se va a mostrar la renderización que hay dentro de step 1. Esto se hace porque dentro de la funcionalidad de recortar hay 3 fases:
<ul>
<li>La fase inicial donde el usuario selecciona la foto que quiere subir y se envía. El controlador la recoge y la envía al componente que la sube.</li>
<p></p>
<li>Si el paso anterior se ha realizado con éxito, se para al step 2 que es cuando se tiene que seleccionar una zona de la foto mediante el propio plugin de Jquery ImgAreaSelect. Se recorgan y en en formulario se generan unas variables en input hidden con los valores del recorte realizado. Se envia al controlador y el contralador se lo delega al componente que realiza la redimension o recorte</li>
<p></p>
<li>Finalmente ya tenemos la imagen final recortada dependiendo de los patrones de redimension que hayamos configurado</li>
<p>
</ul>
</li>
</ol>
<p>En el helper hay un comentario, ya que hay un bug que no consigo arreglar, por falta de tiempo o simplemente porque estoy ciego y no veo el error. Hay una función preview que muestra una previsualizacion de como quedará la imagen o la foto después de ser recortada, yo la tengo comentada por esto mismo que comento. Está fallando en cualquier version de IE, intuyo que será por un tema de comillas, que no las interpreta bien y no es capaz de cerrarlas. Si alguien consigue debugear esta parte, por favor que lo comente!!</p>
<pre class="brush: php; title: ;">
/*
  Esta parte esta dando un bug en IE x aunque en el resto de browsers va ok.
    $('#thumbnail + div &gt; img').css({
        width: Math.round(scaleX * $imgW) + 'px',
        height: Math.round(scaleY * $imgH) + 'px',
        marginLeft: '-' + Math.round(scaleX * selection.x1) + 'px',
        marginTop: '-' + Math.round(scaleY * selection.y1) + 'px'
    });
    */
</pre>
<p>Cualquier duda o pregunta comentarlas y las iré resolviendo.</p>
<blockquote><p>
Actualización: 25/11/201<br />
Se me ha olvidado por completo indicar que hay que descargar la libreria de jquery, así como el plugin de imageArea.<br />
Los adjunto en el siguiente zip.<br />
También contiene un css y algunas imágenes para hacer todo el efecto de recorte.<br />
<br />
<img alt="zip" title="zip" class="download-icon" src="http://www.pedroventura.com/wp-content/plugins/download-monitor/img/filetype_icons/document-zipper.png" /><br /><a href="http://www.pedroventura.com/wp-content/plugins/download-monitor/download.php?id=8" title="Descargado 181 veces" rel="nofollow">Descargar Plugin image Area y CSS, Jquery.zip</a> - Descargado 181 veces
</p></blockquote>
<p class="listadoTagRelacionados">Tags de búsquedas:</p><p class="listadoTagRelacionados"> cakephp jquery, jquery cakephp, recortar foto para avatar, php upload de imagen y cortar, javascript recortar div y guardar imagen, javascript cortar imagenes, función recortar una imagen javascript, funcion recortar imagenes wordpress, cortar foto con php, codigo para subir imagenes en php y recortarlas</p><!-- SEO SearchTerms Tagging 2 Plugin -->

<p>Related posts:<ol><li><a href='http://www.pedroventura.com/blog_programacion/cakephp/ajax-y-jquery-en-cakephp/' rel='bookmark' title='ajax y jquery en cakephp'>ajax y jquery en cakephp</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/javascript/comprobar-seleccionar-y-deseleccionar-todos-los-checkbox-de-un-formulario-con-jquery/' rel='bookmark' title='Comprobar, seleccionar y deseleccionar todos los checkbox de un formulario con jquery'>Comprobar, seleccionar y deseleccionar todos los checkbox de un formulario con jquery</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/cakephp/subir-ficheros-con-swfupload-componente-cakephp/' rel='bookmark' title='subir ficheros con swfupload componente cakephp'>subir ficheros con swfupload componente cakephp</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/cakephp/captcha-de-seguridad-en-cakephp-con-securimage/' rel='bookmark' title='Captcha de seguridad en cakePHP con Securimage'>Captcha de seguridad en cakePHP con Securimage</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/cakephp/componente-geo-posicionamiento-ip-con-cakephp/' rel='bookmark' title='componente geo posicionamiento ip con cakephp'>componente geo posicionamiento ip con cakephp</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.pedroventura.com/blog_programacion/cakephp/recortar-imagenes-en-cakephp-con-jquery/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>mensajes de ayuda o tooltip con jquery</title>
		<link>http://www.pedroventura.com/blog_programacion/javascript/mensajes-de-ayuda-o-tooltip-con-jquery/</link>
		<comments>http://www.pedroventura.com/blog_programacion/javascript/mensajes-de-ayuda-o-tooltip-con-jquery/#comments</comments>
		<pubDate>Wed, 14 Jul 2010 20:55:08 +0000</pubDate>
		<dc:creator>Pedro Ventura</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[tutoriales]]></category>

		<guid isPermaLink="false">http://www.pedroventura.com/?p=1167</guid>
		<description><![CDATA[Los tooltips o mensajes de ayuda son pequeños esa pequeñas cosas que juegan un gran rol en el diseño y en la atracción del usuario, por lo que si están bien diseñados e integrados en una web, y resultan realmente útiles al usuario dejaran en éstos una buena sensación sobre tu web. Aquí es donde entra JQuery para ayudarnos a hacer los tooltips. Hay muchos plugins de Jquery para hacer tooltips o éstos mensajes de ayuda, pero el que mas me ha gustado a mi es &#8220;SimpleTip&#8221;. Permite crear tooltips de manera muy sencilla usando cualquier elemento de la pagina con los selectores y gestores de eventos de Jquery. Los tooltips pueden ser estáticos, dinámicos, o se pueden cargar por AJAX con una variedad diferentes de efectos visuales. Ejemplo sencillo de integración de un tooltip estático $(&#34;#panel_usuario_cuenta&#34;).simpletip ({ content:'Bienvenido usuario este es tu panel de control!!!', fixed:true, position: 'top' }); Sobre el elemento html que tiene el id=&#8221;panel_usuario_cuenta&#8221; aparecerá en la parte superior el mensaje indicado en la variable content Mas información y descargas de las librerías en la web oficial: http://craigsworks.com/projects/simpletip/ Tags de búsquedas: mensajes de ayuda, mensajes jquery, mensajes con jquery, jquery mensajes, tooltip jquery ejemplo, tooltip jquery [...]


Related posts:<ol><li><a href='http://www.pedroventura.com/blog_programacion/javascript/jquery-activar-desactivar-boton-submit-de-formulario/' rel='bookmark' title='Jquery activar desactivar boton submit de formulario'>Jquery activar desactivar boton submit de formulario</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/javascript/cambiar-el-nombre-de-una-clase-css-con-javascript-y-con-jquery/' rel='bookmark' title='Cambiar el nombre de una clase css con javascript y con jquery'>Cambiar el nombre de una clase css con javascript y con jquery</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/javascript/comprobar-seleccionar-y-deseleccionar-todos-los-checkbox-de-un-formulario-con-jquery/' rel='bookmark' title='Comprobar, seleccionar y deseleccionar todos los checkbox de un formulario con jquery'>Comprobar, seleccionar y deseleccionar todos los checkbox de un formulario con jquery</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/javascript/centrar-un-div-con-jquery/' rel='bookmark' title='Centrar un div con jquery'>Centrar un div con jquery</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/javascript/mostrar-elementos-secuencialmente-con-jquery/' rel='bookmark' title='Mostrar elementos secuencialmente con Jquery'>Mostrar elementos secuencialmente con Jquery</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Los tooltips o mensajes de ayuda son pequeños esa pequeñas cosas que juegan un gran rol en el diseño y en la atracción del usuario, por lo que si están bien diseñados e integrados en una web, y resultan realmente útiles al usuario dejaran en éstos una buena sensación sobre tu web.</p>
<p>Aquí es donde entra JQuery para ayudarnos a hacer los tooltips. </p>
<p>Hay muchos plugins de Jquery para hacer tooltips o éstos mensajes de ayuda, pero el que mas me ha gustado a mi es <a href="http://craigsworks.com/projects/simpletip/#" rel="nofollow" target="_blank">&#8220;SimpleTip&#8221;</a>. Permite crear tooltips de manera muy sencilla usando cualquier elemento de la pagina con los selectores y gestores de eventos de Jquery. Los tooltips pueden ser estáticos, dinámicos, o se pueden cargar por AJAX con una variedad diferentes de efectos visuales.</p>
<p>Ejemplo sencillo de integración de un tooltip estático</p>
<pre class="brush: plain; title: ;">
$(&quot;#panel_usuario_cuenta&quot;).simpletip
    ({
        content:'Bienvenido usuario este es tu panel de control!!!',
        fixed:true,
        position: 'top'
    });
</pre>
<p>Sobre el elemento html que tiene el id=&#8221;panel_usuario_cuenta&#8221; aparecerá en la parte superior el mensaje indicado en la variable <em>content</em></p>
<p>Mas información y descargas de las librerías en la web oficial:<br />
<a href="http://craigsworks.com/projects/simpletip/" rel="nofollow" target="_blank">http://craigsworks.com/projects/simpletip/</a></p>
<p class="listadoTagRelacionados">Tags de búsquedas:</p><p class="listadoTagRelacionados"> mensajes de ayuda, mensajes jquery, mensajes con jquery, jquery mensajes, tooltip jquery ejemplo, tooltip jquery div ejemplos, tooltip jquery ejemplos, tooltip ayuda jquery, panel de mensajes en jquery, tooltip en tu web usando javascript</p><!-- SEO SearchTerms Tagging 2 Plugin -->

<p>Related posts:<ol><li><a href='http://www.pedroventura.com/blog_programacion/javascript/jquery-activar-desactivar-boton-submit-de-formulario/' rel='bookmark' title='Jquery activar desactivar boton submit de formulario'>Jquery activar desactivar boton submit de formulario</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/javascript/cambiar-el-nombre-de-una-clase-css-con-javascript-y-con-jquery/' rel='bookmark' title='Cambiar el nombre de una clase css con javascript y con jquery'>Cambiar el nombre de una clase css con javascript y con jquery</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/javascript/comprobar-seleccionar-y-deseleccionar-todos-los-checkbox-de-un-formulario-con-jquery/' rel='bookmark' title='Comprobar, seleccionar y deseleccionar todos los checkbox de un formulario con jquery'>Comprobar, seleccionar y deseleccionar todos los checkbox de un formulario con jquery</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/javascript/centrar-un-div-con-jquery/' rel='bookmark' title='Centrar un div con jquery'>Centrar un div con jquery</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/javascript/mostrar-elementos-secuencialmente-con-jquery/' rel='bookmark' title='Mostrar elementos secuencialmente con Jquery'>Mostrar elementos secuencialmente con Jquery</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.pedroventura.com/blog_programacion/javascript/mensajes-de-ayuda-o-tooltip-con-jquery/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Cambiar el nombre de una clase css con javascript y con jquery</title>
		<link>http://www.pedroventura.com/blog_programacion/javascript/cambiar-el-nombre-de-una-clase-css-con-javascript-y-con-jquery/</link>
		<comments>http://www.pedroventura.com/blog_programacion/javascript/cambiar-el-nombre-de-una-clase-css-con-javascript-y-con-jquery/#comments</comments>
		<pubDate>Wed, 18 Mar 2009 14:05:07 +0000</pubDate>
		<dc:creator>Pedro Ventura</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[jquery]]></category>

		<guid isPermaLink="false">http://www.pedroventura.com/blog_programacion/?p=52</guid>
		<description><![CDATA[Hoy he aprendido una cosita bastante sencilla pero muy util con jquery. Estaba haciendo un pequeño desarrollo con PHP y AJAX para que un usuario pudiese seleccionar su nick en un simple input text. El tema es que cuando el nick estuviese ocupado me tendría que mostrar un mensaje en un div y cambiar el class para que se mostrase una clase css determinada. Esto yo sabía como hacerlo en javascript, pero resulta que en IE 6 peta, como siempre!!! Para lo que no lo sepan se haría con la siguiente sentencia: document.getElementById(&#34;xxxxxxxxxx&#34;).setAttribute(&#34;class&#34;, &#34;error&#34;); donde: xxxxxxxxxx es el id de mi div, tambien puede ser un p, o un span. class, es el atributo que queremos cambiar de la etiqueta html que estamos usando, en mi caso es el div, pero repito, puede ser un p o un span. error es el nombre de la clase css que he definido en mi hoja de estilos, que tiene un background y una imagen de fondo que muestra el look &#38; feel de un mensajito de error. Pero bueno lo que he aprendido es a hacerlo con jquery, lo cual es una pasada porque en sólo una linea puedes añadir, modificar o [...]


Related posts:<ol><li><a href='http://www.pedroventura.com/blog_programacion/javascript/obtener-el-nombre-del-dominio-con-javascript/' rel='bookmark' title='obtener el nombre del dominio con javascript'>obtener el nombre del dominio con javascript</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/javascript/centrar-un-div-con-jquery/' rel='bookmark' title='Centrar un div con jquery'>Centrar un div con jquery</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/javascript/comprobar-seleccionar-y-deseleccionar-todos-los-checkbox-de-un-formulario-con-jquery/' rel='bookmark' title='Comprobar, seleccionar y deseleccionar todos los checkbox de un formulario con jquery'>Comprobar, seleccionar y deseleccionar todos los checkbox de un formulario con jquery</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/javascript/mostrar-elementos-secuencialmente-con-jquery/' rel='bookmark' title='Mostrar elementos secuencialmente con Jquery'>Mostrar elementos secuencialmente con Jquery</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/social-media/cambiar-el-status-de-facebook-desde-una-web-externa-o-blog/' rel='bookmark' title='Cambiar el status de facebook desde una web externa o blog.'>Cambiar el status de facebook desde una web externa o blog.</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Hoy he aprendido una cosita bastante sencilla pero muy util con jquery.</p>
<p>Estaba haciendo un pequeño desarrollo con PHP y AJAX para que un usuario pudiese seleccionar su nick en un simple input text.<br />
El tema es que cuando el nick estuviese ocupado me tendría que mostrar un mensaje en un div y cambiar el class para que se mostrase una clase css determinada.</p>
<p>Esto yo sabía como hacerlo en javascript, pero resulta que en IE 6 peta, como siempre!!!</p>
<p>Para lo que no lo sepan se haría con la siguiente sentencia:</p>
<pre class="brush: jscript; title: ;">document.getElementById(&quot;xxxxxxxxxx&quot;).setAttribute(&quot;class&quot;, &quot;error&quot;);</pre>
<p>donde:</p>
<ol>
<li>xxxxxxxxxx es el id de mi div, tambien puede ser un p, o un span.</li>
<li>class, es el atributo que queremos cambiar de la etiqueta html que estamos usando, en mi caso es el div, pero repito, puede ser un p o un span.</li>
<li>error es el nombre de la clase css que he definido en mi hoja de estilos, que tiene un background y una imagen de fondo que muestra el look &amp; feel de un mensajito de error.</li>
</ol>
<p>Pero bueno lo que he aprendido es a hacerlo con jquery, lo cual es una pasada porque en sólo una linea puedes añadir, modificar o eliminar el nombre de la clase css.</p>
<p>La sentencia es la siguiente:</p>
<ul>
<li>Para añadir una clase css a un elemento HTML
<pre class="brush: jscript; title: ;">$('#xxxxxxxxxx ').addClass('error');</pre>
</li>
<li>Para eliminarlo 
<pre class="brush: jscript; title: ;">$('#xxxxxxxxxx ').removeClass('error');</pre>
</li>
</ul>
<p>KEEP IT SIMPLE!!</p>
<p class="listadoTagRelacionados">Tags de búsquedas:</p><p class="listadoTagRelacionados"> jquery cambiar class, cambiar clase jquery, jquery cambiar clase, cambiar clase con jquery, cambiar class jquery, cambiar class con jquery, cambiar clase css jquery, jquery cambiar css, cambiar css con jquery, cambiar css jquery</p><!-- SEO SearchTerms Tagging 2 Plugin -->

<p>Related posts:<ol><li><a href='http://www.pedroventura.com/blog_programacion/javascript/obtener-el-nombre-del-dominio-con-javascript/' rel='bookmark' title='obtener el nombre del dominio con javascript'>obtener el nombre del dominio con javascript</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/javascript/centrar-un-div-con-jquery/' rel='bookmark' title='Centrar un div con jquery'>Centrar un div con jquery</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/javascript/comprobar-seleccionar-y-deseleccionar-todos-los-checkbox-de-un-formulario-con-jquery/' rel='bookmark' title='Comprobar, seleccionar y deseleccionar todos los checkbox de un formulario con jquery'>Comprobar, seleccionar y deseleccionar todos los checkbox de un formulario con jquery</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/javascript/mostrar-elementos-secuencialmente-con-jquery/' rel='bookmark' title='Mostrar elementos secuencialmente con Jquery'>Mostrar elementos secuencialmente con Jquery</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/social-media/cambiar-el-status-de-facebook-desde-una-web-externa-o-blog/' rel='bookmark' title='Cambiar el status de facebook desde una web externa o blog.'>Cambiar el status de facebook desde una web externa o blog.</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.pedroventura.com/blog_programacion/javascript/cambiar-el-nombre-de-una-clase-css-con-javascript-y-con-jquery/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Autocomplementador en AJAX</title>
		<link>http://www.pedroventura.com/blog_programacion/javascript/autocomplementador-en-ajax/</link>
		<comments>http://www.pedroventura.com/blog_programacion/javascript/autocomplementador-en-ajax/#comments</comments>
		<pubDate>Thu, 14 Aug 2008 10:00:48 +0000</pubDate>
		<dc:creator>Pedro Ventura</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[tutoriales]]></category>

		<guid isPermaLink="false">http://www.pedroventura.com/blog_programacion/?p=15</guid>
		<description><![CDATA[Como hacer un Autocomplementador simple en AJAX Pasos para la implementación de éste módulo: incluir el siguiente .js entre las etiquetas &#60;head&#62;&#60;/head&#62; Ver .js y las funciones javascript que podréis ver en la Demo Online Incluir también los estilos predeterminados, también los podréis ver en el código fuente de éste archivo. En la carpeta donde se encuentra éste ejemplo hay un php &#8220;rpc.php&#8221; que contiene la llamada a la base de datos y el cual devuelve el contenido. &#60;?php // PHP5 Implementation - uses MySQLi. // mysqli('localhost', 'yourUsername', 'yourPassword', 'yourDatabase'); $db = new mysqli('localhost', 'USERNAME' ,'PASSWORD', 'DATABASE'); if(!$db) { // Show error if we cannot connect. echo 'ERROR: Could not connect to the database.'; } else { // Is there a posted query string? if(isset($_POST['queryString'])) { $queryString = $db-&#62;real_escape_string($_POST['queryString']); // Is the string length greater than 0? if(strlen($queryString) &#62;0) { // Run the query: We use LIKE '$queryString%' // The percentage sign is a wild-card, in my example of countries it works like this... // $queryString = 'Uni'; // Returned data = 'United States, United Kindom'; // YOU NEED TO ALTER THE QUERY TO MATCH YOUR DATABASE. // eg: SELECT yourColumnName FROM yourTable WHERE yourColumnName LIKE '$queryString%' LIMIT 10 $query [...]


Related posts:<ol><li><a href='http://www.pedroventura.com/blog_programacion/cakephp/cakephp-ajax-start-voting-sistema-de-votaciones-en-ajax-mediante-estrellas/' rel='bookmark' title='Cakephp ajax start voting. Sistema de votaciones en ajax mediante estrellas'>Cakephp ajax start voting. Sistema de votaciones en ajax mediante estrellas</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/cakephp/ajax-y-jquery-en-cakephp/' rel='bookmark' title='ajax y jquery en cakephp'>ajax y jquery en cakephp</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/linux/seguridad-en-linux-instalar-chkrootkit/' rel='bookmark' title='Seguridad en Linux. Instalar chkrootkit'>Seguridad en Linux. Instalar chkrootkit</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/php/php-meter-una-sentencia-if-dentro-de-un-echo/' rel='bookmark' title='PHP meter una sentencia if dentro de un echo'>PHP meter una sentencia if dentro de un echo</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/javascript/obtener-el-nombre-del-dominio-con-javascript/' rel='bookmark' title='obtener el nombre del dominio con javascript'>obtener el nombre del dominio con javascript</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p style="text-align: left;"><strong><em>Como hacer un Autocomplementador simple en AJAX</em></strong></p>
<p style="text-align: center;"><a href="http://blogpv2011.s3.amazonaws.com/wp-content/uploads/2008/08/autocomplete_2.png"><img class="alignnone size-medium wp-image-16 alignright" style="float: right;" title="autocomplete_2" src="http://blogpv2011.s3.amazonaws.com/wp-content/uploads/2008/08/autocomplete_2-252x300.png" alt="" width="252" height="300" /></a></p>
<p>Pasos para la implementación de éste módulo:</p>
<ul>
<li>incluir el siguiente .js entre las etiquetas &lt;head&gt;&lt;/head&gt;</li>
</ul>
<p><a href="http://www.pedroventura.com/demos/autocomplete/jquery-1.2.1.pack.js">Ver .js</a></p>
<p>y las funciones javascript que podréis ver en la <a href="http://www.pedroventura.com/demos/autocomplete/auto.html" target="_blank"><strong>Demo Online </strong></a></p>
<ul>
<li>Incluir también los estilos predeterminados, también los podréis ver en el código fuente de éste archivo.</li>
</ul>
<ul>
<li> En la carpeta donde se encuentra éste ejemplo hay un php &#8220;rpc.php&#8221; que contiene la llamada a la base de datos y el cual devuelve el contenido.</li>
</ul>
<pre class="brush: php; title: ;">
    &lt;?php

    // PHP5 Implementation - uses MySQLi.
    // mysqli('localhost', 'yourUsername', 'yourPassword', 'yourDatabase');
    $db = new mysqli('localhost', 'USERNAME' ,'PASSWORD', 'DATABASE');

    if(!$db) {
    // Show error if we cannot connect.
    echo 'ERROR: Could not connect to the database.';
    } else {
    // Is there a posted query string?
    if(isset($_POST['queryString'])) {
    $queryString = $db-&gt;real_escape_string($_POST['queryString']);

    // Is the string length greater than 0?

    if(strlen($queryString) &gt;0) {
    // Run the query: We use LIKE '$queryString%'
    // The percentage sign is a wild-card, in my example of countries it works like this...
    // $queryString = 'Uni';
    // Returned data = 'United States, United Kindom';

    // YOU NEED TO ALTER THE QUERY TO MATCH YOUR DATABASE.
    // eg: SELECT yourColumnName FROM yourTable WHERE yourColumnName LIKE '$queryString%' LIMIT 10

    $query = $db-&gt;query(&quot;SELECT your_column FROM your_db_table WHERE your_column LIKE '$queryString%' LIMIT 10&quot;);
    if($query) {
    // While there are results loop through them - fetching an Object (i like PHP5 btw!).
    while ($result = $query -&gt;fetch_object()) {
    // Format the results, im using &lt;li&gt; for the list, you can change it.
    // The onClick function fills the textbox with the result.

    // YOU MUST CHANGE: $result-&gt;value to $result-&gt;your_colum
    echo '&lt;li onClick=&quot;fill(\''.$result-&gt;value.'\');&quot;&gt;'.$result-&gt;value.'&lt;/li&gt;';
    }
    } else {
    echo 'ERROR: There was a problem with the query.';
    }
    } else {
    // Dont do anything.
    } // There is a queryString.
    } else {
    echo 'There should be no direct access to this script!';
    }
    }
    ?&gt;
</pre>
<p>Si usais SMARTY, habría que poner incluso menos código:</p>
<pre class="brush: php; title: ;">
    &lt;?
    include(&quot;/ruta_smarty_donde_teneis/config.php&quot;);
    include_once(&quot;/ruta_smarty_donde_teneis/sql.lib.php&quot;);
    abrirConexion();// o la funcion que hayas nombrado para crear una conexión
    $busqueda= $_POST['queryString']; // $_POST['queryString'] es la variable que lleva lo que estamos insertando en el formulario de búsqueda
    $sql_search=&quot;SELECT NOMBRE_CAMPO FROM NOMBRE_TABLA WHERE NOMBRE_CAMPO LIKE '$busqueda%' LIMIT 10&quot;;
    $db-&gt;query($sql_search);
    //$searching = $db-&gt;fetchObject();
    while ($searching = $db -&gt;fetchObject())
    {
    echo '&lt;li onClick=&quot;fill(\''.$searching-&gt;NombreFamoso.'\');&quot;&gt;'.$searching-&gt;NombreFamoso.'&lt;/li&gt;';
    }

    ?&gt;
</pre>
<p class="listadoTagRelacionados">Tags de búsquedas:</p><p class="listadoTagRelacionados"> jquery <li onclick=fill</p><!-- SEO SearchTerms Tagging 2 Plugin -->

<p>Related posts:<ol><li><a href='http://www.pedroventura.com/blog_programacion/cakephp/cakephp-ajax-start-voting-sistema-de-votaciones-en-ajax-mediante-estrellas/' rel='bookmark' title='Cakephp ajax start voting. Sistema de votaciones en ajax mediante estrellas'>Cakephp ajax start voting. Sistema de votaciones en ajax mediante estrellas</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/cakephp/ajax-y-jquery-en-cakephp/' rel='bookmark' title='ajax y jquery en cakephp'>ajax y jquery en cakephp</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/linux/seguridad-en-linux-instalar-chkrootkit/' rel='bookmark' title='Seguridad en Linux. Instalar chkrootkit'>Seguridad en Linux. Instalar chkrootkit</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/php/php-meter-una-sentencia-if-dentro-de-un-echo/' rel='bookmark' title='PHP meter una sentencia if dentro de un echo'>PHP meter una sentencia if dentro de un echo</a></li>
<li><a href='http://www.pedroventura.com/blog_programacion/javascript/obtener-el-nombre-del-dominio-con-javascript/' rel='bookmark' title='obtener el nombre del dominio con javascript'>obtener el nombre del dominio con javascript</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.pedroventura.com/blog_programacion/javascript/autocomplementador-en-ajax/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk: basic (Feed is rejected)
Page Caching using disk: enhanced
Database Caching 60/198 queries in 1.107 seconds using disk: basic
Object Caching 3749/3983 objects using disk: basic
Content Delivery Network via Amazon Web Services: S3: blogpv2011.s3.amazonaws.com

Served from: www.pedroventura.com @ 2012-02-06 21:28:03 -->
