Ok, paso a explicarte, que ayer ya era un poco tarde
.
Los campos de selección múltiple presentan un problema cuando tratas de mostrar sus valores en el postbit. Si utilizas el método que has descrito en el
primer mensaje de este tema, lo que obtendrás será un número en lugar de los valores seleccionados por los usuarios. Esto se debe al método que se utiliza para almacenar en la base de datos los valores seleccionados por el usuario.
Los campos de selección múltiple utilizan un esquema binario para almacenar los valores seleccionados. Cada opción está dada por un valor numérico, algo como esto:
Opción 1 = 2^0 = 1
Opción 2 = 2^1 = 2
Opción 3 = 2^2 = 4
Opción 4 = 2^3 = 8
Opción 5 = 2^4 = 16
Opción 6 = 2^5 = 32
Opción 7 = 2^6 = 64
Opción 8 = 2^7 = 128
Opción 9 = 2^8 = 256
Opción 10 = 2^9 = 512
etc.
Fíjate que cada número es una potencia de 2. Si miraras el valor almacenado para un campo de selección múltiple en formato binario natural, entonces cada bit representaría una de las opciones en el campo de selección múltiple. Por ejemplo, si un usuario seleccionó las opciones 2 y 6, entonces el valor almacenado sería la suma del resultado de las dos potencias para cada opción. Osea, según el esquema anterior, se sumaría 2 y 32. Éste será el número mostrado en el postbit.
Actualmente no existe una manera de "traducir" esos valores y mostrar en el postbit las opciones seleccionadas por el usuario, en lugar de un número. Sin embargo, existe la posibilidad de utilizar una serie de condiciones para revisar por cada bit almacenado en la base de datos, y posteriormente mostrar el código apropiado para cada opción. La condición (para vBulletin 4) sería:
Insertar CODE, HTML o PHP:
<vb:if condition="$post['field[B][COLOR=Red]X[/COLOR][/B]'] [B][COLOR=DarkGreen]&[/COLOR][/B] [B][COLOR=Blue]1[/COLOR][/B]">
CÓDIGO A MOSTRAR SI LA OPCIÓN [B][COLOR=DarkRed]1[/COLOR][/B] HA SIDO SELECCIONADA
</vb:if>
<vb:if condition="$post['field[B][COLOR=Red]X[/COLOR][/B]'] [B][COLOR=DarkGreen]&[/COLOR][/B] [B][COLOR=Blue]2[/COLOR][/B]">
CÓDIGO A MOSTRAR SI LA OPCIÓN [B][COLOR=DarkRed]2[/COLOR][/B] HA SIDO SELECCIONADA
</vb:if>
<vb:if condition="$post['field[B][COLOR=Red]X[/COLOR][/B]'] [B][COLOR=DarkGreen]&[/COLOR][/B] [B][COLOR=Blue]4[/COLOR][/B]">
CÓDIGO A MOSTRAR SI LA OPCIÓN [B][COLOR=DarkRed]3[/COLOR][/B] HA SIDO SELECCIONADA
</vb:if>
<vb:if condition="$post['field[B][COLOR=Red]X[/COLOR][/B]'] [B][COLOR=DarkGreen]&[/COLOR][/B] [B][COLOR=Blue]8[/COLOR][/B]">
CÓDIGO A MOSTRAR SI LA OPCIÓN [B][COLOR=DarkRed]4[/COLOR][/B] HA SIDO SELECCIONADA
</vb:if>
<vb:if condition="$post['field[B][COLOR=Red]X[/COLOR][/B]'] [B][COLOR=DarkGreen]&[/COLOR][/B] [B][COLOR=Blue]16[/COLOR][/B]">
CÓDIGO A MOSTRAR SI LA OPCIÓN [B][COLOR=DarkRed]5[/COLOR][/B] HA SIDO SELECCIONADA
</vb:if>
<vb:if condition="$post['field[B][COLOR=Red]X[/COLOR][/B]'] [B][COLOR=DarkGreen]&[/COLOR][/B] [B][COLOR=Blue]32[/COLOR][/B]">
CÓDIGO A MOSTRAR SI LA OPCIÓN [B][COLOR=DarkRed]6[/COLOR][/B] HA SIDO SELECCIONADA
</vb:if>
<vb:if condition="$post['field[B][COLOR=Red]X[/COLOR][/B]'] [B][COLOR=DarkGreen]&[/COLOR][/B] [B][COLOR=Blue]64[/COLOR][/B]">
CÓDIGO A MOSTRAR SI LA OPCIÓN [B][COLOR=DarkRed]7[/COLOR][/B] HA SIDO SELECCIONADA
</vb:if>
<vb:if condition="$post['field[B][COLOR=Red]X[/COLOR][/B]'] [B][COLOR=DarkGreen]&[/COLOR][/B] [B][COLOR=Blue]128[/COLOR][/B]">
CÓDIGO A MOSTRAR SI LA OPCIÓN [B][COLOR=DarkRed]8[/COLOR][/B] HA SIDO SELECCIONADA
</vb:if>
<vb:if condition="$post['field[B][COLOR=Red]X[/COLOR][/B]'] [B][COLOR=DarkGreen]&[/COLOR][/B] [B][COLOR=Blue]256[/COLOR][/B]">
CÓDIGO A MOSTRAR SI LA OPCIÓN [B][COLOR=DarkRed]9[/COLOR][/B] HA SIDO SELECCIONADA
</vb:if>
<vb:if condition="$post['field[B][COLOR=Red]X[/COLOR][/B]'] [B][COLOR=DarkGreen]&[/COLOR][/B] [B][COLOR=Blue]512[/COLOR][/B]">
CÓDIGO A MOSTRAR SI LA OPCIÓN [B][COLOR=DarkRed]10[/COLOR][/B] HA SIDO SELECCIONADA
</vb:if>
En el esquema anterior, esa serie de condiciones evalúan si la opción
# ha sido seleccionada, leyendo el
bit binario desde la base de datos. El símbolo
Amperson (
& ) es un
operador "bit a bit".
Cabe destacar que hay que especificar el
ID del campo (la letra
X, en el esquema anterior), de lo contrario se devolverá en la plantilla postbit una línea de código incorrecta.
Para tu caso, Nanda, yo he personalizado un poco el código que has de colocar en el postbit, para que cada opción a mostrar sea precedida por una "coma" ( , ). Paso a explicarlo:
Insertar CODE, HTML o PHP:
<!-- Inicio de Campo Multi selección -->
<vb:if condition="$comma = ''"></vb:if>
<dt>Nombre del campo</dt> <dd>
<vb:if condition="$post['fieldX'] & 1">
{vb:raw comma} Karaoke Fan Club
<vb:if condition="$comma = ','"></vb:if>
</vb:if>
<vb:if condition="$post['fieldX'] & 2">
{vb:raw comma} Kanan
<vb:if condition="$comma = ','"></vb:if>
</vb:if>
<vb:if condition="$post['fieldX'] & 4">
{vb:raw comma} Umi no Kami
<vb:if condition="$comma = ','"></vb:if>
</vb:if>
<vb:if condition="$post['fieldX'] & 8">
{vb:raw comma} Mirotics
<vb:if condition="$comma = ','"></vb:if>
</vb:if>
<vb:if condition="$post['fieldX'] & 16">
{vb:raw comma} Musumérida
<vb:if condition="$comma = ','"></vb:if>
</vb:if>
<vb:if condition="$post['fieldX'] & 32">
{vb:raw comma} Amai Love
<vb:if condition="$comma = ','"></vb:if>
</vb:if>
<vb:if condition="$post['fieldX'] & 64">
{vb:raw comma} IA Psychedelic Orchestra
<vb:if condition="$comma = ','"></vb:if>
</vb:if>
</dd>
<!-- Fin de Campo Multi selección -->
Tú has especificado la siguiente lista de opciones (no sé si "Ninguno" es una opción):
- Karaoke Fan Club (Valor binario = Opción 1 = 2^0 = 1)
- Kanan (Valor binario = Opción 2 = 2^1 = 2)
- Umi no Kami (Valor binario = Opción 3 = 2^2 = 4)
- Mirotics (Valor binario = Opción 4 = 2^3 = 8)
- Musumérida (Valor binario = Opción 5 = 2^4 = 16)
- Amai Love (Valor binario = Opción 6 = 2^5 = 32)
- IA Psychedelic Orchestra (Valor binario = Opción 7 = 2^6 = 64)
Tomaré una condición del esquema anterior como ejemplo:
Insertar CODE, HTML o PHP:
<vb:if condition="$post['field[B][COLOR=DarkSlateBlue]X[/COLOR][/B]'] & [B][COLOR=Purple]1[/COLOR][/B]">
[B]{vb:raw comma}[/B] [U]Karaoke Fan Club[/U]
[COLOR=DarkOrange]<vb:if condition="$comma = ','"></vb:if>[/COLOR]
</vb:if>
X será el ID del campo de perfil.
1 será el valor binario para la opción Karaoke Fan Club (que supongo fue la primer opción que especificaste en el listado).
{vb:raw comma} será la variable devuelta por la condición
<vb:if condition="$comma = ','"></vb:if>
Karaoke Fan Club será el código mostrado en el postbit si el usuario ha elegido la opción
1.
Así que sí, solamente añade ese código en la ubicación del postbit que desees
. Tienes que añadir tantas condiciones conforme vaya aumentando la cantidad de opciones que añadas en el campo.
Espero que te sea útil. Por favor me haces saber si necesitas alguna otra cosa.
Saludos cordiales.