Servidor web cherokee con php y mysql (II)

Enviado por cnicolas el 23 Octubre, 2009 - 21:09.

Bueno, ahora le toca el turno a la Base de datos mysql.

La aplicacion que voy a crear es una gestion de los cds de musica que poseo, de ellos sólo me voy a quedar con dos datos importantes, el autor y el nombre del disco ( esto es para simplificar). Habia pensado añadir algun dato mas como el tipo de musica, pero si bien esto esta muy claro en algunos autores, como por ejemplo Beethoven con algunos otros como Goran Bregovic la cosa no esta tan clara, asi que lo he desechado, otro dato que habia pensado poner era el numero de canciones, pero esto es un trabajo muy largo.

La aplicacion va a tener dos perfiles bien diferenciados, el primero es administrador , el cual va a poder efectuar tanto inserciones como actualizaciones y consultas y el segundo es usuario que solo va a poder consultar.

Mysql tiene un usuario que administra la base de datos es el llamado root , pero para diferenciarlo del root de GNU/Linux lo llamare administrador.

Lo primero es establecer la contraseña de administrador en mysql, para elo desde la consola con terminal de root

#> mysql -u root -p
Enter password

Asi habremos establecido la contraseña de administrador. posteriormemte creamos un usuario que es con quien nos vamos a conectar desde nuestra aplicación y un nuevo database que es el que vamos a usar

mysql>Create user 'usuarioweb' identified by '*******';
mysql>Create database audio;
mysql>Use audio;

Las comillas corresponden a la contraseña del usuario de nombre usuarioweb que he ocultado.

Ahora tenemos que crear las tablas .

Para la gestion de usuarios vamos a crear dos tablas (usuario y perfil) y una tabla que las relaciona usuario_perfil.

  • Usuario
    1. Cdusuario (*)
    2. Dsusuario
    3. Password
  • perfil
    1. Cdperfil (*)
    2. Dsperfil
  • Usuario_perfil
    1. Cdusuario (f)
    2. Cdperfil (f)

Los campos que empiezan por Cd son las primary keys de las tablas (*) o las foreign key (f) y son integer, los campos que empiezan por ds son descripciones y son varchar2(30) asi como el campo password

mysql>Create table usuario (cdusuario integer,dsusuario varchar(30),password varchar(30) );
mysql>Alter table usuario add primary key (cdusuario);
......
mysql>Alter table usuario_perfil add foreign key cdusuario references usuario(cdusuario);

Para los datos a guardar tengo dos tablas ( autor y disco ) y una tabla que las relaciona (autor_disco)

  • Autor
    1. Cdautor(*)
    2. Dsautor
  • Disco
    1. Cddisco(*)
    2. Dsdisco
  • Autor_disco
    1. Cdautor (f)
    2. Cddisco (f)

Las consideraciones de los campos son las mismas pero aqui las descripciones tiene una longitud de 80.

mysql>Create table autor (cdautor integer,dsautor varchar(80) );
mysql>Alter table autor add primary key (cdautor);
......
mysql>Alter table autor_disco add foreign key cdautor references autor(cdautor);

Finalmente hay que darle permiso al usuario que hemos creado tanto de selección, inserción ,actualización y borrado de filas.

mysql>Grant select,insert,update,delete on autor to usuarioweb;
......

Por ultimo, quiero dar las gracias a chacal por sus consideraciones sobre como tratar los datos.

Imagen de ZiTAL
Enviado por ZiTAL el 24 Octubre, 2009 - 11:36.

Hola cnicolas, espero que no sea el último post sobre cherokee ya que me interesaría el rewrite del cherokee por ejemplo para hacer URL-s bonitas, sigue así un saludo.

Imagen de cnicolas
Enviado por cnicolas el 24 Octubre, 2009 - 13:14.

Creo que escribire al menos sobre la estructura de la aplicacion y tambien le quiero echar un vistazo al algun CMS. pero si me avanzas para que se usa el rewrite pues mejor, todavia no he llegado a ese nivel wink

Imagen de gomalaca
Enviado por gomalaca el 24 Octubre, 2009 - 13:57.

Te sigo con enorme atención; me vendría genial para mi colección de películas y discos.

Imagen de ZiTAL
Enviado por ZiTAL el 24 Octubre, 2009 - 14:07.

el rewrite se usa para utilizar URL-s bonitas, es que yo tengo un sistema que toda la aplicación pasa por el mismo archivo, en mi caso: index.php, da igual que la url sea:

/asdsa/asdas/a12321/aDAQSDA

como

/algo/tralara.pho

Mi sistema verifica si ese 'archivo/carpeta' existe y si no existe pasa por el index.php, luego ya lo filtro segun que URL sea con el $_SERVER['SCRIPT_URI'] de php:

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

Claro pero este sistema solamente funciona en apache y me gustaría traducirlo para que también funcionase en cherokee, el proyecto en cuestión es zportal:

http://zital.no-ip.org/svn/zportal/ pero aún está muy verde :D