{"id":1263,"date":"2011-12-14T22:31:53","date_gmt":"2011-12-14T22:31:53","guid":{"rendered":"https:\/\/www.jose-aguilar.com\/blog\/?p=1263"},"modified":"2012-02-26T11:51:56","modified_gmt":"2012-02-26T11:51:56","slug":"search-simple-php","status":"publish","type":"post","link":"https:\/\/www.jose-aguilar.com\/blog\/search-simple-php\/","title":{"rendered":"Implementaci\u00f3n de un buscador sencillo con PHP"},"content":{"rendered":"<p>En muchas Webs es necesario disponer de un buscador efectivo para que los usuarios puedan localizar de forma directa lo que est\u00e1n buscando.<\/p>\n<p>En PHP podemos programar f\u00e1cilmente un buscador que realizar\u00e1 una b\u00fasqueda en los registros de la base de datos.<\/p>\n<p>En el ejemplo que vamos a ilustrar, veremos como localizar art\u00edculos de un blog mediante consulta a la base de datos y mostrar los resultados.<\/p>\n<p>En el &lt;body&gt; de nuestra p\u00e1gina est\u00e1 claro que vamos a necesitar un formulario. Lo podr\u00edamos hacer como el siguiente:<\/p>\n<pre>&lt;form action=\"index.php\" method=\"POST\"&gt;\r\nPalabras clave\r\n&lt;input type=\"text\" id=\"keywords\" name=\"keywords\" size=\"30\" maxlength=\"30\"&gt;\r\n&lt;input type=\"submit\" name=\"search\" id=\"search\" value=\"Buscar\"&gt;\r\n&lt;\/form&gt;<\/pre>\n<p>Como puedes ver, el formulario para implementar un buscador puede ser muy sencillo, aunque podr\u00eda ser mucho m\u00e1s complejo, como por ejemplo poder fijar unas fechas de inicio y fin, poder elegir la categor\u00eda del art\u00edculo entre otros.<\/p>\n<p>En este caso, simplemente vamos a capturar las palabras clave a buscar. Tenemos un bot\u00f3n tipo Submit que al pulsarlo se env\u00edan los datos mediante el m\u00e9todo POST.<\/p>\n<p>Seguidamente, tendremos el c\u00f3digo PHP que se encarga de procesar los datos enviados.<\/p>\n<pre>&lt;?php\r\n\/\/Si se ha pulsado el bot\u00f3n de buscar\r\nif (isset($_POST['search'])) {\r\n\u00a0\u00a0 \u00a0\/\/Recogemos las claves enviadas\r\n\u00a0\u00a0 \u00a0$keywords = $_POST['keywords'];\r\n\r\n\u00a0\u00a0 \u00a0\/\/Conectamos con la base de datos en la que vamos a buscar\r\n\u00a0\u00a0 \u00a0$conexion = mysql_connect(\"localhost\", \"USUARIO\", \"PASSWORD\");\r\n\u00a0\u00a0 \u00a0mysql_select_db(\"NOMBRE_BASE_DE_DATOS\", $conexion);\r\n\r\n\u00a0\u00a0 \u00a0$query = \"SELECT fecha, titulo, DATE_FORMAT(post_date, '%d-%m-%Y') as fecha\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0FROM TABLA\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0WHERE status = '1'\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0AND (contenido LIKE '%\" . $keywords . \"%'\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0OR titulo LIKE '%\" . $keywords . \"%')\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0ORDER BY fecha desc\";\r\n\r\n\u00a0\u00a0 \u00a0$query_searched = mysql_query($query, $conexion);\r\n\r\n\u00a0\u00a0 \u00a0$count_results = mysql_num_rows($query_searched);\r\n\r\n    \/\/Si ha resultados\r\n\u00a0\u00a0 \u00a0if ($count_results &gt; 0) {\r\n\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0echo '&lt;h2&gt;Se han encontrado '.$count_results.' resultados.&lt;\/h2&gt;';\r\n\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0echo '&lt;ul&gt;';\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0while ($row_searched = mysql_fetch_array($query_searched)) {\r\n            \/\/En este caso solo mostramos el titulo y fecha de la entrada\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0echo '&lt;li&gt;&lt;a href=\"#\"&gt;'.$row_searched['titulo'].' ('.$row_searched['fecha'].')&lt;\/a&gt;&lt;\/li&gt;';\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0}\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0echo '&lt;\/ul&gt;';\r\n\u00a0\u00a0 \u00a0}\r\n\u00a0\u00a0 \u00a0else {\r\n        \/\/Si no hay registros encontrados\r\n\u00a0\u00a0 \u00a0\u00a0\u00a0 \u00a0echo '&lt;h2&gt;No se encuentran resultados con los criterios de b\u00fasqueda.&lt;\/h2&gt;';\r\n\u00a0\u00a0 \u00a0}\r\n}\r\n?&gt;<\/pre>\n<p>Como puedes ver, si est\u00e1s familiarizado con el c\u00f3digo PHP queda un c\u00f3digo muy simple. La complejidad del asunto dir\u00eda que recae en la query realizada que selecciona los datos necesarios de una tabla de art\u00edculos utilizando el comando LIKE %{keyword}% buscando en los campos titulo y contenido de las entradas.<\/p>\n<p><a href=\"https:\/\/www.jose-aguilar.com\/scripts\/php\/search-simple\/\">Ver ejemplo en funcionamiento<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>En muchas Webs es necesario disponer de un buscador efectivo para que los usuarios puedan localizar de forma directa lo que est\u00e1n buscando. En PHP podemos programar f\u00e1cilmente un buscador que realizar\u00e1 una b\u00fasqueda en los registros de la base de datos. En el ejemplo que vamos a ilustrar, veremos como localizar art\u00edculos de un [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":6469,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12,3],"tags":[68],"class_list":["post-1263","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-html","category-php","tag-buscadores"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Implementaci\u00f3n de un buscador sencillo con PHP - Jose Aguilar Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Implementaci\u00f3n de un buscador sencillo con PHP - Jose Aguilar Blog\" \/>\n<meta property=\"og:description\" content=\"En muchas Webs es necesario disponer de un buscador efectivo para que los usuarios puedan localizar de forma directa lo que est\u00e1n buscando. En PHP podemos programar f\u00e1cilmente un buscador que realizar\u00e1 una b\u00fasqueda en los registros de la base de datos. En el ejemplo que vamos a ilustrar, veremos como localizar art\u00edculos de un [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.jose-aguilar.com\/blog\/search-simple-php\/\" \/>\n<meta property=\"og:site_name\" content=\"Jose Aguilar Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/joseaguilarblog\" \/>\n<meta property=\"article:published_time\" content=\"2011-12-14T22:31:53+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2012-02-26T11:51:56+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2014\/10\/Imagen-no-disponible-282x300.png\" \/>\n\t<meta property=\"og:image:width\" content=\"282\" \/>\n\t<meta property=\"og:image:height\" content=\"300\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Jose Aguilar\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@JoseAguilarBlog\" \/>\n<meta name=\"twitter:site\" content=\"@JoseAguilarBlog\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Jose Aguilar\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/search-simple-php\/\",\"url\":\"https:\/\/www.jose-aguilar.com\/blog\/search-simple-php\/\",\"name\":\"Implementaci\u00f3n de un buscador sencillo con PHP - Jose Aguilar Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/search-simple-php\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/search-simple-php\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2014\/10\/Imagen-no-disponible-282x300.png\",\"datePublished\":\"2011-12-14T22:31:53+00:00\",\"dateModified\":\"2012-02-26T11:51:56+00:00\",\"author\":{\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/e6d485db1e1140866e95971d17105d11\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/search-simple-php\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.jose-aguilar.com\/blog\/search-simple-php\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/search-simple-php\/#primaryimage\",\"url\":\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2014\/10\/Imagen-no-disponible-282x300.png\",\"contentUrl\":\"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2014\/10\/Imagen-no-disponible-282x300.png\",\"width\":282,\"height\":300},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/search-simple-php\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\/\/www.jose-aguilar.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Implementaci\u00f3n de un buscador sencillo con PHP\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/#website\",\"url\":\"https:\/\/www.jose-aguilar.com\/blog\/\",\"name\":\"Jose Aguilar Blog\",\"description\":\"Desarrollo Web con PrestaShop, WordPress, PHP, jQuery y Ajax\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.jose-aguilar.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/e6d485db1e1140866e95971d17105d11\",\"name\":\"Jose Aguilar\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/abbfef5f1d75260c549d0f2c2842bb697ba1aadff3b2836b39d2590c8a625415?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/abbfef5f1d75260c549d0f2c2842bb697ba1aadff3b2836b39d2590c8a625415?s=96&d=mm&r=g\",\"caption\":\"Jose Aguilar\"},\"description\":\"Director ejecutivo y tecnol\u00f3gico en JA Modules. Experto programador PrestaShop y Experto programador WordPress.\",\"sameAs\":[\"https:\/\/plus.google.com\/114357189801512615537\"],\"url\":\"https:\/\/www.jose-aguilar.com\/blog\/author\/josea902\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Implementaci\u00f3n de un buscador sencillo con PHP - Jose Aguilar Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"og_locale":"es_ES","og_type":"article","og_title":"Implementaci\u00f3n de un buscador sencillo con PHP - Jose Aguilar Blog","og_description":"En muchas Webs es necesario disponer de un buscador efectivo para que los usuarios puedan localizar de forma directa lo que est\u00e1n buscando. En PHP podemos programar f\u00e1cilmente un buscador que realizar\u00e1 una b\u00fasqueda en los registros de la base de datos. En el ejemplo que vamos a ilustrar, veremos como localizar art\u00edculos de un [&hellip;]","og_url":"https:\/\/www.jose-aguilar.com\/blog\/search-simple-php\/","og_site_name":"Jose Aguilar Blog","article_publisher":"https:\/\/www.facebook.com\/joseaguilarblog","article_published_time":"2011-12-14T22:31:53+00:00","article_modified_time":"2012-02-26T11:51:56+00:00","og_image":[{"width":282,"height":300,"url":"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2014\/10\/Imagen-no-disponible-282x300.png","type":"image\/png"}],"author":"Jose Aguilar","twitter_card":"summary_large_image","twitter_creator":"@JoseAguilarBlog","twitter_site":"@JoseAguilarBlog","twitter_misc":{"Escrito por":"Jose Aguilar","Tiempo de lectura":"2 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.jose-aguilar.com\/blog\/search-simple-php\/","url":"https:\/\/www.jose-aguilar.com\/blog\/search-simple-php\/","name":"Implementaci\u00f3n de un buscador sencillo con PHP - Jose Aguilar Blog","isPartOf":{"@id":"https:\/\/www.jose-aguilar.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.jose-aguilar.com\/blog\/search-simple-php\/#primaryimage"},"image":{"@id":"https:\/\/www.jose-aguilar.com\/blog\/search-simple-php\/#primaryimage"},"thumbnailUrl":"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2014\/10\/Imagen-no-disponible-282x300.png","datePublished":"2011-12-14T22:31:53+00:00","dateModified":"2012-02-26T11:51:56+00:00","author":{"@id":"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/e6d485db1e1140866e95971d17105d11"},"breadcrumb":{"@id":"https:\/\/www.jose-aguilar.com\/blog\/search-simple-php\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.jose-aguilar.com\/blog\/search-simple-php\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.jose-aguilar.com\/blog\/search-simple-php\/#primaryimage","url":"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2014\/10\/Imagen-no-disponible-282x300.png","contentUrl":"https:\/\/www.jose-aguilar.com\/blog\/wp-content\/uploads\/2014\/10\/Imagen-no-disponible-282x300.png","width":282,"height":300},{"@type":"BreadcrumbList","@id":"https:\/\/www.jose-aguilar.com\/blog\/search-simple-php\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/www.jose-aguilar.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Implementaci\u00f3n de un buscador sencillo con PHP"}]},{"@type":"WebSite","@id":"https:\/\/www.jose-aguilar.com\/blog\/#website","url":"https:\/\/www.jose-aguilar.com\/blog\/","name":"Jose Aguilar Blog","description":"Desarrollo Web con PrestaShop, WordPress, PHP, jQuery y Ajax","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.jose-aguilar.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Person","@id":"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/e6d485db1e1140866e95971d17105d11","name":"Jose Aguilar","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.jose-aguilar.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/abbfef5f1d75260c549d0f2c2842bb697ba1aadff3b2836b39d2590c8a625415?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/abbfef5f1d75260c549d0f2c2842bb697ba1aadff3b2836b39d2590c8a625415?s=96&d=mm&r=g","caption":"Jose Aguilar"},"description":"Director ejecutivo y tecnol\u00f3gico en JA Modules. Experto programador PrestaShop y Experto programador WordPress.","sameAs":["https:\/\/plus.google.com\/114357189801512615537"],"url":"https:\/\/www.jose-aguilar.com\/blog\/author\/josea902\/"}]}},"_links":{"self":[{"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/posts\/1263","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/comments?post=1263"}],"version-history":[{"count":0,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/posts\/1263\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/media\/6469"}],"wp:attachment":[{"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/media?parent=1263"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/categories?post=1263"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.jose-aguilar.com\/blog\/wp-json\/wp\/v2\/tags?post=1263"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}