Author Archive

Como usar AJAX Auto Suggest V2.0

Posted on May 16, 2010 by Damian11 Comments

AJAX Autosuggest v2

Yo personalmente las pocas veces que he implementado un Auto Suggest o caja de sugerencias en mis proyectos he utilizado AJAX Auto Suggest V2.0. No es que haya probado muchos , pero en su día este fue el que más me convencio por su facilidad de uso y de personalización.

Para utilizarlo primero debemos incluir sus archivos:

<link type="text/css" rel="stylesheet" href="autosuggest_inquisitor.css">

<script src="bsn.AutoSuggest_2.1.3.js" type="text/javascript"></script>

Crear un campo de texto y asignarle un Id:

<input type="text" style="width: 200px; color: rgb(204, 204, 204);" id="materiales_input" name="materiales" autocomplete="off">

Luego definimos algunas opciones y creamos el objeto autosuggest:

function autosuggest(){
var options = {
    script: "get_materiales.php?limit=6&",//página la cual recibirá la llamada AJAX
    varname: "materiales",// nombre de la variable que contendra el valor escrito
    json:false,//Podemos elegir JSON o XML
    maxresults:10,//Un máximo de resulados para mostrar
       timeout:9999,//numero en milisegundos antes de que se cierre la lista de valores sugeridos
    noresults:'Ingresar nuevo material a la base de datos' //valor que muestra en caso de no encontrar resultados
};
var as = new bsn.AutoSuggest('materiales_input',  options); //creamos el objeto AutoSuggest
}

Para más opciones consultar la página del autor.

Llamamos a la función cuando cargue la página:

<body onload="autosuggest();">

Por último creamos un archivo PHP que devuelva los resultados de búsqueda(en este caso XML) para que se muestren en las sugerencias.

get_materiales.php:

<?
header ("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Fecha del pasado
    header ("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); // siempre modificado
    header ("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
    header ("Pragma: no-cache"); // HTTP/1.0

include_once('config/db.php');
$conn=get_db_conn();
$input=utf8_decode(cleanQuery($_GET['materiales']));
$query='SELECT * FROM categoria_materiales WHERE nombreMaterial LIKE \'%'.$input.'%\'';
$materiales=mysql_query($query,$conn);

if (isset($_REQUEST['json']))
    {
        header("Content-Type: application/json" );
   
        echo "{\"results\": [";
        $arr = array();
        while ($row=mysql_fetch_assoc($materiales))
        {
           
            $arr[] = "{\"id\": \"".$row['idCatMaterial']."\", \"value\": \"".$row['nombreMaterial']."\", \"info\": \"\"}";
        }
        echo implode(", ", $arr);
        echo "]}";
    }
    else
    {
header("Content-Type: text/xml");

        echo "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" ?><results>";
        while ($row=mysql_fetch_assoc($materiales))
        {
       
            echo "<rs id=\"".$row['idCatMaterial']."\" info=\"\">".$row['nombreMaterial']."</rs>";
        }
        echo "</results>";
       
    }  
   
    ?>

Explicando get_materiales.php:


Formato XML:

<results>
    <rs id="1" info="Cheshire">Foobar</rs>
    <rs id="2" info="">Foobarfly</rs>
    <rs id="3" info="">Foobarnacle</rs>
</results>


Formato JSON:

{ results: [
    { id: "1", value: "Foobar", info: "Cheshire" },
    { id: "2", value: "Foobarfly", info: "" },
    { id: "3", value: "Foobarnacle", info: "Essex" }
] }

Como anotacíon en mi caso al enviar el formulario compruebo si el material ingresado existe en la base de datos y sino existe lo agrego. Por ese motivo en noresults muestro el mensaje de “Añadir a la base de datos”.Para ello hago lo siguiente:

<?
include_once('db.php');
$conn=get_db_conn();
if($_POST['materiales']!=''){
    $material=cleanQuery($_POST['materiales']);
    $existe=mysql_query("SELECT * FROM materiales WHERE nombreMaterial ='$material'",$conn);
                    if (mysql_num_rows($existe) == 0) mysql_query("INSERT INTO materiales (nombreMaterial) VALUES ('$material')",$conn);     
       
}
?>

Con todo esto tendriamos el autosuggest o caja de sugerencias funcionando a la perfección.

Pueden ver un EJEMPLO FUNCIONANDO
O tambien DESCARGARSE EL CÓDIGO

Un saludo a todos, espero sus comentarios!

Tags: ,

Filed Under: Recursos, Tutoriales

Millions eLottery para eRepublik

Posted on May 11, 2010 by Damian1 Comment

eLotteryPara quien no conosca eRepublik decirles que es un juego online que vengo jugando 1 mes o cosa así. Al principio aburria un poco pero las opciones van aumentando a medida que uno juega. Basicamente se trata de un mundo online , donde uno trabaja , come, o lucha por su pais (en mi caso Argentina). Además con el tiempo uno puede crear sus propias companias , organizaciones o partidos políticos pudiendo llegar a ser un magnate de los negocios o presidente del pais.

El caso es que el otro día andaba aburrido y se me ocurrio crear un sistema de loteria para eRepublik basado en los números ganadores de la famosa lotería española ONCE (www.once.es).

Así es como nacio Millions eLottery. Si algun día les da por jugar , no se olviden que tienen la oportunidad de hacerse eMillonarios :D

Saludoss

PD:Si son nuevos usen ESTE LINK para registrarse así me dan un poco de ORO :P

Tags: ,

Filed Under: Juegos

JQuery nightMode Plugin

Posted on May 1, 2010 by Damian3 Comments

Download JQuery nightMode Plugin

/////////////////////////ESPAÑOL //////////////////////

Anoche estaba aburrido y me puse a trabajar en un plugin para JQuery ya que nunca habia echo ninguno . Así nacio nightMode Plugin que es simplemente un script chiquitito que cambia el color de las letras y el fondo de pantalla. Con eso logramos ahorrar un poco de energia apagando algunos pixeles de nuestra pantalla y además nos facilita la lectura. Espero que les guste!!

El color tanto de las letras o el fondo se puede cambiar pasando opciones.

Uso:

 <a id="nightmode">Turn nightmode On/off</a>
 $(document).ready(function(){

               $('#nightmode').click(function(){
                           $('body').nightMode();
                });
 });

Tan solo cambiar body por cualquier selector válido

También se puede ejecutar con opciones

 var options={
      color: '#ffffff',
     background:'#ccc'
 }
 $('body').nightMode(options);

Pueden probar como funciona haciendo click en la lamparita que aparece en la parte superior derecha de mi blog :D

Descargar JQuery nightMode Plugin

////////////////////////ENGLISH/////////////////////////////

JQuery nightMode Plugin
its a funny tiny plugin that will allow you to change your background and letter colors for a night mode. Saving energy turning off pixels of your screen and allowing you to have a confortable read .

Letter colors and background can be moddified by options

Ussage:

 <a id="nightmode">Turn nightmode On/off</a>
 $(document).ready(function(){

               $('#nightmode').click(function(){
                           $('body').nightMode();
                });
 });

Just change body to any valid selector you wish

Can also be called with options:

 var options={
      color: '#ffffff',
      background:'#ccc'
 }
 $('body').nightMode(options);

You can try how it works by clicking on the light bulb on the top right corner of my blog :D
Download JQuery nightMode Plugin

Tags: , ,

Filed Under: JQuery, Plugins

Windows 7 Dispositivos e Impresoras (Devices and Printers)

Posted on April 19, 2010 by Damian1 Comment

No suelo dar soluciones a Windows en mi blog pero este problema me hizo perder bastante tiempo, y lo quiero compartir con ustedes.
Mi abuelo del cual estoy orgulloso por como usa la computadora y chatea con 81 años , tambien es un genio en crearme problemas al estropear su maquina de las formas menos pensadas.

La ultima que se mandó fue que misteriosamente su panel de Dispositivos e Impresoras dejó de funcionar. Cuando hace click en el, aparece una ventana MS-DOS que se cierra al instante y la ventana de Dispositivos e Impresoras queda en blanco cargando por la eternidad.

Para mucha gente este problema es debido al servicio de BLUETOOTH ( aunque no tuvieran un bluetooth instalado ) y para ello lo solucionaban facilmente haciendo los siguientes pasos.

Ir a Inicio, en la barra de búsqueda escribir "servicios" y luego enter.
En el panel de servicios, buscar el servicio llamado "Servicio de compatibilidad con Bluetooth".
Dar doble-click en el, en el cuadro de dialogo, en la parte donde dice Tipo de inicio: Manual, cambiarlo a autómatico.

Al tener en autómatico el servicio windows despejará el problema y se solventa el problema de que se quedaba tildado en bluetooth, dispositivos e impresoras y la desconexion de los dispositivos usb.

Bien , yo fui uno de los cuantos que despues de realizar estos pasos siguió todo igual.Así que segui buscando soluciones y soluciones. Hasta probe un archivo de explorer8-reged.cmd que tampoco hizo nada.

Despues de investigar un par de dias llegué a la conclusión de que el archivo DeviceDisplayObjectProvider.exe estaba corrupto y me decidí a sustituirlo por uno que funcione. Pero esto tampoco fue sencillo , así que les dejo los pasos a continuación.

Primero tenemos que tomar control del archivo de la siguiente forma: (Abrir ventana MS-DOS escribiendo cmd en tu barra de búsqueda)

    takeown /f C:\Windows\System32\DeviceDisplayObjectProvider.exe

Eso nos va a convertir en propietarios del archivo , aunque aun no tendremos derechos sobre el. Para ello hacemos:(modificar TuNombreDeUsuario con lo que corresponda)

    cacls C:\Windows\System32\DeviceDisplayObjectProvider.exe /G TuNombreDeUsuario:F

Ahora ya podremos borrar el archivo corrupto y copiar el archivo correcto

cd C:\Windows\System32\
rename DeviceDisplayObjectProvider.exe  DeviceDisplayObjectProvider.old

copy c:\ubicacionDelArchivoDescargado\DeviceDisplayObjectProvider.exe  C:\Windows\System32\DeviceDisplayObjectProvider.exe

UPDATE : Hacer lo mismo con DeviceCentral.dll y DMRC.dll

DECARGAR DeviceDisplayObjectProvider.exe
Reiniciamos el PC y si todo salió bien . Volveremos a tener funcionando Dispositivos e Impresoras. Saludos a todos!!!!!

/////////////////////////ENGLISH VERSION//////////////////////////////////

Lot of people is having problems with devices and printers in Windows 7. Most of them fix the problem by changing the BLUETOOTH services by doing this:

Click Start button, type "services" into the search program and files box.
This brings up a list in the menu, select Services.
This should open a list of local services on your system.., Find 'Bluetooth Service" and make sure it has started.
Right click and set to 'automatic' (mine was already set), Select "Bluetooth Support Service" and start, set to automatic (mine was set on manual) --

After a restart most of users solved their problem. Anyway this was not my case. After several days looking for a solution i discover that my DeviceDisplayObjectProvider.exe file was corrupted. So here you have the steps to replace it with a working version.

First open a MS-DOS windows typen CMD in you search bar.
To take ownership of the file, you’ll need to use the takeown command. Here’s an example:

    takeown /f C:\Windows\System32\DeviceDisplayObjectProvider.exe

That will give you ownership of the file, but you still have no rights to delete it. Now you can run the cacls command to give yourself full control rights to the file:(change YourUsername with yours)

    cacls C:\Windows\System32\DeviceDisplayObjectProvider.exe /G YourUsername:F

Now we are able to rename the file and copy the working file

rename DeviceDisplayObjectProvider.exe  DeviceDisplayObjectProvider.old

copy c:\DownloadedFileLocation\DeviceDisplayObjectProvider.exe  C:\Windows\System32\DeviceDisplayObjectProvider.exe

UPDATE :Do the same with DeviceCentral.dll and DMRC.dll
DOWNLOAD DeviceDisplayObjectProvider.exe
Now lets do a restart and if everything is ok we should have working devices and printers again

Tags:

Filed Under: Windows

Acentos y caracteres especiales con Ajax y JQuery II parte

Posted on April 6, 2010 by Damian15 Comments

Hace un tiempo escribí un post acerca de los acentos y caracteres especiales con AJAX y JQuery que explicaba como salvar este problema en los formularios enviados por AJAX.

El problema es que esta solución no abarca cuando con JQuery hacemos un .load() de información con AJAX y para variar nos salen cuadraditos o rombos negros con un signo de interrogación adentro. con caracteres como á, é, í, ó, ú ,Á, É, Í, Ó, Ú, ñ, Ñ ,º ,ö, Ö, ü, Ü, etc

Para salvar esto tan solo tenemos que configurar JQuery.ajax() de la siguiente forma:

$.ajaxSetup({
'beforeSend' : function(xhr) {
xhr.overrideMimeType('text/html; charset=iso-8859-1');
}
});

Con esa opción forzamos que el encabezado de respuesta sea iso-8859-1 y no UTF-8.

UPDATE:

Este método solo funciona con FF ya que IE no soporta xhr.overrideMimeType como bien comento Ignacio en los comentarios. Una forma de solucionar esto es hacer lo siguiente:
Modificar el codigo inicial

$.ajaxSetup({
'beforeSend' : function(xhr) {
try{
xhr.overrideMimeType('text/html; charset=iso-8859-1');
}
catch(e){


}
}});

Y luego hay que agregar en nuestro archivo PHP

<?php header( 'Content-type: text/html; charset=iso-8859-1' );?>

Mandando el encabezado con PHP lograremos que funcione en IE. Un saludo , hagan pruebas y comenten que yo no tuve mucho tiempo.

UPDATE II:
Ignacio comenta que para ASP habria que usar el metodo :
Response.ContentType=”text/html; charset=iso-8859-1?

Un saludo espero que les haya servido de ayuda.

Tags: ,

Filed Under: JQuery

Buscador por Relevancia con mysql para tu web

Posted on March 6, 2010 by DamianNo Comments

Ando perdido últimamente, y practicamente no actualizo el blog. Eso es debido a que estoy inmerso en un Proyecto grande, con lanzamiento en varios paises al mismo tiempo y ocupo TODO mi tiempo libre y el que no tengo también en el. Pronto (espero) le voy a decir de que se trata.

Volviendo al tema original del post, les voy a enseñar como hacer un buscador por relevancia con mysql.
La forma tradicional que usamos al buscar con mysql es con el comando LIKE

SELECT * FROM anuncios WHERE titulo LIKE '%perro%' OR descripcion LIKE '%perro%'

Esto nos devuelve todos los anuncios que en el titulo o en la descripcion aparezca la palabra ‘perro’ o ‘caraperro’ o cualquier otra que contenga ‘perro’.
Estos resultado podriamos ordenarlos por ejemplo por la fecha de publicación, por el titulo, etc.

Pero que pasa cuando queremos ordenarlo por RELEVANCIA, osea queremos que el anuncio que hable más de perros aparesca primero y asi consecutivamente. Aqui es donde entra en juego la funcion de mysql FULL-TEXT .

Lo primero que tenemos que hacer antes de hacer un query en convertir nuestros campos en full-text .Para ello simplemente hacemos:

ALTER TABLE anuncios ADD FULLTEXT(titulo, descripcion);

Una ves echo esto , a la hora de hacer la QUERY vamos a usar las funciona de fulltext search MATCH y AGAINST de la siguiente manera:

SELECT * FROM anuncios WHERE MATCH(titulo, descripcion) AGAINST ('perro')

Esta línea utiliza la función MATCH … AGAINST … que encuentra el texto buscado, usando consultas similares a como lo hacen los motores de búsqueda. Además, se calcula internamente una puntuación en función de como aparecen y la cantidad de términos buscados dentro de nuestro titulo y descripcion.

¿Como perfeccionar la busqueda?

SELECT * , MATCH (titulo,descripcion) AGAINST ('perro') AS puntuacion FROM anuncios WHERE MATCH (titulo, descripcion) AGAINST ('perro') ORDER BY puntuacion DESC LIMIT 50

Esta consulta devolverá las primeras 50 consultas ordenadas por la puntuación. Jugando un poco con CSS pueden lograr mostrar estrellitas o barras de progreso segun la puntuación, pero ese ya es otro tema aparte.

Como todo esto tiene alguna limitación que otra. Por ejemplo no toma en cuenta palabras con menos de 4 caracteres.

De todas formas es la forma mas eficiente y rapida de buscar , sobre todo con múltiples palabras.

Un saludo y espero que les haya servido

Tags:

Filed Under: MySQL, Recursos

« Older Entries   Newer Entries »