{"id":77,"date":"2013-12-11T23:06:18","date_gmt":"2013-12-11T23:09:24","guid":{"rendered":"https:\/\/41e66ctoapmj.jpg"},"modified":"2015-07-16T19:14:36","modified_gmt":"2015-07-17T01:14:36","slug":"caja-de-texto-con-opcion-de-autocompletado-utilizando-php-mysql-y-jquery","status":"publish","type":"post","link":"https:\/\/emanuelpaxtian.com\/blog\/caja-de-texto-con-opcion-de-autocompletado-utilizando-php-mysql-y-jquery\/","title":{"rendered":"Caja de texto con opci\u00f3n de autocompletado utilizando php, mysql y jquery"},"content":{"rendered":"<p>Voy a mostrar la forma de como autocompletar en una caja de texto, lo vamos a hacer utilizando el widget Autocomplete de jQueryUI, PHP para el c\u00f3digo a ejecutarse en el servidor y MySQL como gestor de base de datos.<\/p>\n<h3>Ejemplo: Informaci\u00f3n alumno<\/h3>\n<p>El ejemplo consiste en lo siguiente: Tendremos un formulario HTML en el cual el usuario captura una matricula(con autocompletar), una vez capturada la matricula la informaci\u00f3n del alumno se rellenar\u00e1 autom\u00e1ticamente.<\/p>\n<h3>Formulario HTML<\/h3>\n<p>El formulario tendr\u00e1 4 campos: matricula, nombre, paterno y materno.<span id=\"more-544\"><\/span><\/p>\n<pre class=\"brush: php; title: ; notranslate\" title=\"\">&lt;form&gt;\r\n   &lt;label for=\"matricula\"&gt;Matricula:&lt;\/label&gt;\r\n   &lt;input type=\"text\" id=\"matricula\" name=\"matricula\" value=\"\"\/&gt; &lt;br\/&gt;\r\n   &lt;label for=\"nombre\"&gt;Nombre:&lt;\/label&gt;\r\n   &lt;input type=\"text\" id=\"nombre\" name=\"nombre\" value=\"\"\/&gt; &lt;br\/&gt;\r\n   &lt;label for=\"paterno\"&gt;Paterno:&lt;\/label&gt;\r\n   &lt;input type=\"text\" id=\"paterno\" name=\"paterno\" value=\"\"\/&gt; &lt;br\/&gt;\r\n   &lt;label for=\"materno\"&gt;Materno:&lt;\/label&gt;\r\n   &lt;input type=\"text\" id=\"materno\" name=\"materno\" value=\"\"\/&gt;\r\n&lt;\/form&gt;\r\n\r\n<\/pre>\n<h3>jQuery<\/h3>\n<p>Lo primero que tenemos que hacer es incluir la libreria <a href=\"http:\/\/jquery.com\/\" target=\"_blank\"> jQuery<\/a> y<a href=\"http:\/\/jqueryui.com\/\" target=\"_blank\"> jQueryUI<\/a> , las podemos descargar y enlazar de forma local o lo podemos hacer desde google. Tambien es necesario incluir el css del <a href=\"as\u00ed como la hoja de estilos del tema seleccionado\" target=\"_blank\">tema jQueryUI<\/a> que se desea utilizar. Todo esto lo ponemos dentro de la etiqueta &lt;head&gt;<\/p>\n<pre class=\"brush: php; title: ; notranslate\" title=\"\">&lt;script type=\"text\/javascript\" src=\"\/\/ajax.googleapis.com\/ajax\/libs\/jquery\/2.0.0\/jquery.min.js\"&gt;&lt;\/script&gt;\r\n&lt;script type=\"text\/javascript\" src=\"\/\/ajax.googleapis.com\/ajax\/libs\/jqueryui\/1.10.2\/jquery-ui.min.js\"&gt;&lt;\/script&gt;\r\n&lt;link href=\"css\/jqueryui.css\" type=\"text\/css\" rel=\"stylesheet\"\/&gt;\r\n<\/pre>\n<p>Posteriormente colocamos la declaraci\u00f3n $(document).ready y agregamos el siguiente c\u00f3digo.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">$(document).ready(function(){\r\n    $( \"#matricula\" ).autocomplete({\r\n    \tsource: \"buscaralumno.php\",\r\n    \tminLength: 2\r\n    });\r\n\r\n    $(\"#matricula\").focusout(function(){\r\n    \t$.ajax({\r\n      \t    url:'alumno.php',\r\n    \t    type:'POST',\r\n    \t    dataType:'json',\r\n    \t    data:{ matricula:$('#matricula').val()}\r\n    \t}).done(function(respuesta){\r\n    \t    $(\"#nombre\").val(respuesta.nombre);\r\n    \t    $(\"#paterno\").val(respuesta.paterno);\r\n    \t    $(\"#materno\").val(respuesta.materno);\r\n    \t});\r\n    });\r\n});\r\n<\/pre>\n<p>En la primer parte agregamos al cuadro de texto matricula el widget autocomplet de jQuery UI y configuramos sus opciones:<\/p>\n<ul>\n<li><strong>source:<\/strong> Indica a partir de donde tomar\u00e1 la lista de valores que va a mostrar al usuario, en este ejemplo va a ser un archivo llamado buscaralumno.php el cual devolver\u00e1 un arreglo json con los valores a mostrar.<\/li>\n<li><strong>minLength:<\/strong> Indica los caracteres m\u00ednimos que se tienen que capturar para que haga la petici\u00f3n al servidor y presente la lista.<\/li>\n<\/ul>\n<p>La segunda parte consiste en solicitar al servidor los datos cuando la caja de texto matricula pierda el foco, una vez que esto pasa se hace una petici\u00f3n ajax que devolver\u00e1 la informaci\u00f3n del alumno, los datos los va a devolver como json.<\/p>\n<h3>PHP<\/h3>\n<p>En el servidor vamos a tener 2 archivos PHP, el primero llamado buscaralumno.php que va a devolver la lista de matriculas y el segundo, alumno.php devolver\u00e1 la informacion de un alumno en particular.<\/p>\n<p><strong>buscaralumno.php<\/strong><\/p>\n<p>Lo que hacemos es este archivo es almacenar en la variable matricula el dato que se va a buscar, dicho valor se obtiene de la variable global $_GET con el nombre term, posteriormente se crea una conexi\u00f3n a la base de datos y se ejecuta la consulta que devolver\u00e1 la lista de matriculas, las cuales se almacenan en un arreglo llamado matriculas, al final ese arreglo se pasa a json y se imprime para que regrese la respuesta.<\/p>\n<pre class=\"brush: php; title: ; notranslate\" title=\"\">$matricula = $_GET['term'];\r\n\r\n$conexion = new mysqli('servidor','usuario','password','basedatos',3306);\r\n\r\n$consulta = \"SELECT matricula FROM tblalumno WHERE matricula LIKE '%$matricula%'\";\r\n\r\n$result = $conexion-&gt;query($consulta);\r\n\r\nif($result-&gt;num_rows &gt; 0){\r\n    while($fila = $result-&gt;fetch_array()){\r\n        $matriculas[] = $fila['matricula'];\r\n    }\r\necho json_encode($matriculas);\r\n}\r\n\r\n<\/pre>\n<p><strong>alumno.php<\/strong><br \/>\nEn el archivo alumno.php tenemos el codigo que va a devolver la informaci\u00f3n del alumno en base a la matricula seleccionada, dicha matricula la recibimos mediante la variable global $_POST, se crea la conexi\u00f3n a la base de datos y se ejecuta la consulta. Posteriormente se agrega a la variable respuesta los datos del alumno y se imprime como json.<\/p>\n<pre class=\"brush: php; title: ; notranslate\" title=\"\">$matricula = $_POST['matricula'];\r\n$conexion = new mysqli('servidor','usuario','password','basedatos',3306);\r\n$consulta = \"SELECT nombre,paterno,materno FROM tblalumno WHERE matricula = '$matricula'\";\r\n$result = $conexion-&gt;query($consulta);\r\n\r\n$respuesta = new stdClass();\r\nif($result-&gt;num_rows &gt; 0){\r\n    $fila = $result-&gt;fetch_array();\r\n    $respuesta-&gt;nombre = $fila['nombre'];\r\n    $respuesta-&gt;paterno = $fila['paterno'];\r\n    $respuesta-&gt;materno = $fila['materno'];\r\n}\r\necho json_encode($respuesta);\r\n\r\n<\/pre>\n<p>Eso es todo en el ejercicio del dia de hoy, si les fue de ayuda dejen sus comentarios, recomienden el blog y sigan practicando. Aqui les dejo el link de descarga.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Voy a mostrar la forma de como autocompletar en una caja de texto, lo vamos a hacer utilizando el widget Autocomplete de jQueryUI, PHP para el c\u00f3digo a ejecutarse en&hellip;<\/p>\n","protected":false},"author":1,"featured_media":449,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5],"tags":[],"class_list":["post-77","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-php"],"_links":{"self":[{"href":"https:\/\/emanuelpaxtian.com\/blog\/wp-json\/wp\/v2\/posts\/77","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/emanuelpaxtian.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/emanuelpaxtian.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/emanuelpaxtian.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/emanuelpaxtian.com\/blog\/wp-json\/wp\/v2\/comments?post=77"}],"version-history":[{"count":0,"href":"https:\/\/emanuelpaxtian.com\/blog\/wp-json\/wp\/v2\/posts\/77\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/emanuelpaxtian.com\/blog\/wp-json\/wp\/v2\/media\/449"}],"wp:attachment":[{"href":"https:\/\/emanuelpaxtian.com\/blog\/wp-json\/wp\/v2\/media?parent=77"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/emanuelpaxtian.com\/blog\/wp-json\/wp\/v2\/categories?post=77"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/emanuelpaxtian.com\/blog\/wp-json\/wp\/v2\/tags?post=77"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}