Autor
|
Tema: ¿Dónde o como guardar las configuraciones de las webs (foros)? (Leído 2,577 veces)
|
lipman
|
Quiero saber alguna forma de guardar configuraciones, por ejemplo, de un foro, de una web en general. Por ejemplo, imaginemos que desde un panel de control puedo controlar como quiero que se ordene una lista de contactos (nombre, apellido, edad) Entonces, ¿donde o como guardo la manera de ordenarlo? En principio se me viene a la cabeza usar bases de datos pero si hago esto, para después ordenar la lista tendria que usar un switch de la siguiente forma switch ($formaDeOrdenar) { case "Nombre": //Ordenar por nombre break; case "Apellidos": //Ordenar por apellidos break; case "Edad": //Ordenar por edad break; default: //otros.. }
Creo que esta manera me ocuparía demasiado código, si por ejemplo tengo muchas posibilidades diferentes, o incluso si tengo que guardar muchas configuraciones diferentes. Otro método que me habia planteado era el de, directamente al elegir la configuración desde el panel de control, editar un archivo de php añadiendo y eliminando código, pero creo que esta manera es más pesada. ¿Alguna idea?
|
|
|
En línea
|
|
|
|
Anibal784
Desconectado
Mensajes: 762
Yo no la vote, pero me la tengo que aguantar igual
|
No se, lo que se me ocurre ahora a mi sería hacer un archivo de configuración bastante sencillo: TableName = contactos OrderType = nombre asc
TableName = telefonos OrderType = celulares desc
o algo así, donde TableName sería el nombre de la tabla y OrderType sería por qué campo de la tabla ordenar y si ascendente o descendente. Luego lo parsearía con algo para que me quedara dentro de un arreglo asociativo, tipo: $config = open_config("archivo_configuracion.conf"); // Voy a ordenar la tabla contacto. $sql = 'SELECT * FROM agenda ORDER BY '.$config['contactos']['orderType']; // ejecuto la consulta.
Ahí estaría ordenando la salida de la consulta a la tabla contactos por nombre según mi archivo de configuración. Igual, puede ser de cualquier forma que quieras el archivo y la forma de obtener los datos. Nota la consulta SQL puede estar mal.
|
|
|
En línea
|
El que llega sin que lo llamen, se va sin que lo echen. Vos no la votaste por eso la tenes adentro.
Lo fino no es lo tuyo, y a mi me chupa un huevo, soy argentino y no peronista, y eso es lo que realmente te molesta.
|
|
|
lipman
|
No habia pensado en eso, está muy bien pero me sigue generando el mismo problema:
Voy a ejemplificarlo lo máximo que pueda.
En el index.php es donde se va a generar esa lista (ordenada). Desde panel.php eligiré la manera de ordenar esa lista (con radiobuttons por ejemplo)
Panel de control: -Ordenar lista: Nombre [] Apellidos [] Edad []
Cuando en el panel seleccione algo, lo guarda y siempre que me vaya al index.php lo ordenará de la manera que yo lo haya guardado. De la misma forma, lo puedo volver a cambiar cuando quiera.
La idea es esa, ordenar una lista, y la forma de ordenar la puedo cambiar a mi antojo pero se tiene que guardar (ahi el problemilla).
Otra cosilla, por ejemplo, en los foros se guardan configuraciones del tipo boleano por ejemplo "Permitir que se ejecute codigo HTML" (no se si esta me lo acabo de inventar xD) y aparece un checkbutton en donde elijo si quiero permitirlo o no.
Esta configuración supongo que se guardará de algún modo, pero a la hora de escribir los posts supongo que no hará lo siguiente:
si (checkbutton = true) entonces escribir el post con HTML sino escribir post sin HTML
La cosa es, dudo mucho que en todas las configuraciones de tipo boleano, haya en cada una una estructura if para comprobarlo, porque sino... pff
¿Alguna idea?
|
|
|
En línea
|
|
|
|
Spider-Net
Desconectado
Mensajes: 1.165
Un gran poder conlleva una gran responsabilidad
|
Los foros suelen guardar toda esa información en una base de datos. Tienen una tabla para la configuración con distintos campos en tu ejemplo tipo ENUM, si o no, o INTEGER 0 ó 1. Así se suelen manejar los booleanos.
Lo más práctico que puedes hacer desde luego es hacer una base de datos y la confiiguración la guardas en una misma tabla de la base de datos. Creo que es lo mejor.
|
|
|
En línea
|
|
|
|
lipman
|
Pero si lo pongo de tipo boleano en una base de datos, como puedo obtener esa configuración? a base de ifs? Por ejemplo (es bastante estúpido pero servirá xD)
Esta es la base de datos y sus valores:
Bold 0 Italic 0 Under 0
Tengo un texto en la página principal: "Hola mundo"
Desde el panel de control tengo 3 checkbox:
Bold [] Italic [] Under []
Tras marcar los que yo quiera y pulsar un botón, irá a la base de datos y pondrá si quiero activarlo o no (1)
Entonces, imaginemos que he marcado el de bold y el de under.
¿Cómo hago para que el texto de la página principal me aparezca en negrita y subrayado? No se me ocurre como, porque si hago esto:
si (bold = 1) entonces texto = <b>$texto</b> sino si (italic = 1) entonces texto = <i>$texto</i> sino si (under = 1) entonces texto = <u>$texto</u> sino texto = $texto
Pero claro, esto no me deja la posibilidad de hacer combinaciones. Y usando el switch tengo el mismo problema >.<
Alguna idea?
|
|
|
En línea
|
|
|
|
Spider-Net
Desconectado
Mensajes: 1.165
Un gran poder conlleva una gran responsabilidad
|
Claro, tal y como has dicho,tu accedes a la base de datos y compruebas el valor y según ese valor aplicas la etiqueta html que sea.
Si lo haces con un if y elseif no va, pero hazlo con un if debajo de otro, así si que funcionaría, porque lo harías de la siguiente forma:
$texto contiene el texto vale? ahora entras en una serie de if's
if(bold==1){ $texto="<b>".$texto."</b>"; }
if(under==1){ $texto="<u>".$texto."</u>"; }
Eso funcionaría perfectamente el resultado sería un texto negrita y subrayado. Por qué?
Pues si hacemos un ejemplo por ejemplo:
$texto="hola que tal";
Entramos a los if's y están ambos activados así que en el bold la cadena $texto contiene: "<b>hola que tal</b>";
después entra en el siguiente if y está activado también, pues sería: "<u><b>hola que tal</b></u>";
Resultado?
Hola que tal
Por lo tanto está bien aplicada esa lógica y debería de funcionar bien, pruebalo y ya nos cuentas.
Yo personalmente me haría una función en php a la que se le pase como parámetro el texto y que automáticamente le aplique los estilos correspondientes dependiendo de las opciones marcadas (si subrayado o no, si negrita o no, si italica o no etc) y así simplemente llamas a esa función que aplicará los estilos y dejará el texto formateado sin mayor complicaciones.
Saludos.
|
|
« Última modificación: 17 Mayo 2009, 03:49 am por Spider-Net »
|
En línea
|
|
|
|
lipman
|
Si es verdad.. no caí en eso >.< xD Como dije, lo del texto es un mero ejemplo, lo que queria saber era si podria leer esas configuraciones boleanas de otra forma que no fuese con un if, pero veo que es la mejor forma ^^ Un saludo y graciass
|
|
|
En línea
|
|
|
|
Syphroot
Desconectado
Mensajes: 268
All You Need To Do Is Follow The Worms
|
Al parecer ya lo tienes resuelto, pero se me ocurren algunas ideas... Supongamos tu tabla esta asi: element | bold | under | italic | enfasis | 0 | 0 | 1 | titulo | 1 | 1 | 0 | enfasis2 | 1 | 0 | 0 |
Y aqui lo interesante, haces una consulta SQL por un elemento que te indica como aplicar los formatos SELECT bold, UNDER, italic FROM nombre_tabla WHERE element = 'titulo';
Despues, obtenemos el resultado en un array asociativo. En el siguiente codigo, ese array se llama $resultado_db. En la variable $r tienes el texto al que aplicar formato: $r = "Cadena por aplicar formato"; ( 'bold' => '<b>*</b>', 'under' => '<u>*</u>', 'italic' => '<i>*</i>' ); foreach($formatos as $atributo => $html) { if($resultado_db[$atributo] == 1) }
En resumen, lo que hace ese codigo es recorrer el array de formatos y si del resultado obtenido de la consulta SQL tiene un "1" en algun campo (que estan en los indices del array formatos) sustituye el "*" del valor del array por el texto original en la variable $r, asignandolo a la misma variable $r para asi aplicar multiples formatos. Un tip, incluso en vez de poner como esta el "under" en el array de formatos, puedes usar CSS y otros elementos: 'under' => '<span class="subrayado">*</span>'
Es algo que se me ocurrio al momento espero pueda servir Edito: Si tu cadena original contiene un "*", entonces puedes escoger un patron que practicamente no vaya a existir para evitar sustituciones donde no van
|
|
« Última modificación: 17 Mayo 2009, 11:39 am por Syphroot »
|
En línea
|
|
|
|
lipman
|
Muchas gracias Syphroot En el tema del diseño, si que usaré CSS, que es lo más cómod ^^ Pero este era un simple ejemplo para entender como aplicar algunas configuraciones y me servirá todo Muchas gracais de nuevo ^^
|
|
|
En línea
|
|
|
|
|
|