Descripción de abreviaturas

Soy Juan-José Gallardo y me vuelvo a poner en contacto contigo, para pedirte tu inestimable ayuda de nuevo.
Te recuerdo: La web en cuestión es: http://www.artecofradiero.comze.com : puedes probar introduciendo por ejemplo CASTILLO en el campo "Todas las obras de un AUTOR" y pinchando en el botón ICONOGRAFÍA o ENSERES para ver los resultados.
Resulta que en la base de datos, algunos datos están escritos con abreviaturas (por ejemplo N.E. Significa NO ESPECIFICADO, P.M. Es Paso de Misterio,...). Y amigos que han consultado mi base de datos, me dicen que no entienden lo que significan las abreviaturas, y creo que eso habría que especificarlo.
Yo creo que de la manera más interactiva que se podría hacer, sería colocando el cursor del ratón sobre la abreviatura impresa en el listado, y que te saliese un cuadrito con la explicación de la abreviatura, de manera similar a, por ejemplo, cuando ves una foto en una página web y poniendo el cursor encima, te sale un pequeña descripción. ¿Me explico bien?
Se que ésto se puede hacer con enlaces HTML, pero los resultados que imprimo en mi listado no son hipervínculos (y preferiría que no lo fuesen de momento, si es posible); los obtengo con un 'echo' de PHP:
$imagen = mysql_result($res, $i, "iconografia.imagen");
echo "
<td>$imagen</td>
";
¿Podrías aclarame la mejor manera de implementar una solución para ésto?

3 respuestas

Respuesta
1
Juan José,
para esto deberías usar el atributo title.
No sé qué es lo que hay dentro de tu variable $imagen. Supongo que una eitqueta html del tipo IMG. Si es así, añádele el atributo title con la descripción. Por ejemplo:
<img src="primermisterio.jpg" title="El Primer Misterio">
Hola David,
Lo que se guarda en la variable $imagen no es una foto, es una campo de la base de datos (de tipo texto), por ejemplo: N.S. de la Esperanza Macarena, y lo que yo quiero es que al colocar el cursor sobre N.S., salga un cuadrito de texto que ponga el significado de las abreviaturas N.S., que es Nuestra Señora.
Espero que ahora esté más claro. Muchas gracias por tu interés.
Juan José,
Para que te salga el cuadradito sobre la breviatura, lo más correcto sería que usases una etiqueta de abreviatura. Por ejemplo:
<?php
echo '<abbr title="Nuestra Señora">N.S.</abbr>';
?>
Esto hace el efecto que tu quieres sobre la abreviatura.
Hola David,
tu solución en principio en perfecta.
Pero el problema en mi caso, es que las abreviaturas en cuestión, se encuentran dentro de una cadena de texto, extraída de un campo de la base de datos. Un ejemplo sería:
   REST. N.P.J. DEL GRAN PODER P.M.
Y no se como identificar que el cursor se sitúa sobre una abreviatura, ya que al ser campos de la base de datos, no los escribo a mano en la sentencia echo, sino que lo que imprimo en el echo es el resultado de la búsqueda en la base de datos. ¿Me explico?
Una vez identificada la abreviatura, se me ocurre que ya sería cuestión de buscarla en otra tabla de la base de datos donde estén relacionadas todas las abreviaturas con sus correspondientes significados, e incluirla en la etiqueta de abreviatura con una variable a la que le hemos asignado el significado de la abreviatura.
¿Sería posible hacer ésto, o mejor buscar otra solución para aclararle al usuario el significado de la abreviaturas?
Muchas gracias por tu interés.
Juan José,
si la base de datos es 'tuya' y la usas sólo para este fin, puedes almacenar el texto con las etiquetas ya incluidas. En lugar de guardar "REST. N.P.J. DEL GRAN PODER P.M.", guardas:
"<abbr title="restauracion">REST.</abbr> <abbr title="Nuestro ...">N.P.J.</abbr> etcétera"
Aunque esto claro, aumentará considerablemente la longitud del campo.
Otra solución más práctica sería crearte una función a la que le pases el texto del campo original de la base de datos y realice estas modificaciones devolviéndote la cadena a imprimir con todas las etiquetas puestas. Podrías usar una matriz para almacenar las abreviaturas y su significado dentro de esta función. Así sólo tienes que analizar la cadena en búsqueda de las abreviaturas definidas y cambiarla por la cadena que incluye las etiquetas abbr y su significado.
Hola David,
La base de datos es mía, la he creado y la actualizo constantemente, por lo que lo de incluir las etiquetas en la base de datos es una gran idea, pero no lo veo practico en mi caso concreto, por la cantidad de información que introduzco constantemente.
Me convence más lo de analizar la cadena, a ver si soy capaz de programarlo y que funcione.
Muchísimas de nuevo, gracias por tu inestimable ayuda.
Respuesta
1
Bueno mientras no exista el texto como vinculo es muy difícil trabajar un tooltip ya sea de texto o de imágenes, por lo que te podría recomendar ya que no quieres volverlo link, es que escribas algo descriptivo por cada campo en la base de datos, podría ser algo así:
<?
$option=""N.E.";
switch ($option) {
case "N.E."
echo "NO ESPECIFICADO";
break;
case "P.M.":
echo "PASO DE MISTERIO";
break;
case 3:
echo "esta activada la opcion 3";
break;
case 4:
echo "esta activada la opcion 4";
break;
}
?>
Igual puedes utilizar un else if
Bueno es una de las muchas posibilidades que puedes hacer.
Otra cosa es si en ese campo muestras es una imagen.
Me cuentas
Almonato
En principio me parece una fantástica solución, intentaré adaptarla a mi programa.
Disculpa por la tardanza en contestarte.
Muchas gracias por tu interés, almonato.
Respuesta
1
De nuevo jjgallardo
Sugiero que puedes manejar ese contenido con un atributo de los tags td llamado title, por ejemplo puedes escribir:
<td title="NO ESPECIFICADO">N.E.</td>
Entonces cuando posicionas el cursor sobre ese cuadro, aparece un cuadrito que dice "no especificado".
Hola apolinux,
Tu solución en principio en perfecta.
Pero el problema en mi caso, es que las abreviaturas en cuestión, se encuentran dentro de una cadena de texto, extraída de un campo de la base de datos. Un ejemplo sería:
REST. N.P.J. DEL GRAN PODER P.M.
Y no se como identificar que el cursor se sitúa sobre una abreviatura, ya que al ser campos de la base de datos, no los escribo a mano en la sentencia echo, sino que lo que imprimo en el echo es el resultado de la búsqueda en la base de datos. ¿Me explico?
Una vez identificada la abreviatura, se me ocurre que ya sería cuestión de buscarla en otra tabla de la base de datos donde estén relacionadas todas las abreviaturas con sus correspondientes significados, e incluirla en la etiqueta de abreviatura con una variable a la que le hemos asignado el significado de la abreviatura.
¿Sería posible hacer ésto, o mejor buscar otra solución para aclararle al usuario el significado de la abreviaturas?
Muchas gracias por tu interés.
Estamos hablando entonces de bd relacional. Supongamos que tienes la tabla de datos "imagenes", donde tienes la información de los nombres de las imágenes así:
imagenes_id  integer
nombre_imagen texto
abreviatura_imagen_id   integer
y la otra tabla "abreviaturas_imagen" donde esta la info de las abreviaturas
abreviaturas_imagen_id  integer
nombre_abreviatura varchar(10)
abreviatura_detalle varchar(50)
Estas dos tablas se relacionan por el campo abreviaturas_imagen_id, por ej un registro de imagens seria
1, 's.c. de la coronación de espina', 1
Y los registros de abreviaturas_imagen seria
10, 'S.c', 'santa colona'
11, 'M.s', 'maría santísima'
Por lo tanto para sacar los resultados sería una consulta sql como:
select * from imagenes
left join abreviaturas_imagen
   USING (abreviaturas_imagen_id)
Entonces te trae los campos de cada imagen, y la información de la abreviatura asociada a cada campo.
por lo tanto en el ciclo while o foreach para listar cada fila, podrias obtenerlo asi
...
<td title="<?php echo $fila['nombre_abreviatura']?>"><?php echo $fila['abreviatura_detalle']?></td>
...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas