![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
|
Hola,
Cita:
Cita:
De este modo, al crearse el objeto Usuario (que se crea al comienzo de la aplicación) podría aprovecharse para crear a su vez la instancia de la clase Opciones, y que esta se encargara ya de cargar las opciones del usuario en cuestión. Ahora bien, tener opciones por defecto implica tener una lista de opciones predeterminada (¿O me equivoco?). Pero, ahora que lo pienso... tal vez es que no haya otra... no sé... la verdad es que contra más lo pienso me aparecen como posibles caminos a seguir, pero, enseguida encuentro algún obstáculo que me dice párate, no sigas por aquí, párate y mira esto... Por ejemplo, ¿cómo se llevaría a cabo la inicialización de opciones? ¿Qué haría la clase Opcinoes en su inicialización? ¿Consultar la base de datos en busca de posibles opciones y guardarlas en el Array asociativo correspondiente para luego poder trabajar con estas? ¿Acaso debería la misma clase Opciones establecer una serie de opciones por defecto, de entrada, sin ni siquiera consultar a la base de datos? ¿Pero entonces para qué el Array asociativo? ¿Para otras opciones que no fueran las predeterminadas? Pero he ahí otro problema (creo) y es que todas las opciones necesitan ser inicializadas al menos la primera vez que se piensen utilizar... digo yo, vamos... y me temo que al cabo habría que ir añadiendo y añadiendo opciones en la inicialización de la clase ídem... No sé... disculpad que discurra de esta manera,... es lo que digo, habrá que darle vueltas a esto para no estar horas en realidad perdiendo el tiempo... no es que me importe, pero, tal vez sea bueno darle vueltas antes de escribir siquiera la primera línea de código. |
|
#2
|
||||
|
||||
|
En lo de separar las opciones de la aplicación de las de los usuarios, quizá sea útil revisar qué hace vBulletin. Hay opciones como el número de mensajes por página que pueden establecerse a "Predeterminado del foro". Supongo entonces que cada foro puede asignársele un valor y esto se guardará en la base de datos, supongo. Esta es una opción de la aplicación pero que también puede ser del usuario. En fin, quizá pueda dar alguna idea.
// Saludos |
|
#3
|
||||
|
||||
|
Hola,
Cita:
Pero, lo de tener 20.000 registros en una tabla no es que me pánico ni nada de eso; lo que ma un poco de mal rollo es que esos 20.000 registros sean... cómo decirlo... ¿tan iguales? Lo explicaré con un ejemplo. Loturak cuenta con una tabla de nombre "Enlaces" en donde se guardan los que los usuarios quieren. Esta tabla puede crecer y crecer, pero, al fin y al cabo hablamos de enlaces, puede haber un millón (y puede haberlos repetidos, en algunos de sus datos), pero, todos tiene su URL, su título, su descripción,... no sé... lo veo como algo razonable, porque me digo, hay un millón de registros, que se corresponden a un millón de enlaces: el asunto cuadra, no puede ser de otro modo, no caben en 100 registros un millón de enlaces. Pero con las opciones no ocurriría eso, puesto que habría, digamos que veinte opciones distintas y miles y miles de registros... ¿No hay algo aquí que no está bien? Claro, por otro lado, ¿puede ser esto de otro modo? Es lo de antes, 20 opciones, 1000 usuarios: 20.000 registros... ¿pero puede ser de otro modo? Me parece que no, que si se plantea una tabla de opciones que contenga en realidad pares de claves y valores... no puede ser de otro modo... En fin. Reconozco que todo esto es demasiado nuevo para mí, y que no me he documentado (no he leído) lo suficiente sobre el tema, ¡ni muchísimo menos! Vuelvo a agradecer vuestros comentarios. Ahora mismo cada vez veo más la posibilidad de una tabla con tantos campos como opciones (claudicando un tanto en mis ambiciones de lograr algo más "abstracto") pero, básicamente, por la otra forma: los 20.000 registros de antes, no lo termino de ver nada claro... ![]() Cita:
![]() Última edición por dec fecha: 04-09-2006 a las 20:47:36. |
|
#4
|
||||
|
||||
|
Hola,
A ver si lo que se me acaba de ocurrir suena descabellado o no... ¿Qué tal si utilizamos la magnífica serialización de objetos que ofrece PHP? ¿Porqué no guardar, en un sólo campo de tipo "LongText" la instancia de la clase Opciones de los usuarios "serializada"? Podrían guardarse muchos pares de claves/valor. Pienso en un "Array asociativo", como antes, al que podrían añadirse tantos elementos como fuera preciso, y que podría terminar guardado en la base de datos como digo: en un solo campo, junto al resto de la clase Opciones, previamente "serializada". Rizando un poco el rizo ni siquiera haría falta tabla de opciones (para usuarios), podría añadirse a la tabla Usuarios un campo "Opciones", precisamente. (*) ¿Qué os parece? ![]() (*) Seguramente no; seguramente no estaría mal una tabla Opciones, salvo que, esta vez, contaría con un campo "LongText", como digo, que las almacenaría todas juntas. Última edición por dec fecha: 04-09-2006 a las 20:58:36. |
|
#5
|
||||
|
||||
|
A mi me parece muy buena idea a menos que quisieras hacer búsquedas sobre las opciones de usuario, por ejemplo, ¿cuántos usuarios usan morado como color de texto sobre fonde verde? Tu clase OpcionesUsuario simplemente tendría que tener cuidado en dar valores por defecto cuando aumente opciones. Yo creo que es bastante buena la idea.
// Saludos |
|
#6
|
||||
|
||||
|
Hola,
Como que no la he inventado yo... je, je, je. No; quiero decir, que, recuerdo que WordPress guarda objetos serializados como opciones... claro que no hace esto únicamente, pero, a veces utiliza esta forma de guardar datos y, me he acordado de ello, seguramente. Adjunto un sencillo ejemplo... Última edición por dec fecha: 04-09-2006 a las 21:16:00. |
|
#7
|
|||
|
|||
|
Cita:
![]() Cita:
Representado sería algo como esto: Código:
Id_Usuario Clave Value 0 Opcion1 0 0 Opcion2 1 0 Opcion3 1 <--- hasta aquí, todas las opciones con sus valores predeterminados. 1 Opcion2 0 <--- el usuario con ID 1 solo modificó el valor de la opcion2. Cita:
Saludos... |
|
#8
|
||||
|
||||
|
Hola,
Cita:
Evidentemente, a la que se añadiera el nuevo elemento habría que actualizar todas (si no se encuentra la forma de hacerlo de otro modo), digo, habría que actualizar todas las opciones, pero, en realidad hablamos de actualizar UN campo de la base de datos... Cuando el usuario iniciara de nuevo sesión, la opción añadida antes no se habría perdido, sino que se recuperaría con el resto de opciones al "deserializar" el objeto. Además pienso en la cantidad de funciones conque cuenta PHP para trabajar con Arrays... no conozco la mayoría, pero, sé que están ahí... ![]() |
|
#9
|
||||
|
||||
|
Yo no creo que sea necesario actualizar nada. Por ello mencioné lo de valores por defecto. Cuando un usuario se conecte, al momento de deserializar, el objeto OpcionesUsuario tendrá más propiedades, pero éstas tendran valores por defecto. Cuando guardes las opciones ya guardarás todas ellas pues lo que habrás actualizado será el método Save del objeto.
// Saludos |
|
#10
|
|||
|
|||
|
Cita:
Ahora, como sería? Como usuario inicio sesión, la aplicación lee las opciones de la base de datos ("deserializa" el objeto), hago algún cambio de estas opciones, trabajo con la aplicación y finalizo la sesión, la aplicación aquí guarda las opciones (o puede guardarlas desde que aplico los cambios a estas opciones). Dado lo anterior, ¿en que momento se podría agregar una opción nueva? Esto lo pregunto por que no se exactamente como funciona la serialización de objetos en PHP. A lo que voy, si creo el objeto con un arreglo de X elementos, al "deserializar" este objeto conteniendo X - 1 elementos, ¿se pierde el elemento extra con el que inicialicé el arreglo o solo se sobreescriben los que ya existían? Saludos... |
|
#11
|
||||
|
||||
|
Hola,
Cita:
Cita:
Pero, de todos modos, los programas no tienen porqué guardar las opciones al salir, aunque ahora me doy cuenta de que esto lo he hecho alguna que otra vez... hombre, tal vez algunas opciones han de guardarse al salir, como la posición de un formulario en pantalla, pero, buena parte de las opciones se "tocarán" en el apartado de opciones, se editarán y se guardarán desde ahí cuando el usuario lo precise. Cita:
No he podido resistir y he escrito este poco de código en un momento como aquél que dice (no lo he probado ni nada) y lo expongo aquí porque creo que puede dar alguna idea de cómo llevar a cabo el tema, haciéndolo como venimos diciendo: Código PHP:
![]() |
|
#12
|
||||
|
||||
|
Cita:
1.- Comprueba si hay cookies. 2.- Comprueba que hay sesión iniciada. 2.- Si no hay ni sesión ni cookies (puede haber cookies sin sesión), entonces carga los valores por defecto. 3.- El usuario inicia session, carga datos de la BBDD a sesión y carga datos en las cookies. Y ese es básicamente el funcionamiento del que antes te hablé.
__________________
Saludos Emilio |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| ¿Cómo ver a los usuarios conectados desde mi aplicacion? | federiconqn21 | Conexión con bases de datos | 3 | 23-07-2006 01:56:09 |
| Problema al ejecutar un procedimiento dos usuarios distintos en aplicacion asp.net | mamen | .NET | 5 | 04-05-2006 14:58:23 |
| lanzo aplicación para que sea terminada por usuarios de internet | unreal4u | Varios | 0 | 25-11-2004 19:34:03 |
| Usuarios conectados en mi aplicacion ? | Jorge Taveras | MS SQL Server | 8 | 29-06-2004 22:18:41 |
| opciones para grabar un video | jfgonzalez | OOP | 2 | 11-08-2003 16:25:42 |
|