Dic 22 2009

Dividir resultado de query MySQL por bloques con PHP

Qué pasa si tienes un query que te arrojara cierta cantidad de filas, y necesitas dividirlas en bloques de “X” cantidad. Esto, en mi caso lo utilice para hacer un slider con JQuery, para se precisos con el plugin de Cycle.

Se asume que ya tienen establecida una conexión con la base de datos, así que solo pondré el código desde el query. Una vez que lean lo siguiente, será muy fácil entenderlo, si tienen dudas por favor comenten.

$query = "SELECT * FROM tabla";
$result = mysql_query($query, $con) or die(mysql_error());
// aqui decidimos el tamaño de los bloques
$divider = 4;

if($result){
	$i=0;
	while ($row = mysql_fetch_assoc($result)) {
		if($i%$divider==0){
//aquí escribimos el principio de el bloque
			echo('<div>'."\n");
			echo('<ul>'."\n");
		}
		$i++;
//aquí escribimos el codigo que queremos repetir por la cantidad de elementos dentro del bloque, en este caso 4
		echo("<li>".strtoupper($row['name'])."</li>\n");

		if($i%$divider==0){
//aquí escribimos el cierre de el bloque
			echo('</ul>'."\n");
			echo('</div>'."\n");
		}
	}
}

Como se puede leer, el ejemplo es muy sencillo, pero nos puede servir para infinidad de cosas.

  • Share/Bookmark

Dic 10 2009

Configurar un Servidor FTP en Ubuntu (ProFTPd)

La conectividad en estos días, es la necesidad  de muchos administradores de sistemas y de usuarios avanzados, por lo que hoy, veremos cómo hacer funcionar un servidor FTP en nuestras cajas con Ubuntu.

El primer paso, es actualizar nuestra paquetería para después instalar lo que necesitamos.

$ apt-get update && apt-get upgrade
$ apt-get install proftpd ucf

Ahora editaremos el fichero de configuración de nuestro servidor FTP, en este caso, el ProFTPd.

$ vim /etc/proftpd/proftpd.conf

Durante la instalación del servidor, nos preguntara como lo queremos ejecutar, seleccionamos “Standalone”.

Tenemos que modificar estas líneas únicamente para un funcionamiento simple pero efectivo y dejarlas de la siguiente manera:

ServerName                    "Mi Servidor"
ServerType                     standalone
DefaultRoot                     ~
MaxInstances                  30

Explicación breve de las opciones anteriores:
ServerName = El nombre que mostrara nuestro servidor
ServerType = Standalone, aquí solo verificamos que sea un Standalone, ya que lo especificamos desde la instalación.
DefaultRoot= ~ Esto es, que los usuarios del sistema que tengan derecho a login solo podrán navegar en su Home

Ahora, reiniciamos nuestro servicio:

$ /etc/init.d/proftpd restart
  • Share/Bookmark

Sep 18 2009

Tutorial sobre dhtmlScheduler, un calendario en Ajax

Por alguna razón necesitaba encontrar un calendario que me permitiera agregar eventos al vuelo y que algunas personas pudieran tener acceso a el. Quería encontrar algo dinámico (Ajax) y que tuviera el potencial para funcionar dentro de  una intranet que estoy armando en PHP y MySQL. Esto, es para que no me complicara insertando las tablas, sesiones etc en mi proyecto actual.

El resultado de la búsqueda fue dhtmlxScheduler, una app en dhtml que tiene la posibilidad de almacenar los datos de nuestras citas en una base de datos MySQL, PostgreSQL y algunas más.

Lo primero, como siempre, es descargar la aplicación que necesitamos de aquí.

**Este tutorial asume algunas cosas:

  • Tenemos un servidor Web previamente configurado (LAMP) o hosteamos en algún lugar.
  • El servidor ejemplo se llamara como siempre “Localhost”.
  • Las contraseñas e información de base de datos MySQL son muestra, tendremos que ajustar a nuestras necesidades.
  • Tenemos conocimientos de PHP, MySQL, Javascript y HTML y CSS.

Una ves descargada y descomprimida en algún directorio de nuestro disco duro (en el tutorial será nuestro home), copiaremos solamente los siguientes ficheros y directorios al directorio destino, es decir, donde vivirá nuestro calendario en el servidor Web.

  • $HOME/dhtmlxScheduler/codebase > todo el directorio
  • $HOME/dhtmlxScheduler/samples/common/config.php
  • $HOME/dhtmlxScheduler/samples/initialization_loading/php/events.php

Ahora, ya en el directorio que hemos creado para la aplicación, vamos a dar vida a un index.php en el que agregaremos el código contenido en el siguiente archivo:

index.txt

Con lo que en el explorador, debemos ver algo así:

calendario

Ahora, echemos un vistazo a como debería de estar organizado nuestro directorio de calendario en el servidor:

calendario-dir

Si hasta ahora va todo correcto (si vieron el calendario en el explorador, no se preocupen por el mensaje de error sobre el XML, ya que aun no llegamos a esa parte), Ahora editaremos lo mas fácil, que es el config.php y pondremos los valores que se adapten a nuestras configuraciones.

<?php
 $server = "localhost";
 $user    = "miusuario";
 $pass    = "mipasswd";
 $db_name= "miDB";
?>

Ahora crearemos un fichero llamado vaciado.sql en donde agregaremos lo siguiente:

DROP TABLE IF EXISTS `events`;
SET @saved_cs_client     = @@character_set_client;
SET character_set_client = utf8;
CREATE TABLE `events` (
 `event_id` int(11) NOT NULL AUTO_INCREMENT,
 `event_name` varchar(127) NOT NULL,
 `start_date` datetime NOT NULL,
 `end_date` datetime NOT NULL,
 `details` text NOT NULL,
 PRIMARY KEY (`event_id`)
) ENGINE=MyISAM AUTO_INCREMENT=85 DEFAULT CHARSET=latin1;
SET character_set_client = @saved_cs_client;

Inmediatamente después, importaremos ese archivo a MySQL, ya sea con PhpMyAdmin o mediante la linea de comandos.

Finalmente, editaremos el fichero events.php donde ajustaremos las rutas a los archivos que necesita el calendario para trabajar correctamente:

<?php
 include ('codebase/connector/scheduler_connector.php');
 include ('config.php');

 $res=mysql_connect($server, $user, $pass);
 mysql_select_db($db_name);

 $scheduler = new schedulerConnector($res);
 $scheduler->enable_log("log.txt",true);
 $scheduler->render_table("events","event_id","start_date,end_date,event_name,details");
?>

Eso es todo, ahora visitamos el calendario con nuestro navegador y podremos agregar citas y eventos dando doble click sobre el día que deseamos, solo es necesario poner nombre y ajustar la hora de comienzo y termino.

  • Share/Bookmark

May 23 2008

Tutorial: Instalar Flock en Ubuntu

Flock definitivamente es un navegador que esta dando de que hablar, ya que utiliza el mismo motor Gecko que Firefox, ademas de ser diseñado para bloggers, por eso su slogan de “Navegador Social“. Además tiene soporte para plugins y algunos para Firefox funcionan en el.

Lo primero es descargar el paquete mas nuevo, no les recomiendo descargar el de GetDeb, ya que no es la versión mas nueva, mejor descargaremos el tar.gz del sitio oficial, en este momento la versión 1.14

Descargar Flock

Ahora, necesitamos descomprimir el tar.gz preferentemente en nuestro /home/usuario para poder acceder a el con mayor facilidad. Pero antes debemos instalar un paquete necesario (en caso de no tenerlo actualmente)

$ sudo apt-get install libstdc++5

$ tar -zxvf flock-1.1.4.es-AR.linux-i686.tar.gz

cd flock/

./flock

Al ejecutar el comando anterior, nos aparecerá la pantalla de configuración de Flock, en donde se nos pregunta si deseamos importar alguna configuración de Firefox, respondemos segun nuestras necesidades.

Por ultimo, crearemos una entrada en el menu de Gnome.

Damos click con el botón derecho en el menú y seleccionamos “Editar los menús” y navegamos hasta Internet, ahora le damos click a agregar elemento y llenaremos los campos con la información requerida.

En este ultimo pondremos:

  • Nombre: Flock
  • Comando: Examinar y buscamos el directorio de flock que debe de ser /home/usuario/flock y seleccionamos el fichero “flock
  • Comentario: el Navegador Social (opcional)
  • Damos click en aceptar.

 

  • Share/Bookmark

Abr 30 2008

Tutorial: VirtualBox con USBs en Ubuntu

El siguiente tutorial sirve para configurar correctamente VirtualBox PULE en Hardy con funcionalidad para los puertos USB en el sistema operativo huésped. Además de poder compartir archivos con nuestra red local y algún directorio en nuestro sistema anfitrión.

Sistema Operativo Anfitrión: Ubuntu 8.04 Hardy Heron

Sistema Operativo Huésped: Windows XP SP2

Lo primero que haremos, sera descargar la versión de VirtualBox Pule desde la pagina de Sun, ojo, no importa que diga que es para Gutsy Gibbon, funcionara correctamente. Para los que no tienen tiempo de buscar, aquí les dejo el enlace.

Ya con este paquete en nuestro poder, abrimos nuestra consola o para los mas nuevos, le dan doble click desde el lugar donde lo descargaron.

$ sudo dpkg -i virtualbox_1.5.6-28266_Ubuntu_gutsy_i386.deb

Mostrara una serie de pantallas como las siguientes:

En la primera, seleccionaremos la opción de “Si”

En la segunda, elegiremos: “Aceptar”

Igualmente para la tercera Opción: “Aceptar”

Y por ultimo, elegimos “Si” para que compile el modulo que necesitaremos.

Después de esto, necesitaremos hacer un par de cosas mas, la primera, sera agregar a nuestro usuario al grupo de VirtualBox, para hacerlo podemos elegir cualquier editor de texto y con sudo editar el archivo /etc/group

$ sudo vim /etc/group

y en donde encontremos vboxusers:x:124: agregaremos nuestro usuario al final de esta forma (si el numero 124 no aparece igual y ustedes tienen otro, no se preocupen haganlo igual):

vboxusers:x:124:zilus

Ahora, haremos lo necesario para que funcionen nuestros puertos USB:

$ sudo vim /etc/init.d/mountdevsubfs.sh

Y editaremos las siguientes lineas:

# Magic to make /proc/bus/usb work
#
#mkdir -p /dev/bus/usb/.usbfs
#domount usbfs “” /dev/bus/usb/.usbfs -obusmode=0700,devmode=0600,listmode=0644
#ln -s .usbfs/devices /dev/bus/usb/devices
#mount –rbind /dev/bus/usb /proc/bus/usb

Las dejaremos de esta forma:

# Magic to make /proc/bus/usb work
#
mkdir -p /dev/bus/usb/.usbfs
domount usbfs “” /dev/bus/usb/.usbfs -obusmode=0700,devmode=0600,listmode=0644
ln -s .usbfs/devices /dev/bus/usb/devices
mount –rbind /dev/bus/usb /proc/bus/usb

Ahora necesitamos cambiar algunos permisos de las reglas de montado, lo lograremos editando el siguiente fichero:

$ sudo vim /etc/udev/rules.d/40-permissions.rules

Y buscamos la siguiente linea:

ATTRS{idVendor}==”0403″, ATTRS{idProduct}==”6001″, \
, MODE=”0660″, GROUP=”dialout”

Para dejarla de la siguiente forma:

ATTRS{idVendor}==”0403″, ATTRS{idProduct}==”6001″, \
,GROUP=”vboxusers”, MODE=”0664“, GROUP=”dialout”

Por ultimo Reiniciamos el sistema para que todo funcione correctamente y voila!! tenemos VirtualBox en Hardy con funcionalidad para USB, ahora solo les falta crear la maquina virtual e instalar algún otro sistema operativo.

  • Share/Bookmark