Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Formulario que no inserta texto

Estas en el tema de Formulario que no inserta texto en el foro de PHP en Foros del Web. Buenos días maestros, Estoy haciendo mi primer programita basado en php, html y mysql y ya funciona lo básico que es que me haga los ...
  #1 (permalink)  
Antiguo 29/08/2013, 02:57
Avatar de sven_uri  
Fecha de Ingreso: mayo-2011
Mensajes: 109
Antigüedad: 12 años, 11 meses
Puntos: 4
Pregunta Formulario que no inserta texto

Buenos días maestros,

Estoy haciendo mi primer programita basado en php, html y mysql y ya funciona lo básico que es que me haga los inserts, los update y los drop en las diferentes tablas.

El problema viene en que en casi todos los formularios que tengo hay un campo que se llama descripción que es un textarea y si hay (por ejemplo) 3 campos + este textarea, no me hace los inserts si relleno los 4 campos pero en cambio sí relleno los 3 menos el textarea entonces sí. Creo que el problema viene de escribir caracteres como apostrofes, acentos... (¿Que opináis?)

Estuve buscando por foros y me mire con ojo lo de la ordenación. De momento el general lo tengo en "utf8_general_ci". Y lo que leí es que los campos descripción los debería tener en "utf8_spanish_ci". ¿Es verdad?

Por otra parte, todos mis archivos tienen el "<meta charset="utf-8">" pero no sé si al tratarse en su mayoría de archivos .php tengo que ponerlo de un modo distinto.


Gracias por vuestro tiempo :)
  #2 (permalink)  
Antiguo 29/08/2013, 03:00
Avatar de guardarmicorreo  
Fecha de Ingreso: noviembre-2012
Ubicación: Córdoba
Mensajes: 1.153
Antigüedad: 11 años, 5 meses
Puntos: 84
Respuesta: Formulario que no inserta texto

Cita:
Iniciado por sven_uri Ver Mensaje
Buenos días maestros,

Estoy haciendo mi primer programita basado en php, html y mysql y ya funciona lo básico que es que me haga los inserts, los update y los drop en las diferentes tablas.

El problema viene en que en casi todos los formularios que tengo hay un campo que se llama descripción que es un textarea y si hay (por ejemplo) 3 campos + este textarea, no me hace los inserts si relleno los 4 campos pero en cambio sí relleno los 3 menos el textarea entonces sí. Creo que el problema viene de escribir caracteres como apostrofes, acentos... (¿Que opináis?)

Estuve buscando por foros y me mire con ojo lo de la ordenación. De momento el general lo tengo en "utf8_general_ci". Y lo que leí es que los campos descripción los debería tener en "utf8_spanish_ci". ¿Es verdad?

Por otra parte, todos mis archivos tienen el "<meta charset="utf-8">" pero no sé si al tratarse en su mayoría de archivos .php tengo que ponerlo de un modo distinto.


Gracias por vuestro tiempo :)
¿y el código?
__________________
Ayúdame a hacerlo por mi mismo.
  #3 (permalink)  
Antiguo 29/08/2013, 03:06
Avatar de sven_uri  
Fecha de Ingreso: mayo-2011
Mensajes: 109
Antigüedad: 12 años, 11 meses
Puntos: 4
Respuesta: Formulario que no inserta texto

Cita:
Iniciado por guardarmicorreo Ver Mensaje
¿y el código?
Disculpas, no queria molestaros con el codigo.

Es el siguiente:

Código PHP:
Ver original
  1. <html>
  2.     <head>
  3.                 <meta charset="utf-8">
  4.         <title>Registro Objetivos</title>
  5.     </head>
  6. <body>
  7.     <form action="obj_registrat.php" method=post name="formulari">
  8.         Objetivo: <input type=text name="nom_obj"></input><br>
  9.         Descripción: <input type=text name="descripcio_obj"></input><br>
  10.         <input type="submit" name="boto_guardar" value="Guardar">
  11.     </form>
  12.  
  13. </body>
  14. <footer>
  15. </footer>
  16.  
  17. </html>

Y el que me hace los inserts:

Código PHP:
Ver original
  1. <?php
  2.     include("conexio.php");
  3. ?>
  4. <?php
  5.     if (isset($_POST['nom_obj']) && !empty($_POST['nom_obj']) &&
  6.     isset($_POST['descripcio_obj']) && !empty($_POST['descripcio_obj']))
  7.     {
  8.        
  9.         $name_obj = trim ($_POST['nom_obj']);
  10.         $descrip_obj = trim($_POST['descripcio_obj']);
  11.        
  12.             mysql_query("INSERT INTO objectius(objectius_nom,objectius_descripcio) values ('$name_obj','$descrip_obj')");
  13.         echo "Guardat satisfactoriament. <br>";
  14.         echo "<a href='form_obj.php'> Ingressar mas objetivos </a><br>";
  15.         echo "<a href='menu.php'> Volver al menu<br> </a>";
  16.     }
  17.     else
  18.     {
  19.         echo "Tienes que escribir algo.";
  20.     }
  21.  
  22. ?>
  #4 (permalink)  
Antiguo 29/08/2013, 03:23
Avatar de guardarmicorreo  
Fecha de Ingreso: noviembre-2012
Ubicación: Córdoba
Mensajes: 1.153
Antigüedad: 11 años, 5 meses
Puntos: 84
Respuesta: Formulario que no inserta texto

el código siempre es importante, casi tanto o más que la propia descripción de tu problema, porque sino podríamos estar horas y horas jugando a adivinar, eso es perder el tiempo :)

supongo que este es el código que sí te funciona no?

muestrame el que no te funciona, puesto que has dicho que hay formularios de 3 campos + 1 campo textarea y este formulario que me muestra solo tiene 2 campos a rellenar: nom_obj y descripcion_obj sin textarea.

saludos
__________________
Ayúdame a hacerlo por mi mismo.
  #5 (permalink)  
Antiguo 29/08/2013, 03:31
Avatar de sven_uri  
Fecha de Ingreso: mayo-2011
Mensajes: 109
Antigüedad: 12 años, 11 meses
Puntos: 4
Respuesta: Formulario que no inserta texto

Cita:
Iniciado por guardarmicorreo Ver Mensaje
el código siempre es importante, casi tanto o más que la propia descripción de tu problema, porque sino podríamos estar horas y horas jugando a adivinar, eso es perder el tiempo :)

supongo que este es el código que sí te funciona no?

muestrame el que no te funciona, puesto que has dicho que hay formularios de 3 campos + 1 campo textarea y este formulario que me muestra solo tiene 2 campos a rellenar: nom_obj y descripcion_obj sin textarea.

saludos
Jejeje recibido!

No no, este no funciona. Puede que me haya expresado mal pero, no funciona ningún formulario de los que tiene un textarea en el formulario. Por funcionar me refiero a que si yo escribo: "esto es una prueba" o "blablabla" sí que funciona, pero a la que sale un apostrofe, diéresis o acento no sube ningún campo, ni los input ni los textarea (la raíz es el textarea porque si escribo estos caracteres que comentaba en los inputs text (por ejemplo) sí que los sube (suponiendo claro que el textarea este vacío o sin ningún carácter especial).
  #6 (permalink)  
Antiguo 29/08/2013, 04:10
Avatar de guardarmicorreo  
Fecha de Ingreso: noviembre-2012
Ubicación: Córdoba
Mensajes: 1.153
Antigüedad: 11 años, 5 meses
Puntos: 84
Respuesta: Formulario que no inserta texto

no entiendo a lo que llamas textarea, puesto que en el formulario HTML que has puesto no lo hay :S y si dices que el problema está en el textarea entonces este no es el código que hay que revisar :S
__________________
Ayúdame a hacerlo por mi mismo.
  #7 (permalink)  
Antiguo 29/08/2013, 04:32
Avatar de sven_uri  
Fecha de Ingreso: mayo-2011
Mensajes: 109
Antigüedad: 12 años, 11 meses
Puntos: 4
Respuesta: Formulario que no inserta texto

Cita:
Iniciado por guardarmicorreo Ver Mensaje
no entiendo a lo que llamas textarea, puesto que en el formulario HTML que has puesto no lo hay :S y si dices que el problema está en el textarea entonces este no es el código que hay que revisar :S
Se me ha escapado, aquí no lo cambie y funcionaba, el actual es el mismo pero en descripción le he puesto un textarea porque me di cuenta que escribía bastante y que con un input text se quedaba corto. Solo cambie el input por textarea :).
  #8 (permalink)  
Antiguo 29/08/2013, 06:44
Avatar de guardarmicorreo  
Fecha de Ingreso: noviembre-2012
Ubicación: Córdoba
Mensajes: 1.153
Antigüedad: 11 años, 5 meses
Puntos: 84
Respuesta: Formulario que no inserta texto

Cita:
Iniciado por sven_uri Ver Mensaje
Se me ha escapado, aquí no lo cambie y funcionaba, el actual es el mismo pero en descripción le he puesto un textarea porque me di cuenta que escribía bastante y que con un input text se quedaba corto. Solo cambie el input por textarea :).
ok, pon ese código
__________________
Ayúdame a hacerlo por mi mismo.
  #9 (permalink)  
Antiguo 29/08/2013, 07:28
Avatar de sven_uri  
Fecha de Ingreso: mayo-2011
Mensajes: 109
Antigüedad: 12 años, 11 meses
Puntos: 4
Respuesta: Formulario que no inserta texto

Cita:
Iniciado por guardarmicorreo Ver Mensaje
ok, pon ese código
Oki, pues el código quedaria como sigue.

El formulario:

Código PHP:
Ver original
  1. <html>
  2.     <head>
  3.         <title>Registro Objetivos</title>
  4.     </head>
  5. <body>
  6.     <form action="obj_registrat.php" method=post name="formulari">
  7.         Objetivo: <input type=text name="nom_obj"></input><br>
  8.         Descripción: <textarea name="descripcio_obj"></textarea><br>
  9.         <input type="submit" name="boto_guardar" value="Guardar">
  10.     </form>
  11.  
  12. </body>
  13. <footer>
  14. </footer>
  15.  
  16. </html>

Y el que se encarga de hacer los inserts:

Código PHP:
Ver original
  1. <?php
  2.     include("conexio.php");
  3. ?>
  4. <?php
  5.     if (isset($_POST['nom_obj']) && !empty($_POST['nom_obj']) &&
  6.     isset($_POST['descripcio_obj']) && !empty($_POST['descripcio_obj']))
  7.     {
  8.        
  9.         $name_obj = trim ($_POST['nom_obj']);
  10.         $descrip_obj = trim($_POST['descripcio_obj']);
  11.        
  12.         mysql_query("INSERT INTO objectius(objectius_nom,objectius_descripcio) values ('$name_obj','$descrip_obj')");
  13.         echo "Guardat satisfactoriament. <br>";
  14.         echo "<a href='form_obj.php'> Añadir más objetivos </a><br>";
  15.         echo "<a href='menu.php'> Volver al menú<br> </a>";
  16.     }
  17.     else
  18.     {
  19.         echo "Tienes que escribir algo.";
  20.     }
  21.  
  22. ?>
  #10 (permalink)  
Antiguo 29/08/2013, 08:03
Avatar de guardarmicorreo  
Fecha de Ingreso: noviembre-2012
Ubicación: Córdoba
Mensajes: 1.153
Antigüedad: 11 años, 5 meses
Puntos: 84
Respuesta: Formulario que no inserta texto

tampoco dices si te devuelve errores la aplicación y si es así podrías poner los errores que te devuelve.

el código HTML lo tienes bien.

observando el código PHP veo que las variables en VALUES no las estás pasando correctamente.

acostúmbrate a abrir y cerrar comillas cada vez que metas variables en una consulta.

tendría que quedarte así

Código PHP:
Ver original
  1. <?php
  2.     include("conexio.php");
  3. ?>
  4. <?php
  5.     if (isset($_POST['nom_obj']) && !empty($_POST['nom_obj']) &&
  6.     isset($_POST['descripcio_obj']) && !empty($_POST['descripcio_obj']))
  7.     {
  8.        
  9.         $name_obj = trim ($_POST['nom_obj']);
  10.         $descrip_obj = trim($_POST['descripcio_obj']);
  11.        
  12.         mysql_query("INSERT INTO objectius(objectius_nom,objectius_descripcio) values ('".$name_obj."','".$descrip_obj."')");
  13.         echo "Guardat satisfactoriament. <br>";
  14.         echo "<a href='form_obj.php'> Añadir más objetivos </a><br>";
  15.         echo "<a href='menu.php'> Volver al menú<br> </a>";
  16.     }
  17.     else
  18.     {
  19.         echo "Tienes que escribir algo.";
  20.     }
  21.  
  22. ?>

luego está el asunto de la base de datos.

si por ejemplo antes tenías un input y en la base de datos el campo lo tenías como varchar, ahora al introducir más caracteres de los que tenías capacitado para introducir en la base de datos no se va a permitir esa inserción.

tendrás que modificar ese campo a tipo text o longtext.

revisa eso, pruébalo y si no te funciona o te devuelve errores pon nuevamente el código con las modificaciones realizadas, confirma el cambio en la base de datos y pon los errores que te devuelve la aplicación.

saludos.
__________________
Ayúdame a hacerlo por mi mismo.
  #11 (permalink)  
Antiguo 29/08/2013, 12:20
Avatar de sven_uri  
Fecha de Ingreso: mayo-2011
Mensajes: 109
Antigüedad: 12 años, 11 meses
Puntos: 4
Respuesta: Formulario que no inserta texto

Cita:
Iniciado por guardarmicorreo Ver Mensaje
tampoco dices si te devuelve errores la aplicación y si es así podrías poner los errores que te devuelve.

el código HTML lo tienes bien.

observando el código PHP veo que las variables en VALUES no las estás pasando correctamente.

acostúmbrate a abrir y cerrar comillas cada vez que metas variables en una consulta.

tendría que quedarte así

Código PHP:
Ver original
  1. <?php
  2.     include("conexio.php");
  3. ?>
  4. <?php
  5.     if (isset($_POST['nom_obj']) && !empty($_POST['nom_obj']) &&
  6.     isset($_POST['descripcio_obj']) && !empty($_POST['descripcio_obj']))
  7.     {
  8.        
  9.         $name_obj = trim ($_POST['nom_obj']);
  10.         $descrip_obj = trim($_POST['descripcio_obj']);
  11.        
  12.         mysql_query("INSERT INTO objectius(objectius_nom,objectius_descripcio) values ('".$name_obj."','".$descrip_obj."')");
  13.         echo "Guardat satisfactoriament. <br>";
  14.         echo "<a href='form_obj.php'> Añadir más objetivos </a><br>";
  15.         echo "<a href='menu.php'> Volver al menú<br> </a>";
  16.     }
  17.     else
  18.     {
  19.         echo "Tienes que escribir algo.";
  20.     }
  21.  
  22. ?>

luego está el asunto de la base de datos.

si por ejemplo antes tenías un input y en la base de datos el campo lo tenías como varchar, ahora al introducir más caracteres de los que tenías capacitado para introducir en la base de datos no se va a permitir esa inserción.

tendrás que modificar ese campo a tipo text o longtext.

revisa eso, pruébalo y si no te funciona o te devuelve errores pon nuevamente el código con las modificaciones realizadas, confirma el cambio en la base de datos y pon los errores que te devuelve la aplicación.

saludos.
Respondiendo a la primera pregunta, no no, ningún error, me salta el mensaje de que los datos se han ingresado correctamente.

Revise que los campos estuvieran bien definidos y me di cuenta que lo tenía en varchar(300) (no se en que pensaba en ese momento, vaya animal), lo he cambiado a longtext y me vuelve a saltar el mensaje de que se ha ingresado correctamente y no se ha ingresado nada de nada. Sigue sin salir ningún error.

Anteriormente hice las pruebas a modo de prueba y error y es lo que comentaba que mientras no toque el campo textarea no hay ningún problema, no lo entiendo.
  #12 (permalink)  
Antiguo 29/08/2013, 13:35
Avatar de xSkArx  
Fecha de Ingreso: marzo-2008
Ubicación: Chile
Mensajes: 945
Antigüedad: 16 años, 1 mes
Puntos: 96
Respuesta: Formulario que no inserta texto

Intenta cambiando trim() por mysql_real_escape_string() o htmlentities()
__________________
Busca, lee y practica todo lo que puedas.
Usa siempre el buscador antes de postear.
Si posteas código, utiliza el HIGHLIGHT correcto.
  #13 (permalink)  
Antiguo 29/08/2013, 14:00
Avatar de sven_uri  
Fecha de Ingreso: mayo-2011
Mensajes: 109
Antigüedad: 12 años, 11 meses
Puntos: 4
Respuesta: Formulario que no inserta texto

Cita:
Iniciado por SkAr88 Ver Mensaje
Intenta cambiando trim() por mysql_real_escape_string() o htmlentities()
Solucionado cambiando trim() por mysql_real_escape_string()!! Muchas gracias guardarmicorreo y SkAr88.

Para que lo entienda, estos dos más o menos hacen lo mismo, ¿no? ¿Cuando es apropiado utilizar el uno o el otro?

Creia que era por culpa de introducir acentos y caracteres especiales, ahora almenos se insertan, aunque me sigue sin funcionar el meta de utf8 :S.

¡Gracias por vuestro tiempo y, sobretodo, paciencia! :)
  #14 (permalink)  
Antiguo 29/08/2013, 15:35
Avatar de guardarmicorreo  
Fecha de Ingreso: noviembre-2012
Ubicación: Córdoba
Mensajes: 1.153
Antigüedad: 11 años, 5 meses
Puntos: 84
Respuesta: Formulario que no inserta texto

pues no entiendo por qué cambiando trim por real scape string te funciona. a mi tu código anterior sí me funciona.

para establecer la codificación debes hacerlo en el html y en la base de datos.
__________________
Ayúdame a hacerlo por mi mismo.

Etiquetas: formulario, html, inserta, mysql, 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 00:19.