Botón PHP con acceso a MySql

Quiero hacer un botón que cuando el usuario haga clic lo lleve a una dirección URL que esta extraída desde la base de datos.

Tengo una base de datos con (id, título, descripción, url), los datos los extraigo sin problemas en una tabla php, el tema es que en la columna url quiero colocar un botón que cuando el usuario haga clic en ese botón, lo lleve a la url que está en la base de datos.

Tengo esto, que no me anda, seguramente tengo problemas con las comillas.

echo "<td><input type='button' value='Descargar' onclick='location.href=".$row["link"].";'></td>\n";

A todos desde ya ¡Muchas gracias! Y perdón por las molestias ocasionadas.

1 respuesta

Respuesta
1

He probado el código y es correcto, me temo que tu error no se encuentra en ese fragmento de código que has mostrado.
Lo más seguro es que no esté recibiendo un valor correcto.

Si los campos de tu tabla son realmente (id, título, descripción, url), entonces $row["link"] no hace referencia a nada y debería ser $row["url"].

Si estas ejecutando desde chrome elije la opción de ver el código html (clic derecho y visualizar el orígen de la página). Una vez ahí comprueba que los valores impresos son sol enlaces y no "N/A", "NULL", o simplemente espacios vacíos.

Si ninguna de las anteriores indicaciones te ayudó, reescribeme en esta respuesta y si puede ser, dejame en alguna parte el origen de ese mysql_fetch_row ;)

Hola, te paso el código por completo, haber si me podéis ayudar.

<html>
<head>
<title>Material did&aacute;ctico.</title>
<link rel="shortcut icon" href="imagenes/favicon.ico" type="image/x-icon"/>
</head>
<body>
<?php
$link = mysql_connect("host", "user", "pas");
mysql_select_db("base", $link);

$result = mysql_query("select * from tabla;", $link);
if ($row = mysql_fetch_array($result)){
echo "<table border = '1' ALIGN='CENTER' WIDTH='auto'> \n";
echo "<tr> \n";
echo "<td><b>Id</b></td> \n";
echo "<td><b>T&iacutetulo</b></td> \n";
echo "<td><b>Descripci&oacuten</b></td> \n";
echo "<td><b>Descarga</b></td> \n";
echo "<td><b>URL</b></td> \n";
echo "</tr> \n";
do {
echo "<tr> \n";
echo "<td>".$row["idp"]."</td> \n";
echo "<td align='titulo'>".$row["titulo"]."</td>\n";
echo "<td>".$row["descripcion"]."</td>\n";
if($row["visible"]==0){
echo "<td><input type='button' value='Descargar.' disabled='true'/></td>\n";
}
if($row["visible"]==1){
echo "<td><input type='button' value ='Descargar.' onclick=''/></td>\n";
}
echo "<td>".$row["direccion"]."</td>\n";
echo "</tr> \n";

} while ($row = mysql_fetch_array($result));

echo "<tr> \n";
echo "<td colspan='4' align='center'><b>Todo el material que aquí se encuentra es solamente para uso didáctico.</b></td> \n";
echo "</tr> \n";
echo "</table> \n";
} else {
echo "¡ La base de datos está vacia !";
}
?>

</body>
</html>

Tengo un problemas de comillas, porque en pruebas, agregue comillas a la bd en la url y funciono. Asique el problemas con las comillas que cito a la url dentro del php

Lamento mucho la tardanza, no vi la notificación de que habías respondido.
Por un lado, buff... mysql_connect, esto hoy en día ya prácticamente no se hace, ahora se usa mysqli en su lugar. Pero regresando al problema, he probado el código desde apache y no me ha dado errores, lo cual me da a pensar que probablemente está recibiendo caracteres extraños desde la BBDD en el url que son convertidos a html impidiendo la buena visualización (como <, >, #&...").
Como primera alternativa, te diría que reemplaces dicha línea por

Echo '<td><a href="'.$row["direccion"].'">Link...</a></td>\n';

Aclarándole de ese modo al browser que todo lo que se encuentra dentro de esas comillas se trata de una URL.
Otra posibilidad que se me ocurre (que no tiene porqué, pero podría ser eso), es que no pueda reconocer algunos caracteres al no tener la etiqueta UTF-8, agrega esto en el header a ver si influye:

<meta charset="UTF-8">

En esta segunda posibilidad también influye el tipo de caracteres que uses en las tablas de la BBDD, yo suelo usar urf8_spanish_ci y nunca me ha dado problemas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas