Foros del Web » Programando para Internet » PHP »

Crear una tabla en la base de datos

Estas en el tema de Crear una tabla en la base de datos en el foro de PHP en Foros del Web. Hola, estoy leyendo un manual de PHP (Larry Ullman), y estoy teniendo un problemita... escribi el codigo de form.html <html> <head> <title>HTML Form</title> </head> <body> ...
  #1 (permalink)  
Antiguo 31/01/2005, 15:55
 
Fecha de Ingreso: febrero-2002
Mensajes: 503
Antigüedad: 15 años, 9 meses
Puntos: 0
Crear una tabla en la base de datos

Hola, estoy leyendo un manual de PHP (Larry Ullman), y estoy teniendo un problemita... escribi el codigo de form.html

<html>
<head>
<title>HTML Form</title>
</head>
<body>
<FORM action="HandleForm.php" method=post>
First Name <Input Type=TEXT NAME="Array[FirstName]" Size=20<BR>
Last Name <Input Type=TEXT NAME="Array[LastName]" Size=40<BR>
E-mail Address <Input Type=TEXT NAME="Array[Email]" Size=60<BR>
Comments <TEXTAREA NAME="Array[Comments]" ROWS=5 COLS=40></TEXTAREA><br>
<INPUT TYPE=SUBMIT NAME="SUBMIT" VALUE=Submit!">
</FORM>
</body>
</html>

Y luego tenia que hacer el HandleForm.php y cuando llene el formulario por el navegador y puse Submit!..el navegador es como si quedaba clavado y no hacia nada!...

<html>
<head>
<title>Inserting Data into a Database</title>
<body>
<?php
/* Esta pagina recibe y manipula los datos generados por "form.html". */
// Corta los datos entrantes
$Array["FirstName"] = trim ($Array["FirstName"]);
$Array["LastName"] = trim ($Array["LastName"]);
$Array["Email"] = trim ($Array["Email"]);
$Array ["Comments"] = trim ($Array["Comments"]);

// Establece variables para el acceso a la base de datos:
$Host = "localhost";
$User = "root";
$Password = "";
$DBName = "pruebas";
$TableName = "Feedback";

$Link = mysql_connect ($Host, $User, $Password);
$Query = "INSERT into $TableName values ('0', '$Array[FirstName]', '$Array[LastName]', '$Array[Email]', '$Array[Comments]')";
print ("The query is:<BR>$Query<P>\n");
if (mysql_create_db ($DBName, $Link)) {
print ("The database, $DBNBame, was successfully created!<BR>\n");
} else {
print ("The database, $BDName, could not be created!<BR>\n");
}
mysql_close ($Link);
?>
</body>
</html>


Cual es el problema???

Saludos y perdonenme recien empiezo con esto!
__________________
WwW.oasisforo.CoM.ar
  #2 (permalink)  
Antiguo 31/01/2005, 16:55
 
Fecha de Ingreso: enero-2005
Ubicación: Valparaiso - Chile
Mensajes: 116
Antigüedad: 12 años, 10 meses
Puntos: 0
En primer lugar, te falta cerrar las etiquetas de los input.
En segundo lugar no estas recibiendo los datos en la segunda pagina, las variables que se mandan por formualrio se reciben con $_POST.

Aqui van unas modificaciones a tu codigo.

Código:
<html>
<head>
<title>HTML Form</title>
</head>
<body>
<FORM action="HandleForm.php" method="post">
First Name <Input Type=TEXT NAME="FirstName" Size=20><BR>
Last Name <Input Type=TEXT NAME="LastName" Size=40><BR>
E-mail Address <Input Type=TEXT NAME="Email" Size=60><BR>
Comments <TEXTAREA NAME="Comments" ROWS=5 COLS=40></TEXTAREA><br>

<INPUT TYPE="SUBMIT" NAME="SUBMIT" VALUE=Submit!">
</FORM>
</body>
</html>

//segunda pagina

<html>
<head>
<title>Inserting Data into a Database</title>
<body>
</head>
<?php
/* Esta pagina recibe y manipula los datos generados por "form.html". */
// Corta los datos entrantes
$FirstName=$_POST["FirstName"];
$LastName=$_POST["LastName"];
$Email = $_POST["Email"];
$Comments = $_POST["Comments"];

// Establece variables para el acceso a la base de datos:
$Host = "localhost";
$User = "root";
$Password = "";
$DBName = "pruebas";
$TableName = "Feedback";

$Link = mysql_connect ($Host, $User, $Password);
$Query = "INSERT into $TableName values ('0', '$FirstName', '$LastName', '$Email', '$Comments')";
print ("The query is:<BR>$Query<P>\n");
if (mysql_create_db ($DBName, $Link)) {
	print ("The database, $DBNBame, was successfully created!<BR>\n");
} else {
	print ("The database, $BDName, could not be created!<BR>\n");
}
mysql_close ($Link);
?>
</body>
</html>
La funcion TRIM sirve para sacar los espacios vacios (o los caracteres que quieras si le pones mas argumentos) al principio y final de las cadenas, no es extremadamente necesaria en este caso.

No se pq ponia esas variables como Array[], la gracia de PHP es que no tienes que definir tipos en las variables, con puro poner el nombre basta.

En todo caso, tu segunda pagina solo crea la base de datos, aun no le insertas los datos que pasas por el formulario, eso se hace con la funcion mysql_query($Query, $Link)
Espero que te haya ayudado.

Pregunta cualquier duda.

Última edición por Yoko_cl; 31/01/2005 a las 17:03
  #3 (permalink)  
Antiguo 31/01/2005, 17:10
 
Fecha de Ingreso: febrero-2002
Mensajes: 503
Antigüedad: 15 años, 9 meses
Puntos: 0
Gracias, pero sigue clavada!!...pq sera?
__________________
WwW.oasisforo.CoM.ar
  #4 (permalink)  
Antiguo 31/01/2005, 19:29
Avatar de baklao  
Fecha de Ingreso: noviembre-2004
Ubicación: Santa Ana - Isla de Margarita
Mensajes: 482
Antigüedad: 13 años
Puntos: 0
Hola que tal otras de las cosas que tienes que estar pendiente es de lo siguiente que yo vi ahora tienes esto asi para guardar los datos en tu tabla
Código PHP:
$Query "INSERT into $TableName values ('0', '$FirstName', '$LastName', '$Email', '$Comments')"
y de esta manera no creo que guarde nada lo deberias de hacer de esta forma
Código PHP:
$Query "INSERT into $TableName (campos de tu tabla) values ('0', '$FirstName', '$LastName', '$Email', '$Comments')"
Suerte y Salu2.

Bye
__________________
Atte. Mohamed :aplauso:
  #5 (permalink)  
Antiguo 31/01/2005, 19:50
 
Fecha de Ingreso: enero-2005
Ubicación: Valparaiso - Chile
Mensajes: 116
Antigüedad: 12 años, 10 meses
Puntos: 0
A ver, yo probe hasta recibir los datos en la segunda pagina y funciona perfecto, es decir, hasta la linea $Comments = $_POST["Comments"]; (hice echo --es decir imprimir en panatalla --) de cada variable.

Hasta ahi deberia funcionarte.

Ahora bien, tu conexion a mysql parace estar bien, lo mismo con la creacion de la base de datos. Pero no has creado ninguna tabla y tampoco haces ningun mysql_query asi que nongun dato se inserta en la tabla.

Con respecto a lo que dice baklao no es necesario si insertas los datos en el mismo orden de los datos de la tabla.

Pero estas seguro de tener instalado mysql??
Estas seguro de que te estas conectando a la base de datos con un nombre de usuario valido?

Podrias especificar donde segun tu se queda clavada tu pagina. En pasar los datos de una pagina a otra (aunque deberia funcionar si copiasye y pegaste lo que te deje porque lo probe antes de postearlo), o si el problema es al conectarse a mysql (ya te dije los problemas antes).
  #6 (permalink)  
Antiguo 31/01/2005, 19:53
 
Fecha de Ingreso: enero-2005
Ubicación: Valparaiso - Chile
Mensajes: 116
Antigüedad: 12 años, 10 meses
Puntos: 0
Te sugiero que aprendas una cosa a la vez.

Aprende a usar Mysql desde la consola primero, insertando los comandos linea por linea. Aprende PHP con script simples, y una vez que tengas un cierto dominio de mysql prueba via PHP, asi podras entender mejor los errores, etc.
  #7 (permalink)  
Antiguo 31/01/2005, 22:08
 
Fecha de Ingreso: febrero-2002
Mensajes: 503
Antigüedad: 15 años, 9 meses
Puntos: 0
el MySQL lo tengo instalado...con Appserv lo tengo...y el usuario y contraseña es esa pq tambien he probado foros y blogs y me va perfecto...

asi que deberia hacer?
__________________
WwW.oasisforo.CoM.ar
  #8 (permalink)  
Antiguo 01/02/2005, 05:30
 
Fecha de Ingreso: enero-2005
Ubicación: Valparaiso - Chile
Mensajes: 116
Antigüedad: 12 años, 10 meses
Puntos: 0
a ver, pero anda probando, no tires todo el codigo de una vez. primero prueba a ver si te manda los campos del form de una pagina a otra. para eso has un echo $variable de cada una de las varuables y asiv erlas en pantalla.

despues a cada conexion que hagas a la base de datos ponele or die(mysql_error()) e imprimelo en pantalla para saber cual es el error.

PRueba antes creado la base de datos/tablas/registros desde la linea de comandos de mysql
> mysql -u root
> show databases;
> creada database nombre_bd;
> create table ....
> insert ...
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 09:07.