Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] MySQL guarda todos los campos menos 1

Estas en el tema de MySQL guarda todos los campos menos 1 en el foro de PHP en Foros del Web. Hola a todos. Ante todo y como siempre, muchas gracias por leer esto y echarme una mano si podéis. Estoy haciendo algo simple, un formulario ...
  #1 (permalink)  
Antiguo 15/09/2014, 10:56
 
Fecha de Ingreso: octubre-2013
Ubicación: Madrid
Mensajes: 53
Antigüedad: 10 años, 6 meses
Puntos: 1
MySQL guarda todos los campos menos 1

Hola a todos.

Ante todo y como siempre, muchas gracias por leer esto y echarme una mano si podéis.

Estoy haciendo algo simple, un formulario html que me inserta los datos mediante PHP en una tabla MySQL. El código del formulario es este.

Código:
<form id="send" method="post" action="proc.php">
<input name="Lurl" class="urlinput" type="url" value="" placeholder="Aqui la url">
<input class="enviar" type="submit" name="short" value="Enviar">
</form>
Y el código del archivo PHP.

Código:
<?php

$con = mysql_connect("127.0.0.1","basedeprueba","basedeprueba");
if (!$con)
{
die('Error de conexión ' . mysql_error());
 }
mysql_select_db("basedeprueba", $con);
$id = rand(100000,999999);
$lurl = mysql_real_escape_string($_POST['Lurl']);
$surl = substr(str_shuffle('abXYZ09'), 0, 2);
$hints = "1";
date_default_timezone_set("Europe/Madrid");
$date = date("d/m/Y");
$sql = "INSERT INTO wsturlss (id, lurl, surl, hints, date) VALUES ('" . $id . "','" . $lurl . "','" . $surl . "','" . $hints . "','" . $date . "')";
mysql_query($sql,$con);
echo "Shortened url is <a href=\"http://localhost/". $surl ."\">http://localhost/". $surl ."</a>";
mysql_close($con);

?>
hasta aqui, todo bien, pero en la base de datos me inserta TODOS los campos menos el campo de la URL. Creo que esta bien, porque en teoría lo saco del formulario con "$lurl = mysql_real_escape_string($_POST['Lurl']);" y lo meto en SQL con "Lurl".

Que puede haber mal?

Agradeceria cualquier ayuda.
Mil gracias.
  #2 (permalink)  
Antiguo 15/09/2014, 13:06
Avatar de jesus1975  
Fecha de Ingreso: febrero-2012
Ubicación: Valencia
Mensajes: 54
Antigüedad: 12 años, 2 meses
Puntos: 3
Respuesta: MySQL guarda todos los campos menos 1

Advertencia
Esta extensión está obsoleta a partir de PHP 5.5.0, y será eliminada en el futuro. En su lugar, deberían usarse las extensiones MySQLi o PDO_MySQL. Véase también la guía MySQL: elegir una API y P+F relacionadas para más información. Las alternativas a esta función incluyen:
mysqli_real_escape_string()
PDO::quote()

http://php.net/manual/es/function.my...ape-string.php
__________________
Nuevo portal de anuncios http://www.aquituanuncio.com
  #3 (permalink)  
Antiguo 15/09/2014, 14:31
 
Fecha de Ingreso: octubre-2013
Ubicación: Madrid
Mensajes: 53
Antigüedad: 10 años, 6 meses
Puntos: 1
Respuesta: MySQL guarda todos los campos menos 1

Gracias por tu respuesta, no sabía esto.
De todas formas es la primera vez que veo esta forma de insertar los campos, siempre he usado simplemente " $valor = $_POST['valor']; " pero tambien lo he probado en este caso y tampoco lo inserta en la base de datos. Es que al ser una URL tiene algo de especial?

Gracias de nuevo.
  #4 (permalink)  
Antiguo 15/09/2014, 17:56
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: MySQL guarda todos los campos menos 1

Como bien dices, en teoría debería estar bien, pero en la etapa de desarrollo te conviene verificar cada parte para asegurarte de que esté funcionando correctamente.
En tu caso, empieza como siempre, mostrando la query en pantalla antes de ejecutarla, cosa que se pueda verificar si está bien conformada. No te olvides que PHP y SQL no son el mismo lenguaje, y al embeber SQL dentro del PHP debe seguir respetando sus propias reglas.

Haz esto:
Código PHP:
Ver original
  1. <?php
  2.  
  3. $con = mysql_connect("127.0.0.1","basedeprueba","basedeprueba");
  4. if (!$con)
  5. {
  6. die('Error de conexión ' . mysql_error());
  7.  }
  8. mysql_select_db("basedeprueba", $con);
  9. $id = rand(100000,999999);
  10. $lurl = mysql_real_escape_string($_POST['Lurl']);
  11. $surl = substr(str_shuffle('abXYZ09'), 0, 2);
  12. $hints = "1";
  13. date_default_timezone_set("Europe/Madrid");
  14. $date = date("d/m/Y");
  15. $sql = "INSERT INTO wsturlss (id, lurl, surl, hints, date) VALUES ('" . $id . "','" . $lurl . "','" . $surl . "','" . $hints . "','" . $date . "')";
  16. // verificando
  17. echo $sql;
  18.  
  19. // Verificando fallos
  20. mysql_query($sql,$con) or die("Error al ejecutar la sentencia: ".mysql_error());
  21.  
  22. echo "Shortened url is <a href=\"http://localhost/". $surl ."\">http://localhost/". $surl ."</a>";
Recién con esas dos cosas podremos asegurarnos por donde hay que analizar.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 16/09/2014, 08:54
 
Fecha de Ingreso: octubre-2013
Ubicación: Madrid
Mensajes: 53
Antigüedad: 10 años, 6 meses
Puntos: 1
Respuesta: MySQL guarda todos los campos menos 1

Muchas Gracias por tu respuesta.

He incluido el código que me has dicho y me devuelve esto:

Código:
INSERT INTO wsturlss (id, lurl, surl, hints, date) VALUES ('561667','','Sp5Gy','1','16/09/2014')Shortened url is http://localhost/Sp5Gy
Pero sigue sin incluir el campo "Lurl" en la tabla. :(
  #6 (permalink)  
Antiguo 16/09/2014, 09:07
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años
Puntos: 326
Respuesta: MySQL guarda todos los campos menos 1

Vaya...

Insertas '' en el campo "lurl", y sale vacio?

Q putada!

PD: Revisa el parámetro ;)
__________________
>> Eleazan's Source
>> @Eleazan
  #7 (permalink)  
Antiguo 16/09/2014, 09:35
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: MySQL guarda todos los campos menos 1

Código MySQL:
Ver original
  1. INSERT INTO wsturlss (id, lurl, surl, hints, date)
  2. VALUES ('561667','','Sp5Gy','1','16/09/2014')
Pues a las pruebas me remito: No hay nada en ese $lurl...

Revisa el valor que llega en $_POST['Lurl'], porque a la variable no entra.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #8 (permalink)  
Antiguo 16/09/2014, 11:12
 
Fecha de Ingreso: octubre-2013
Ubicación: Madrid
Mensajes: 53
Antigüedad: 10 años, 6 meses
Puntos: 1
Respuesta: MySQL guarda todos los campos menos 1

Si, ya veo que aparece vacío, es como si no hubiese nada.

He hecho algunos cambios pero sigue igual, todos entran menos ese.

El formulario ahora le tengo de este modo:

Código HTML:
<form id="shorturl" action="short.php" name="shorturl" method="post">
<input size"255" id="longurl" class="urlinput" name="longurl" type="url" placeholder="Introduce o pega la URL">
<input class="short" type="submit" name="short" value="Guardar">
</form> 
Y el código de "Short.php" de la siguiente forma:

Código PHP:
<?php

include('connect.php');
            
$lurl $_POST['longurl'];
$surl substr(str_shuffle('abcdvwxyzABCDEFYZ012'), 02);
date_default_timezone_set("Europe/Madrid");
$date date("d/m/Y");
$hits "1";
            
mysql_query("INSERT INTO wst_uss (wst_lurl, wst_surl, wst_date, wst_hits) VALUES

(
'"
.$lurl."',
'"
.$surl."',
'"
.$date."',
'"
.$hits."'
)

"
);

?>
En el archivo "Connect.php" están los datos para la conexión, hasta ahí todo bien, lo único que creo que me falta es cerrar la conexión después de incluir los datos, que creo que es "mysql_close()"; si no me equivoco... o al ir en el archivo connect.php no hace falta esto.

No soy un experto en PHP pero he hecho otros formularios antes, para enviar email y he seguido la misma pauta, nosé porque no me inserta ese campo, puede que sea porque estoy en localhost, o que tenga mal el campo de la base de datos, un VARCHAR(255)?. Como podría localizar el error, agradezco cualquier ayuda.

Mil gracias.
  #9 (permalink)  
Antiguo 16/09/2014, 11:29
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: MySQL guarda todos los campos menos 1

Cita:
No soy un experto en PHP pero he hecho otros formularios antes, para enviar email y he seguido la misma pauta, nosé porque no me inserta ese campo, puede que sea porque estoy en localhost, o que tenga mal el campo de la base de datos, un VARCHAR(255)?. Como podría localizar el error, agradezco cualquier ayuda.
La base de datos no tiene nada que ver en el problema. Sólo inserta lo que recibe, pero en ese caso no recibe nada, proque la variable y el dato desde POST no llegan a la query. Así de simple.

Lo que tienes que verificar es por qué la variable no recibe datos. Obviamente no llegan al script.

Supongamos esto:
Código PHP:
Ver original
  1. $lurl = "http://localhos/www/elsitio";
  2. $surl = substr(str_shuffle('abcdvwxyzABCDEFYZ012'), 0, 2);
  3. $date = date("d/m/Y");
  4. $hits = "1";
  5.            
  6. $qry = "INSERT INTO wst_uss (wst_lurl, wst_surl, wst_date, wst_hits) VALUES
  7. ('".$lurl."', '".$surl."', '".$date."', '".$hits."')";
  8. echo $qry;
Si lo ejecuto, obtendo esto:
Cita:
INSERT INTO wst_uss (wst_lurl, wst_surl, wst_date, wst_hits) VALUES
('http://localhos/www/elsitio', 'BY', '16/09/2014', '1')
En consecuencia, no es un problema de la longitud, sino de lo que llega por POST.

Yo te diría que empearas por comprbar lo que llega:
Código PHP:
Ver original
  1. <?php
  2.  
  3. include('connect.php');
  4. echo  $_POST['longurl'];  
  5. $lurl = $_POST['longurl'];
  6.  
  7. $surl = substr(str_shuffle('abcdvwxyzABCDEFYZ012'), 0, 2);
  8. date_default_timezone_set("Europe/Madrid");
  9. $date = date("d/m/Y");
  10. $hits = "1";
  11.            
  12. $qry = "INSERT INTO wst_uss (wst_lurl, wst_surl, wst_date, wst_hits) VALUES('".$lurl."','".$surl."','".$date."','".$hits."')"
  13. mysql_query($qry) or die("Error en query: ".mysql_error());
  14. ?>
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #10 (permalink)  
Antiguo 17/09/2014, 10:58
 
Fecha de Ingreso: octubre-2013
Ubicación: Madrid
Mensajes: 53
Antigüedad: 10 años, 6 meses
Puntos: 1
Respuesta: MySQL guarda todos los campos menos 1

Gracias por vuestras respuestas.

El problema era que estaba viendo un archivo temporal creado por el generador y no el original, ya si que funciona.

Gracias y perdón por las molestias.

Etiquetas: campos, formulario, html, menos, mysql, select, sql, tabla
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 04:30.