Categoría: Trucos Ketari.com[Protected by-ps.anonymizer.com]

Archipiélago:

Conjunto de Islas unidas por aquello que les separa

Categoría: Trucos

Gestionar Cookies con Javascript

Tanto en NiNaiz como en GuGara la mayoría de las páginas están cacheadas, es decir, cada vez que hay una petición de una página, en vez de ejecutarse todas las consultas a Bases de Datos y código PHP para generar la página, se muestra una página estática generada anteriormente.

Esa página sólo se volverá a generar de nuevo cuando haya algún cambio en ella.

Ésto permite no sobrecargar el servidor con un montón de consulas, con el riesgo de que el proveedor de Hosting me cancele la cuenta.

Éste sistema de cacheo no me permite gestionar las cookies desde el servidos (con PHP), ya que las páginas están creadas anteriormente, con lo que para poder tener un sistema para recordar datos en los Formularios he tenido que hechar mano de Javascript.

Javascript es un lenguaje que se ejecuta en el navegador del cliente y que tiene problemas de accesibilidad, ya que mucha gente no lo tiene instalado en su navegador o utilizan navegadores que no lo soportan (Lynx), en éste caso como no afecta a la navegación, es decir, el sitio funciona perfectamente, lo único que si no se tiene Javascript no recordará los datos introducidos en el formulario.

Para ello he utilizado 2 funciones, la primerar getCookie es una función muy utilizada y explicada en muchos sitios de Internet que lo que hace es darte el valor de la cookie que le pases como name.

<SCRIPT LANGUAGE="JavaScript">
function getCookie(name) {
var dc = document.cookie;
var prefix = name + "=";
var begin = dc.indexOf("; " + prefix);
if (begin == -1) {
begin = dc.indexOf(prefix);
if (begin != 0) return null;
} else {
begin += 2;
}
var end = document.cookie.indexOf(";", begin);
if (end == -1) {
end = dc.length;
}
return unescape(dc.substring(begin + prefix.length, end));
}

La segunda función lo que hace es cojer el valor de la cookie (llamando a la función getCookie) y si hay algún valor lo inserta en input correspondiente del formulario (nombre, correo o web) y además activa el checkbox de Recordar datos.


function insertarCookie() {
var nombre = getCookie('blog_nombre');
var correo = getCookie('blog_correo');
var web = getCookie('blog_web');
document.EscribirComent.nombre.value = nombre;
document.EscribirComent.correo.value = correo;
document.EscribirComent.web.value = web;
if ((correo!=null) || (nombre!=null) || (web!=null)) {
document.EscribirComent.recordar.checked=1;
} else {
document.EscribirComent.recordar.checked=0;
}
if (nombre==null) document.EscribirComent.nombre.value = '';
if (correo==null) document.EscribirComent.correo.value = '';
if (web==null) document.EscribirComent.web.value = '';

}
</SCRIPT>

Luego lo único que hay que hacer es indicar que se ejecute la función cuando se cargue la página.


<body onload='insertarCookie()'>

Las cookies se graban cuando se realiza la inserción del comentario, mediante PHP.

Ver/Escribir Comentarios (9)

Como crear un sencillo sistema de Tags o Etiquetas con PHP y MySQL

Últmamente se están poniendo de moda las Folcsonomias, que son una nueva forma de categorizar conjuntamente con más personas y que es utilizado por servicios tan populares como Delicious y Flickr entre otros.

Yo para no ser menos que éstos dos servicios quería implementarlo en GuGara.com y NiNaiz.com tanto para las imágenes como para el Wiki que próximamente aparecerá.

Al final quedaría de ésta manera:

antipena aragon arguelles asturies bilbao burgos chiapas donostia elektronikoak forosguays galiza iturrama jalmoa paislliones

Para ello me fue tremendamente util la función de PHP ksort

$sql = "select num, textotag from tag order by num DESC";
$res = mysql_query($sql);
while ($reg = mysql_fetch_array($res)) {
if ($i==1) {
$maxtag = $reg["num"];
$salida[$reg["textotag"]] = "<span style=\"font-size: 2em;\">". $reg["textotag"] ."</span$gt; ";
}
else {
$fontsize = ((2*$reg["num"])/$maxtag);
if ($fontsize <= 1) $fontsize=1;
$salida[$reg["tag"]] = "<span style=\"font-size: ". $fontsize ."em;\"><a href=\"/tag/". $reg["textotag"]) ."\">". $reg["textotag"] ."</a></span> ";
}
$i++;
}
ksort($salida);
foreach ($salida as $value) {
echo $value;
}

PHP es sencillo, es util, es libre.

Ver/Escribir Comentarios (9)

Problema con MySQL 4.1 phpMyAdmin y utf-8

El caso es que estaba creando una apliación y decidí siguiendo ésta recomendación utilizar como codificación UTF8.

Todo me iba de maravilla en mi servidor local (MySQL 3.xx). Al subirlo al Hosting me encuetro que tienen instalada la versión 4.1.3 y veo que hay algunos cambios (Collation, ...) le indico como collation utf-8_spanish_ci y mediante el phpMyAdmin importo todas las tablas y el contenido, que previamente había exportado desde mi servidor local.

Al acceder al contenido desde el phpMyAdmin veo que los registros que tienen algún caracter no-ASCII (ñáéíóú...) no se ven correctamente.


Y al insertar registros no-ASCII desde el phpMyAdmin no se ven correcatmente en la aplicación web.

El caso es que tenía todo en utf8, servidor web, MySQL, phpMyAdmin, en el HTML, ... y no había manera de que funcionara correctamente.

La solución era tan simple como ésta:

Después de hacer la conexión y seleccionar la BD

$enlace= @mysql_connect($host,$user,$pass)
@mysql_select_db($db_name,$enlace) or die(mysql_error());
Añadir la siguiente línea

@mysql_query("SET NAMES 'utf8'");
Y ya está todo solucionado

Después de revisar todos lo Foros habidos y por haber, postear el problema en los Foros de phpMyAdmin y no encontar respuesta, la solución me la enviaron por correo una persona que había visto mi pregunta en algún sitio.

Espero que a alguien le sea de utilidad, a mí ésta chorrada me ha vuelto loco durante unas cuantas semanas.

Actualización: Si quieres pasarte a UTF8 te recomiendo éste Post lo explica todo clarito, clarito.

Ver/Escribir Comentarios (10)

Categorías
Blogosfera
Internet
Software Libre
Trabajos
Trucos
Usabilidad
Wifi
Búsqueda
Enlaces
GuGara Comunidades de Blogs
ILoveJackDaniels
NiNaiz Blogs sobre Deporte
Ricardo Galli habla de Soft Libre
Sindicar
Post (RSS2)

Añadir feed a:

Contactar con el autor | Archivo
Sitio desarrollado, diseñado y gestionado 100% con Software libre: GNU/linux, GIMP, PHP, MYSQL, APACHE, ...