gafeman viciao2k3 logo viciao2k3
 
cagando...
 
 

Clase para la conexion a bases de datos MySQL

Publicado en PHP el dia 27 Junio, 2007   3633 lecturas  y  9 comentarios

Diario de cambios:
Version: 0.3
Ultima edicion: 6-julio-2007

  • arreglado un problema en la funcion enmarcar, siempre muestra el mensaje $str
  • he añadido los constructores para que sea compatible con PHP 5

Hoy he terminado de desarrollar dos classes en PHP

  1. para conectar con una base de datos MySQL
  2. para hacer llamadas a la base de datos (querys, updates, deletes, inserts, etc.)

Caracteristicas importantes:

  1. al hacer selects, si estas devuelven valores, se tiene que hacer mysql_free_result($mysql_result) para liberar recursos, esta clase lo hace automaticamente
  2. cuando haces una query esta devuelve una tabla de objetos
    puedes acceder a los valores mediante $query1->v[0]->nombre o recorrerlos todos con un foreach
    con lo que ya no tienes que dudar si era un mysql_fetch_row, mysql_fetch_ass­oc u otro...
  3. modo de depuracion, si estas en modo de depuracion si se producen errores, se mostraran las querys tal y como se han ejecutado a la base de datos
  4. muy facil de recordar y programar, ya que se tiene que escribir muy poco
  5. Cierra la conexion datos automaticamente al final de la aplicacion, utilizando un __destructor() compatible con PHP4 y 5

Ejemplo practico:

PHP:
  1. //incluimos la clase
  2. require 'class_mysql.php';
  3.  
  4. //creamos el objeto bd para poder conectar con la base de datos
  5. //Nota: para el modo debug se tiene que escribir: $bd = new bd(1);
  6. $bd = new bd();
  7.  
  8. //para hacer una query
  9. $query1 = new query('select id, nombre, apellidos from trabajadores',$bd);
  10.  
  11. //podemos comprobar si la query ha obtenido valores (no hace falta para mostrar datos)
  12. if($query1->n){
  13.  
  14. //recorremos las filas y mostramos los resultados
  15. foreach ($query1->v as $fila)
  16. echo $fila->d,' - ',$fila->nombre,' ',$fila->apellidos,'<br />';
  17. }else{
  18. //si no hay valores se muestra un mensaje
  19. echo 'no se encontraron resultados';
  20. }

Otras caracteristicas:

  • para evitar sql-injections, debes filtrar los datos de esta manera:
    PHP:
    1. $query1 = new query("select * from usuarios where nombre='".$bd->f($_POST['nombre'])."' and password='".$bd->f($_POST['password'])."'",$bd);

  • saber numero de filas afectadas, al hacer por ejemplo un update:
    PHP:
    1. $query1 = new query("update trabajadores set salario='1000' where departamento='12'",$bd);
    2. echo $query1->a,' registros actualizados';

Pasos:

  1. Descargar el fichero:
    class_mysql.txt
  2. Remplazar el nombre del fichero a class_mysql.php
  3. Subirlo al ftp

Recuerda: (antes de usar la clase tienes que editar las variables)

  • var $usuari='root'; //nombre de usuario de la base de datos
  • var $clau=''; //contraseña del usuario
  • var $servidor='localhost'; //nombre del servidor, normalmente localhost
  • var $nomBD=''; //nombre de la base de datos

Si te ha gustado, crees que se puede mejorar o si encuentras fallos, deja un comentario

como evitar pingbacks en las paginas, permitir solo en posts

Publicado en Wordpress el dia 27 Junio, 2007   754 lecturas  y  0 comentarios

no se si soy el unico, pero las paginas de wordpress (panel de control -> escribir -> pagina)

solamente las utilizo para secciones que no son articulos
por ejemplo, si alguien hace un enlace a pagina de contacto no me interesa que me guarde el pingback

pasos para evitarlo:

  1. dirigete a la carpeta:
    /wp-content/themes/NOMBRE_DE_TU_THEME
  2. busca el fichero header.php
  3. abrelo y busca algo parecido a esto:
    <?php if (is_single() or is_page()) { ?>
    <link rel="pingback" href="<?php bloginfo('pingback_url'); ?>" />
  4. elimina esta parte:
    or is_page()

ajax:
ahora se puede enviar el formulario sin recargar la pagina

control anti-spam:
una vez enviado los controles quedan bloqueados, para poder enviar otro mensaje se tiene que recargar la pagina

valuación javascript:
comprueba que el usuario introduzca como minimo: nombre, email y mensaje
también comprueba si el correo electrónico es valido

cookies:
cuando alguien comenta en tu blog, automáticamente wordpress genera 3 cookies, donde se guarda: nombre, email y web
estas cookies duran 347 días a partir de la fecha que se crean o modifican

¿por que comento esto?
el plugin original no esta totalmente integrado al wordpress ya que no aprovecha estas cookies y siempre aparecen vacios los campos: nombre, email y web

Lo que he hecho, es aprovechar las cookies que genera wordpress, de esta manera se rellenan los campos automáticamente

¿algo mas?

  • al escribir el mensaje, este se hace muy largo el control se ajusta al tamaño del texto
  • he puesto la propiedad tabindex en cada uno de los controles del formulario

demo:
podéis ver el funcionamiento en el formulario de contacto de esta web

notas:
el formulario de contacto que hay en mi web no es exactamente el mismo, en mi web he cambiado la alineación de los textos a la derecha para que se vea mas bonito, pero el funcionamiento es el mismo

instalacion:

  1. instalar el plugin original
  2. descargar el siguiente fichero:
    wp-contactform.txt
  3. renombrarlo a wp-contactform.php
  4. subirlo a la carpeta y si pregunta por renombrar dile que si:
    /wp-content/plugins/wp-contact-form

trucos para agilizar la carga de tu web (parte 2)

Publicado en Optimizacion el dia 26 Junio, 2007   1488 lecturas  y  2 comentarios

separar CSS del codigo HTML

usar menos las etiquetas <style>, si pones los estilos en un fichero .css, el navegador los podra guardar en la cache y te permitira cargar mas rapidamente cada una de las paginas.

por lo contrario, si tienes en cada pagina una etiqueta <style> con los estilos obligaras al usuario a cargar una y otra vez los estilos

caso practico:

si utilizas plugins para wordpress, podras ver que algunos de estos te añaden una etiqueta <style> con los estilos necesarios para el funcionamiento del plugin

solucion:

  1. mira el codigo fuente de tu pagina principal
  2. busca alguna si hay alguna etiqueta <style>
  3. normalmente se muestra el nombre del plugin, apunta el nombre
  4. copia los estilos que hay dentro de <style> y los pegas en tu plantilla css principal
  5. ahora dirigete a la carpeta:
    /wp-content/plugins
  6. busca el fichero correspondiente al plugin, normalmente el nombre del fichero es el mismo que el del plugin
  7. abre el fichero y busca la etiqueta <style>, encontraras algo parecido a esto:
    PHP:
    1. function wpv_actualizacion_css()
    2. {
    3. //estilo para el plugin
    4. echo ' <style type="text/css" media="screen"> /* estilo plugin ultima modificacion */ .lbl_actualizacion {font-weight:bold;color:green;} </style>';}

  8. seguramente estara dentro de una funcion, copia el nombre de la funcion en el ejemplo de arriba wpv_actualizacion_css y buscas el nombre en el mismo fichero, seguramente te saldra algo asi:
    PHP:
    1. add_filter('wp_head', 'wpv_actualizacion_css');

  9. para desactivarlo solo tienes que poner dos barras // que en PHP significa que es un comentario, quedando asi:
    PHP:
    1. //add_filter('wp_head', 'wpv_actualizacion_css');

trucos para agilizar la carga de tu web (parte 1)

Publicado en Optimizacion el dia 26 Junio, 2007   1547 lecturas  y  3 comentarios

sé que de momento viciao2k3 tarda bastante en cargar, pero eso se puede mejorar y segun vaya optimizando el sitio voy a publicar una serie de consejos para que tu sitio se cargue fluidamente

¿porque es importante?

ahora mas a menos casi todo el mundo tiene ADSL, pero eso no significa que todos esten preparados
si tu web tarda mucho en cargar, el usuario impaciente puede cerrar la pagina y seguramente no volvera

agilizar carga de javascripts

normalmente en las paginas web, todo el javascript se pone en la cabecera, exactamente entre las etiquetas <HEAD> y </HEAD>

pienso que esta mal, ya que obligas al usuario a cargar funciones que posiblemente luego no se utilicen.

si tienes muchos javascripts en un fichero, deberías dividir las funciones en 2 grupos:

  • primarias: funciones que se ejecutan en el evento onload
  • secundarias: las que no necesitan cargarse al principio.
    Por ejemplo, una funcion que muestra un mensaje al hacer clic a un boton

las funciones primarias puedes hacer que se carguen en la cabecera de la pagina y las secundarias antes de la etiqueta </body>

caso practico:
el codigo javascript de Google Analytics, yo recomiendo ponerlo antes de cerrar la etiqueta </body>, ya que si lo pones despues de <body>, estas obligando al usuario a esperar a que se carguen 6,09 KB (6.232 bytes) para luego cargar con el resto del documento