Foros del Web » Programando para Internet » PHP »

Formulario PHP para introducir datos en BD MySQL

Estas en el tema de Formulario PHP para introducir datos en BD MySQL en el foro de PHP en Foros del Web. Antes de nada, pido disculpas si mi consulta está planteada en el foro equivocado. No sé si corresponde a PHP o a MySQL, yo he ...
  #1 (permalink)  
Antiguo 26/01/2008, 08:44
Avatar de -Defero-
Colaborador
 
Fecha de Ingreso: julio-2004
Ubicación: Guipúzcoa
Mensajes: 4.776
Antigüedad: 19 años, 9 meses
Puntos: 76
Pregunta Formulario PHP para introducir datos en BD MySQL

Antes de nada, pido disculpas si mi consulta está planteada en el foro equivocado. No sé si corresponde a PHP o a MySQL, yo he optado por PHP. Si algún moderador cree que está en el subforo equivocado, que lo mueva.

Y ahora, la pregunta. Estoy preparando un sistema (muy simple, ya habrá tiempo de complicarlo) para gestionar notas, de manera que entre varios usuarios puedan anotarse mensajes dirigidos a uno u otro, accediendo vía web. Habrá una tabla en la que se mostrará las últimas notas, indicando en cada una de quién es y para quién (cualquiera podrá ver las notas para los demás). No tengo ningún problema a la hora de escribir el documento que extraerá las notas de la base de datos y las mostrará, pero el formulario para introducir nuevas notas se me está resistiendo. Os cuento qué tengo hasta ahora.

Primero he puesto un formulario para introducir los datos:

Código PHP:
    echo "<form method=\"post\" action=\"notas.php\">
    <br>Fecha: <textarea name=\"form_fecha\" cols=\"10\" rows=\"1\"></textarea>
    Para: <textarea name=\"form_para\" cols=\"10\" rows=\"1\"></textarea>
    De: <textarea name=\"form_de\" cols=\"10\" rows=\"1\"></textarea>
    <br>Resumen: <textarea name=\"form_resumen\" cols=\"60\" rows=\"2\"></textarea>
    <br>Mensaje: <textarea name=\"form_mensaje\" cols=\"60\" rows=\"2\"></textarea>
    <br><input type=\"submit\" name=\"submit\" value=\"Añadir\"></form>"

Los campos son "form_fecha", "form_para", "form_de", "form_resumen" y "form_mensaje". En la base de datos de momento todos los campos son "text", a modo de prueba (luego ajustaré eso). El formulario envía los datos mediante método "POST", y redirige al propio documento del formulario.

Después viene esto:

Código PHP:
    $form_fecha $_POST["form_fecha"];
    
$form_para $_POST["form_para"];
    
$form_de $_POST["form_de"];
    
$form_resumen $_POST["form_resumen"];
    
$form_mensaje $_POST["form_mensaje"]; 
Al recargar el documento desde el formulario, recoge la información enviada mediante "POST".

Después un "include" con los datos de conexión a la base de datos (son correctos, y el usuario tiene permisos para añadir datos; lo he comprobado), y establecimiento de conexión:

Código PHP:
    include("db.php");
    
$conexion mysql_connect($dbhost,$dbuser,$dbpasswd);
    
mysql_select_db($dbname,$conexion); 
Ahora, primero compruebo que se hayan recibido datos vía "POST" mediante "if isset", y si es así, introduzco datos en la BD. Además, meto un "ECHO" para que me muestre en el propio documento qué es lo que se ha enviado vía POST:

Código PHP:
    if (isset($form_para))
        {
        
$sql "INSERT INTO notas (id, fecha, para, de, resumen, mensaje) VALUES ('', '$form_fecha', '$form_para', '$form_de', '$form_resumen, '$form_mensaje')";
        
$result mysql_query($sql);
           echo 
"<h2><a name=\"nuevo\"></a>Nueva nota añadida</h2>
        <ul>
        <li><b>Fecha:</b> $form_fecha</li>
        <li><b>De:</b> $form_de</li>
        <li><b>Para:</b> $form_para</li>
        <li><b>Resumen:</b> $form_resumen</li>
        <li><b>Mensaje:</b> $form_mensaje</li>
        </ul>"
;
        } 
No había citado el campo "id", que no incluyo en el formulario por no ser necesario, ya que es un campo "auto-incremental". La tabla se llama "notas", y los campos de la tabla están correctamente escritos.

El resultado es que me muestra los datos enviados vía "POST" en el último "ECHO", es decir, al pulsar el botón "enviar" del formulario los datos se envían correctamente. Pero estos no se graban en la base de datos. ¿Alguien sabría decirme por qué?

Muchas gracias.
__________________
abogado en Errenteria + procuradora en San Sebastián = equipo imparable
  #2 (permalink)  
Antiguo 26/01/2008, 10:10
Avatar de jmqc  
Fecha de Ingreso: noviembre-2004
Ubicación: Venezuela
Mensajes: 353
Antigüedad: 19 años, 4 meses
Puntos: 1
Re: Formulario PHP para introducir datos en BD MySQL

Que tal, Defero.tk has revisado que tu condicion se cumple y entra en la parte donde deberia guardar el registro¿?, pq lo que yo veo y no se si me equivoco es que si la variable $form_para esta vacía entra en el ciclo sino.. no hace nada creo que si lo escribes asi: if (!isset($form_para)) yo creo que entra y guarda tu registro. Espero que te sirva. Saludos...
__________________
Ante el desconocimiento ni entendimiento de las cosas decimos que los demás estan locos.

José Quintero. Saludos.
:adios:
  #3 (permalink)  
Antiguo 26/01/2008, 10:21
Avatar de rogertm
Mod->Cuba
 
Fecha de Ingreso: julio-2005
Ubicación: /home/Cuba/Habana/rogertm/
Mensajes: 2.922
Antigüedad: 18 años, 8 meses
Puntos: 638
Re: Formulario PHP para introducir datos en BD MySQL

hola Defero.tk, no te puedo dejar de ayudar, recuerdo cuando me aventure con linux que me serviste de mucho y pa que sepas, aunque lo deje, solo fue temporalmente.
bueno al grano, mira, pa que no te compliques, el formulario hazlo en html puro, sacalo del echo y lo escribes en html, a la hora de resivir el formulario pones:
Código PHP:
if(isset($_POST['submit']) && $_POST['submit'] == 'Añadir'){
    
// aqui haces el INSERT y todo lo demas

saludos y suerte , si tienes mas problemas, solo avisas, que la duda que tienes es realmente sencilla

nos vemos
__________________
Friki y Blogger por Cuenta Propia:213
Twenty'em: Theming is Prose
  #4 (permalink)  
Antiguo 26/01/2008, 10:26
Avatar de -Defero-
Colaborador
 
Fecha de Ingreso: julio-2004
Ubicación: Guipúzcoa
Mensajes: 4.776
Antigüedad: 19 años, 9 meses
Puntos: 76
Re: Formulario PHP para introducir datos en BD MySQL

Je, menuda súper-chorrada. Lo he revisado decenas de veces, y siempre se me pasaba un error en la sentencia SQL: me faltaba cerrar las comillas simples en '$form_resumen

Ya he puesto '$form_resumen', y ahora funciona ferpectamente.
__________________
abogado en Errenteria + procuradora en San Sebastián = equipo imparable
  #5 (permalink)  
Antiguo 26/01/2008, 10:33
Avatar de -Defero-
Colaborador
 
Fecha de Ingreso: julio-2004
Ubicación: Guipúzcoa
Mensajes: 4.776
Antigüedad: 19 años, 9 meses
Puntos: 76
Re: Formulario PHP para introducir datos en BD MySQL

Cita:
Iniciado por rogertm Ver Mensaje
(...)l formulario hazlo en html puro, sacalo del echo y lo escribes en html (...)
Gracias por el consejo. Además, sacándolo del "echo" voy a tener más fácil meter alguna consulta en el propio formulario, para que me ponga en un desplegable la lista de usuarios. De esta manera, el campo "de" y el campo "para" habrá que rellenarlos seleccionando de un desplegable, y no escribiendo a mano el nombre del usuario.

También me quedo con lo que me pones para la condición IF ISSET, que queda mucho más elegante.

Muchas gracias.

Post-data: Seguramente más tarde volveré a preguntar sobre este tema, porque aún no he terminado con el invento. De momento tengo la parte de visualizar notas y la de añadir nuevas, además de un rudimentario sistema de acceso mediante clave (la misma para todo el mundo; ya lo haré multiusuario más adelante). Ahora me voy a meter con la parte de borrar notas, luego con la de modificarlas, más tarde con la de marcarlas como leídas, luego pondré un filtro para poder ver sólo las notas dirigidas a X persona, o escritas por X persona. También tengo que darle un par de vueltas con lo de la fecha, para que funcione de la forma más cómoda posible. Y más adelante, la posibilidad de consultar las notas entre dos fechas a elegir por el usuario. En fin, eso, para empezar. ya os aburriré con preguntas.
__________________
abogado en Errenteria + procuradora en San Sebastián = equipo imparable
  #6 (permalink)  
Antiguo 26/01/2008, 11:36
Avatar de -Defero-
Colaborador
 
Fecha de Ingreso: julio-2004
Ubicación: Guipúzcoa
Mensajes: 4.776
Antigüedad: 19 años, 9 meses
Puntos: 76
Re: Formulario PHP para introducir datos en BD MySQL

Je, je, ya es posible elegir los usuarios de una lista desplegable, y la fecha y hora se ponen de manera automática. Seguiré informando sobre los avances. Y cuando lo tenga pulido, pondré aquí todo el código.
__________________
abogado en Errenteria + procuradora en San Sebastián = equipo imparable
  #7 (permalink)  
Antiguo 27/01/2008, 08:35
Avatar de -Defero-
Colaborador
 
Fecha de Ingreso: julio-2004
Ubicación: Guipúzcoa
Mensajes: 4.776
Antigüedad: 19 años, 9 meses
Puntos: 76
Re: Formulario PHP para introducir datos en BD MySQL

Podéis ver una demostración funcional. El nombre de usuario es "obiterdicta", y la clave "obiterdicta". Podéis probar a introducir notas, borrarlas, editarlas... Aunque ya se pueda usar, aún hay mucho que mejorar.

Lo primero, lo de la hora. En el campo "fecha", el servidor me pone la hora de USA, y yo necesito la hora de España. De momento lo he solucionado de la siguiente manera, en vez de esto:

Código:
print date("Y/m/d H:i");
He puesto esto, sumando nueve horas:

Código:
print date("Y/m/d");
echo " ";
print date("H")+9;
echo ":";
print date("i");
El problema es si se introduce algún mensaje antes de las 8:59 h. de la mañana (las 23:59 h. para el servidor), ya que al sumar 9 h. a 23 h. no da 8 h., sino 32 h. No me preocupa demasiado porque sólo se va a utilizar en horario de oficina de España, pero me gustaría encontrar una solución más elegante.

Quiero poner un botón de "marcar como leído" en la tabla de mensajes, para no tener que entrar al formulario de edición sólo para cambiar el "estatus". Estoy en ello, pero no termino de hacerlo funcionar. Todo se andará.

También quiero que la tabla de mensajes se recargue automáticamente cada X minutos. Es fácil con javascript o una meta-etiqueta en la cabecera, pero hay un problema: eso me recargará todo el documento, y si justo en ese momento el usuario está escribiendo algo, se perderá su mensaje. Intentaré algo con AJAX para recargar sólo la parte de la tabla. El problema es que no sé nada de AJAX. La excusa perfecta para empezar a aprender.

También quiero ponerle paginación. De momento hay pocos mensajes, pero dentro de un mes habrá muchísimos, y mostrarlos todos en pantalla es una burrada. Creo recordar que en las FAQ de este foro hay una explicación sobre el tema, le echaré un vistazo.

Luego quiero ponerle la posibilidad de filtrar los mensajes dirigidos a un solo usuario. No debe de ser complicado, ya tengo en mente cómo hacerlo, más o menos.

También quiero poner la opción de consultar los mensajes entre dos fechas dadas. Eso ya se antoja un poco más complicado para mí.

Ah, y un formulario para dar de alta nuevos usuarios. Ahora mismo los usuarios los he metido a mano en la base de datos. Y también un sistema decente de autenticación, con una clave para cada usuario, de manera que no haga falta especificar el campo "de" al escribir un mensaje, porque el usuario ya estará autenticado.

Más adelante, buscaré el modo de meterle sindicación RSS, para no tener que andar consultando la página en busca de mensajes. Y un sistema de notificación por e-mail tampoco debería costar mucho. No estaría mal que al final del día enviara por e-mail una lista con todos los mensajes.

Y si a alguien se le ocurre algo más, que proponga, que soy todo oídos.

El código lo publicaré el fin de semana que viene.
__________________
abogado en Errenteria + procuradora en San Sebastián = equipo imparable
  #8 (permalink)  
Antiguo 28/01/2008, 09:41
Avatar de rogertm
Mod->Cuba
 
Fecha de Ingreso: julio-2005
Ubicación: /home/Cuba/Habana/rogertm/
Mensajes: 2.922
Antigüedad: 18 años, 8 meses
Puntos: 638
Re: Formulario PHP para introducir datos en BD MySQL

hola defero.tk, me parece muy bueno tu sistema, y si le pones empeño, como parece ser, en poco tiempo lograras hacer todo lo que quieres, en cuanto a lo de la fecha, creo que con setlocale puedes lograrlo

saludos y suerte

rogertm
__________________
Friki y Blogger por Cuenta Propia:213
Twenty'em: Theming is Prose
  #9 (permalink)  
Antiguo 28/01/2008, 13:59
Avatar de -Defero-
Colaborador
 
Fecha de Ingreso: julio-2004
Ubicación: Guipúzcoa
Mensajes: 4.776
Antigüedad: 19 años, 9 meses
Puntos: 76
Re: Formulario PHP para introducir datos en BD MySQL

Muchas gracias por el enlace, veré si puedo sacarle partido.

En cuanto al tiempo, la pena es que entre semana no puedo dedicar mucho a estas cosas. Llego a casa a eso de las ocho de la tarde, y ya no me queda tiempo para pararme a jugar con el código, así que no me queda más remedio que hacerlo en el fin de semana. Pero bueno, poco a poco, lo iré sacando.
__________________
abogado en Errenteria + procuradora en San Sebastián = equipo imparable
  #10 (permalink)  
Antiguo 01/10/2008, 05:10
 
Fecha de Ingreso: julio-2008
Mensajes: 4
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Formulario PHP para introducir datos en BD MySQL

Hola? Recupero este tema perdido puesto que estoy muy interesado en algo como esto.

Gracias de antemano.
  #11 (permalink)  
Antiguo 01/10/2008, 07:10
Avatar de -Defero-
Colaborador
 
Fecha de Ingreso: julio-2004
Ubicación: Guipúzcoa
Mensajes: 4.776
Antigüedad: 19 años, 9 meses
Puntos: 76
Respuesta: Formulario PHP para introducir datos en BD MySQL

Je, me había olvidado de este tema.

Nuestro "cuaderno de notas virtual" sigue operativo, y contiene ya 2733 notas. He hecho algunas mejoras, pero todavía le falta mucho para parecerse a lo que quiero que sea.

El fin de semana colgaré el código para el que quiera tener un punto de partida. No es ninguna maravilla, pero es funcional.
__________________
abogado en Errenteria + procuradora en San Sebastián = equipo imparable
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 20:12.