Posted by daniel
on febrero 18, 2010
SQL /
No Comments
En este caso buscaremos todas las tablas que tengan un campo llamado nombre
El código es el siguiente (probado en Sql Server):
SELECT *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE (COLUMN_NAME LIKE ‘%nombre%’)
Está demás mencionar que en este ejemplo no solamente obtendremos el nombre de los campos, si no que mucha información más.
Posted by daniel
on febrero 18, 2010
SQL /
2 Comments
Escribo la solución a este problema porque me pasó que tuve que borrar los registros duplicados de una tabla.
Como era un concurso, me pidieron explicitamente que no importaba que se repitieran los registros, por lo que una persona podría poner sus mismos datos una y otra vez. Una jugada sin ningún tipo de beneficio adicional.
¿Entonces que paso?, había que hacer el concurso, pero la posibilidad de ganar tenía que ser igual para todos, por lo que había que eliminar los registros repetidos de la tabla del concurso.
¿Como lo hice?, con el siguiente código:
DELETE FROM concurso c1 WHERE id > (SELECT MIN(id) FROM concurso c2 WHERE c1.nombre = c2.nombre and c1.celular = c2.celular
Lo que hago es buscar el nombre y celular en cada registro, si ambos son iguales a uno ya existente en la tabla se elimina el que tenga el id mayor.
Intente con una tabla temporal… y funciona bien, pero cuando hablamos de millones de registro tarda demasiado el proceso.
Posted by daniel
on febrero 17, 2010
CakePHP /
No Comments
Hoy me encontré con un problema al intentar realizar las validaciones en un formulario de registro de usuarios.
Cuando escrito todos los datos correctamente (según lo definido en el Model::validate()) se registra el usuario correctamente, en caso contrario, se despliegan los errores, pero el campo password aparece con información (******) y si vemos el value del campo, nos damos cuenta que es la codificación del valor enviado.
Recuerden que si uno envía el campo en blanco eso también es codificado y convertido a una cadena de tipo 76cda45484db78aw7
Para evitar eso puse el siguiente código en mi controlador (usuarios_controller.php en mi caso)
[codesyntax lang="php"]
function beforeRender()
{
parent::beforeRender();
$this->data['Usuario']['password'] = ”;
}
[/codesyntax]
Eso significa que antes de hacer el render limpiará ese valor del arreglo de datos.
Si crees tener una mejor solución, por favor escribelo en los comentarios.
Posted by daniel
on febrero 09, 2010
CakePHP /
No Comments
Uso Filezilla como cliente FTP, cree mi aplicación con CakePHP, la moví a un subdirectorio y ya no funcionaba. El navegador me mostraba el Error 404.
Entonces con ayuda de Michael Gomez entendí que el Filezilla tenía desactivado el modo para ver los archivos ocultos (.htaccess). Para activar esa opción y habilitar que se puedan ver los archivos ocultos (los que empiezan con punto en el nombre del archivo) deben presionar en el menú de Filezilla la opción Servidor y luego Forzar mostrar archivos ocultos.
A continuación les publico como son los .htaccess que deben tener en la aplicación CakePHP:
En la raíz del sitio:
RewriteEngine on
RewriteRule ^$ app/webroot/ [L]
RewriteRule (.*) app/webroot/$1 [L]
En la carpeta App:
RewriteEngine on
RewriteRule ^$ webroot/ [L]
RewriteRule (.*) webroot/$1 [L]
En la carpeta WebRoot:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
Les puede ser de ayuda en caso que lo olviden.
Tags: CakePHP, htaccess