Foros del Web » Programando para Internet » PHP »

formulario con titulo, fecha y comentario que envía a mysql

Estas en el tema de formulario con titulo, fecha y comentario que envía a mysql en el foro de PHP en Foros del Web. Hola buenas, quería saber cómo hago un formulario que envíe lo que se le meta en sus campos a unas tablas mysql. Los campos del ...
  #1 (permalink)  
Antiguo 14/11/2004, 19:44
 
Fecha de Ingreso: abril-2004
Mensajes: 310
Antigüedad: 13 años, 7 meses
Puntos: 0
formulario que envía a mysql con previsualizacion

Hola buenas, quería saber cómo hago un formulario que envíe lo que se le meta en sus campos a unas tablas mysql. Los campos del formulario pongamos que son 3:

Título
Fecha
Comentario

No sé casi nada de Mysql así que a ver si podéis decirme también las tablas a utilizar y lo pruebo en mi php-mysql

venga muchas graciassss

Última edición por apañero; 19/11/2004 a las 21:04
  #2 (permalink)  
Antiguo 14/11/2004, 20:22
Avatar de stock  
Fecha de Ingreso: junio-2004
Ubicación: Monterrey NL
Mensajes: 2.390
Antigüedad: 13 años, 5 meses
Puntos: 53
pues unicamente necesitas crear un archivo PHP para procesar eso, en el cual tendrias algo asi:

Código PHP:
//La coneccion
$PtrDb mysql_connect($host,$login,$password)or die ('No se puede conectar con la DB por que: ' mysql_error());
    
mysql_select_db($base);
//Insertando en la base de datos
$sql="INSERT INTO tutabla(Title,Date,Comentario) VALUES ('$title',$fecha','$comentario')";
        
mysql_query($sql,$PtrDb); 
eso es todo
  #3 (permalink)  
Antiguo 15/11/2004, 04:55
 
Fecha de Ingreso: abril-2004
Mensajes: 310
Antigüedad: 13 años, 7 meses
Puntos: 0
ajá y cómo hago que el formulario envíe los datos a ese php??

y qué tablas debo crear en mysql para almacenar los datos?? (valores, longitudes...)
(si me pones las tablas para solamente importarlas mucho mejor)

muchas graciasss!!
  #4 (permalink)  
Antiguo 15/11/2004, 05:45
Avatar de puchitol  
Fecha de Ingreso: diciembre-2003
Ubicación: ELCHE
Mensajes: 322
Antigüedad: 14 años
Puntos: 0
Hola,

formulario.php --> formulario de ingreso de datos
<form action="registrodatos.php" method="post">
Titulo<input type="text" name="titulo">
Fecha<input type="text" name="fecha">
Descripcion<textarea name="comentario" rows=50 cols=50></textarea>
<input type="submit" value="enviar">
</form>

registrodatos.php --> se guardan los datos del formulario en bd

// aqui poner la conexion al servidor de bd y seleccion de la bd

# se recogen los datos del formulario
$titulo = $_POST['titulo'];
$fecha = $_POST['fecha'];
$descripcion = $_POST['comentario'];
# nos disponemos a ejecutar la consulta para insertar datos en la bd
$consulta = "insert into tabla (titulo,fecha,comentario) values('$titulo','fecha','descripcion');
// aqui poner la ejecucion de la consulta

// aqui cerrar la conexion al servidor bd

Este seria la estructura que necesitas, basicamente.
He dejado cosas vacias para que tu investigues un poquito, de esta manera es como realmente aprenderas.

Para que investigues puedes buscar en www.mysql.com (para crear bd y tablas --> create table) y en www.php.net (para funciones de manejo de mysql) y, por supuesto, busca informacion en este foro, que la hay, y mucha ...

espero que te haya dado un pequeño empujon para que puedas aprender un poco mas

un saludo,
__________________
If you think fuck is funny, fuck yourself and save your money,
espero que entendais la moraleja... je, je, je
  #5 (permalink)  
Antiguo 15/11/2004, 07:00
 
Fecha de Ingreso: abril-2004
Mensajes: 310
Antigüedad: 13 años, 7 meses
Puntos: 0
perfecto. Creo que para empezar a trastear en mis tablas mysql y mi php, sólo me haría falta unas tablas a las que conectar y meter datos.

Me podrías decir qué tablas (variables, longitudes y explicación) y yo las guardo y las importo desde phpMyAdmin??

gracias por todo
  #6 (permalink)  
Antiguo 16/11/2004, 01:24
Avatar de puchitol  
Fecha de Ingreso: diciembre-2003
Ubicación: ELCHE
Mensajes: 322
Antigüedad: 14 años
Puntos: 0
Hola,
la creacion de las tablas es muy sencilla:

CREATE TABLE nombre
(
id int unsigned not null auto_increment,
titulo varchar(50) not null,
fecha date,
comentario text,
primary key(id)
) TYPE="MyISAM";

Te vuelvo a repetir, para cualquier duda sobre la sintaxis del sQL de Mysql consulta www.mysql.com

un saludo
__________________
If you think fuck is funny, fuck yourself and save your money,
espero que entendais la moraleja... je, je, je
  #7 (permalink)  
Antiguo 18/11/2004, 20:05
 
Fecha de Ingreso: abril-2004
Mensajes: 310
Antigüedad: 13 años, 7 meses
Puntos: 0
veamos amigos, he seguido más o menos lo que me habeís dicho pero al darle al boton de enviar del formulario me encuentro con una pantalla en blanco sin ningún mensaje de error ni de confirmación.

Tengo lo siguiente en el php de registro al que se envía el formulario:

Código:
$d_host = "XX.149.150.XX";		// MySQL server host
$d_port = "";			// MySQL server port
$d_user = "XX";		// MySQL username
$d_pass = "XX";		// MySQL password
$db_name = "XX";

//La conexión 
$discos = mysql_connect($d_host,$d_user,$d_pass) or die ('No se puede conectar con la DB por que: ' . mysql_error()); 
mysql_select_db($db_name,$discos); 


# se recogen los datos del formulario
$Grupo = $_POST['Grupo'];
$Disco = $_POST['Disco'];
$Discografica = $_POST['Discografica'];
$Fecha = $_POST['Fecha'];
$Comentario = $_POST['Comentario'];
$Autor = $_POST['Autor'];
$Nota = $_POST['Nota'];
$Caratula = $_POST['Caratula'];
$Canciones = $_POST['Canciones'];

$Added = date('Y-m-d');  //fecha hoy

//Insertando en la base de datos 
$sql="INSERT INTO $db_name(D_Grupo,D_Disco,D_Discografica,D_Fecha,D_Comentario,D_Autor,D_Nota,D_Caratula,D_Canciones,D_Added) VALUES ('$Grupo','$Disco','$Discografica','$Fecha','$Comentario','$Autor','$Nota','$Caratula','$Canciones','$Added')"; 
mysql_query($sql,$discos); 
mysql_close($discos);
Mirad a ver si veís algo mal, y si es posible añadirme algún mensaje de confirmación o de error para saber qué pasa. Estaría bien por ejemplo una especie de resumen de datos enviados.

Bueno gracias de nuevo.
  #8 (permalink)  
Antiguo 18/11/2004, 20:43
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
En cuanto a esto:
$Added = date('Y-m-d'); //fecha hoy


Mysql ya tiene multitud de funciones para algunas tarèas como por ejemplo la de obtener la fecha del servidor .. puedes usar la funciòn CURDATE() de Mysql en tu sentencia SQL directamente para evitar ese proceso PHP que no es necesario (siempre y cuando ese campo sea de tipo "DATE" en esa tabla).

Código PHP:
$sql="INSERT INTO $db_name(D_Grupo,D_Disco,D_Discografica,D_Fecha,D_  Comentario,D_Autor,D_Nota,D_Caratula,D_Canciones,D  _Added) VALUES ('$Grupo','$Disco','$Discografica','$Fecha','$Come  ntario','$Autor','$Nota','$Caratula','$Canciones',  CURDATE())"

Por lo demás en cuanto a los mensajes de error/exito ..podrías hacer algo tipo:

Código PHP:
if (@mysql_query($sql,$discos)){
   
header ("Location: mensaje_exito.php");
   exit;
} else {
   
header ("Location: mensaje_error.php");
   exit;

Uso la @ para que PHP no me muestre ahí los mensajes de error .. pues lo voy a controlar con esa pequeña rutina que a base de "header("location ...")" .. lo que hac es redireccionar a otra página si hay error o si todo fué bien.

Es necesario redireccionar así a otra página .. sea a si misma u otras ..pero lo importante es "redirecionar" .. Si no lo haces . .en ese echo "mensaje" que puedas hacer ahí en ese momento si recargas tu página vas a ocasionar registros duplicados en tus BD .. los datos se reenviarán tantas veces como te canses de recargar la página .. por eso se redirecciona para evitar ese efecto, pues, el mensaje está en otra página o petición mejor dicho diferente al que realiza tu proceso en sí.

Un saludo,
  #9 (permalink)  
Antiguo 19/11/2004, 05:06
 
Fecha de Ingreso: abril-2004
Mensajes: 310
Antigüedad: 13 años, 7 meses
Puntos: 0
Ok la estaba pifiando en que estaba usando $dbname para referirme tanto a la tabla principal como a la que hay en su interior, y el sql del INSERT debería de ser: $sql="INSERT INTO $db_table(...
y no INSERT INTO $db_name

Bueno unas dudas. Los ifs de comprobación van antes del mysql close me imagino no?? Podría quedar las últimas lineas una cosa así??

mysql_query($sql,$discos);
if (@mysql_query($sql,$discos)){
mysql_close($discos);
header ("Location: discoañadido.php");
exit;
} else {
mysql_close($discos);
header ("Location: fallo.php");
exit;
}

Y ya que funciona lo principal, cómo hago para que al darle a Enviar sólo se previsualice lo que se vá a enviar y luego se confirme enviando de verdad si el usuario quiere??


ale muxas graciassss.

Última edición por apañero; 19/11/2004 a las 06:34
  #10 (permalink)  
Antiguo 20/11/2004, 10:39
 
Fecha de Ingreso: junio-2004
Mensajes: 60
Antigüedad: 13 años, 6 meses
Puntos: 1
Te aconsejaría que utilices javascript para chequear los datos y luego si la confirmación es aceptada, envies los datos a grabar, o bien lo mismo para modificar/borrarlos.

Al3jo
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 13:40.