Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] crear un enlace href que remita al contenido de una variable

Estas en el tema de crear un enlace href que remita al contenido de una variable en el foro de PHP en Foros del Web. Hola a todos, Estoy creando una web dinámica para hacer búsquedas a partir de una base de datos en mysql (sobre autores, discos, letras y ...
  #1 (permalink)  
Antiguo 26/08/2015, 19:15
 
Fecha de Ingreso: agosto-2015
Mensajes: 21
Antigüedad: 8 años, 7 meses
Puntos: 1
crear un enlace href que remita al contenido de una variable

Hola a todos,

Estoy creando una web dinámica para hacer búsquedas a partir de una base de datos en mysql (sobre autores, discos, letras y canciones). Al hacer una búsqueda por autor, quiero hacer que la página resultante muestre una lista de canciones de ese autor y, a la derecha de cada canción, un link que remita a la letra de la canción correspondiente. Es decir:

canción 1 letra
canción 2 letra
canción 3 letra
...

(siendo "letra" un link)

La parte de código php en la que estoy atascado es la siguiente:

Código PHP:
$get_songs_sql "SELECT song_id, song_title, lyric FROM songs WHERE author_id = '".$safe_author_id."' ORDER BY song_title";
$get_songs_res mysqli_query($mysqli$get_songs_sql) or die (mysqli_error($mysqli));

if (
mysqli_num_rows($get_songs_res) > 0) {
                            
    
$display_block .= "<table>";
                            
    while (
$songs_info mysqli_fetch_array($get_songs_res)) {
        
$song_id $songs_info['song_id'];
        
$songs $songs_info['song_title'];
        
$lyric $songs_info['lyric'];

         
$display_block .= "<tr><td>$songs</td>
        <td><a href="
AQUÍ MI DUDA????">letra</a></td></tr>";
    }
                            
    
$display_block .= "</table>";

Resumiendo, tengo la variable $song_title y la variable $lyric, y un loop que me permite crear una tabla donde cada fila mostraría el título de la canción y la letra correspondiente. Pero como la letra, al ser un texto muy largo, crearía una celda muy ancha, prefiero crear un link en su lugar que remita al texto de la letra (es decir, al contenido de la variable $lyric).

He probado haciendo lo siguiente:

<td><a href=".$lyric.">letra</a></td></tr>";

Pero al pinchar en el link obtengo el error: Objecto no localizado!

Alguna sugerencia?
  #2 (permalink)  
Antiguo 26/08/2015, 19:18
 
Fecha de Ingreso: agosto-2015
Mensajes: 21
Antigüedad: 8 años, 7 meses
Puntos: 1
Respuesta: crear un enlace href que remita al contenido de una variable

Corrijo un pequeño error en mi mensaje anterior:

Tengo la variable $songs (con el título de cada canción) y la variable $lyric (con la letra de cada cancion).
  #3 (permalink)  
Antiguo 26/08/2015, 19:21
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: crear un enlace href que remita al contenido de una variable

Básicamente debes pasar variables por enlace así:
Código HTML:
Ver original
  1. <a href="link.php?clave=valor&otra_clave=otro_valor">link</a>

Te sugiero leer el siguiente manual: http://php.net/variables.external

Por cierto, eso es HTML básico, deberías estudiar más.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #4 (permalink)  
Antiguo 26/08/2015, 20:14
 
Fecha de Ingreso: agosto-2015
Mensajes: 21
Antigüedad: 8 años, 7 meses
Puntos: 1
Respuesta: crear un enlace href que remita al contenido de una variable

Gracias por tu respuesta, pateketrueke.

He creado un archivo llamado letras.php y en él he incluido lo siguiente:

Código HTML:
Ver original
  1. <html>
  2. <head>
  3. <title>Letras.</title>
  4. </head>
  5. <body>
  6. <?php
  7. $letra = $_GET['id'];
  8. echo "$letra";
  9. ?>
  10. </body>
  11. </html>

Y en el código php de mi primer mensaje he incluido lo siguiente:

<a href=\"letras.php?id=$lyric\">letra</a></td></tr>";

Pero al hacerlo así me encuentro con dos problemas:
1) no sé cómo dar formato al texto de la letra (es decir, al contenido de $lyric), pues en ningún momento accedo al texto propiamente dicho al estar capturado en $lyric.
2) en la URL me aparece, obviamente, toda la letra de la canción, lo cual es un poco engorroso.

¿Existe alguna forma de pasar la variable por el enlace solucionando a la vez ambos problemas?
  #5 (permalink)  
Antiguo 26/08/2015, 20:40
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: crear un enlace href que remita al contenido de una variable

Ese es precisamente el problema: no debes pasar la letra por el enlace.

¿Y si sólo pasas el ID del registro y al recibir dicho ID haces la consulta correspondiente para mostrar el texto?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #6 (permalink)  
Antiguo 27/08/2015, 10:29
 
Fecha de Ingreso: abril-2015
Ubicación: Castelldefels
Mensajes: 76
Antigüedad: 9 años
Puntos: 3
Respuesta: crear un enlace href que remita al contenido de una variable

Estoy de acuerdo... pasa por la URL el ID del registro y una vez en la pagina correspondiente, haz la consulta para mostrar la letra.
  #7 (permalink)  
Antiguo 27/08/2015, 11:56
 
Fecha de Ingreso: agosto-2015
Mensajes: 21
Antigüedad: 8 años, 7 meses
Puntos: 1
Respuesta: crear un enlace href que remita al contenido de una variable

Gracias! Funcionó.

En efecto, al pasar el ID solucioné el problema engorroso de tener todo el texto de la letra en el URL. Respecto a poder dar formato al texto (i.e. al contenido de la variable $lyric), simplemente tuve que usar la función PHP siguiente:

Código PHP:
echo nl2br($lyric); 
Para convertir los cambios de línea insertados en MySQL en cambios de línea HTML (<br/>).

Gracias de nuevo

Etiquetas: contenido, enlace, href, mysql, select, sql, tabla, variable
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:33.