Hola amigos. Necesito ayuda con esto:

Temas relacionados: php, html, mysql

El otro día quize crear un form en html en que uno ingrese la URL de una imagen y que la guarde en una base de datos. Para eso hice lo siguiente. Cree el archivo formulario.html
<html>
<body>
<center>
<form method="post" action="add_reg.php3">
URL Imagen:<input type="Text" name="url"/><br>
<input type="Submit" name="enviar" value="Cargar Imagen"/>
</form>
</center>
</body>
</html>
Luego cree el archivo add_reg.php3
<?php
$link = mysql_connect("localhost", "usuario", "clave");
mysql_select_db("db2407480-admin");
$sql = "UPDATE  `db2407480-admin`.`imagen` SET  `imagen`.`url` = '$url'";
$result = mysql_query($sql);
echo "Tu imagen fue cargada a la base de datos y sera mostrada en el sitio.";
?>
Los pase por FileZilla a mi servidor gratuito y les di permisos chmod 777. También cree una base de datos (db2407480-admin) y en ella una tabla llamada "imagen" que contiene la columna "url". En la misma tabla agregue manualmente por la base de datos una fila y en el valor de url le puse: [Enlace externo eliminado para invitados] (solo un ejemplo)

Ahora el problema.

Voy a formulario.html, escribo cualquier url, le doy a "Cargar Imagen", me lleva al archivo add_reg.php3 y me da el mensaje: "Tu imagen fue cargada a la base de datos y sera mostrada en el sitio.". Hasta ahí todo bien. ¿Qué debería pasar? Debería cambiarse el [Enlace externo eliminado para invitados] (en `db2407480-admin`.`imagen`.`url`) por la url que escribí en el formulario, pero en ves de eso, la columna url se vacía, osea se borra el link que salía escrito y queda en blanco.

Notas extras:

Si yo cambio la query
$sql = UPDATE  `db2407480-admin`.`imagen` SET  `imagen`.`url` = '$url'
Por
$sql = UPDATE  `db2407480-admin`.`imagen` SET  `imagen`.`url` = 'cualquiercosa'
Si hago ese cambio, la columna url se edita correctamente. Con eso podemos concluir que no hay un problema de conexión con la base de datos y que el problema esta en el $url.

Ayuda!!
Es normal que te deje el campo vacío, te olvidaste (?) de declarar la variable $url.

Tendrás que hacer lo siguiente al principio del archivo php:

$url = mysql_real_escape_string($_POST['url']);

Así ya tienes la variable $url declarada con el contenido mandado por POST y ademas escapado para que no te hagan inyección sql (?)

PD: no escribas quize otra vez o no te vuelvo a ayudar xD

Saludos
Soy un camaleón, en tu cama, leona ♪
$DoC escribió:Es normal que te deje el campo vacío, te olvidaste (?) de declarar la variable $url.

Tendrás que hacer lo siguiente al principio del archivo php:

$url = mysql_real_escape_string($_POST['url']);

Así ya tienes la variable $url declarada con el contenido mandado por POST y ademas escapado para que no te hagan inyección sql (?)

PD: no escribas quize otra vez o no te vuelvo a ayudar xD

Saludos
DoC, muchas gracias por tu ayuda. Para hacer esto yo me guié de una guía ([Enlace externo eliminado para invitados]) y si te fijas, en ella nunca declaraban la variable, ni la nombran ni nada, entonces yo pensé que no era necesario.

Me funcionó perfecto, muchas gracias. Con respecto al "quize", se me pasó, pero por lo general intento escribir lo mejor posible y te has fijado en el único error que he cometido, maldito
Responder

Volver a “Otros lenguajes”