Foros del Web » Programando para Internet » PHP »

Introducir registro en una base

Estas en el tema de Introducir registro en una base en el foro de PHP en Foros del Web. Hola. Estoy intentando hacer un registro con php y una base de datos sql. La tabla cuenta con 3 apartados: id (que aumenta automáticamente) y ...
  #1 (permalink)  
Antiguo 10/07/2007, 03:13
 
Fecha de Ingreso: julio-2007
Mensajes: 7
Antigüedad: 16 años, 9 meses
Puntos: 0
Introducir registro en una base

Hola. Estoy intentando hacer un registro con php y una base de datos sql. La tabla cuenta con 3 apartados: id (que aumenta automáticamente) y otros dos campos que se meten mediante un sencillo formulario. El problema que tengo es que se crea la entrada correctamente, pero los dos datos que se meten mediante el formulario aparecen en blanco. Para ello he creado 3 documentos: uno crea la conexion, otro contiene el formulario y otro introduce los datos:
CONEXION:
Código:
<?php 
function Conectarse() 
{ 
   if (!($link=mysql_connect("localhost","usuario","Password"))) 
   { 
      echo "Error conectando a la base de datos."; 
      exit(); 
   } 
   if (!mysql_select_db("base_datos",$link)) 
   { 
      echo "Error seleccionando la base de datos."; 
      exit(); 
   } 
   return $link; 
} 
?>
FORMULARIO:
Código:
<html> 
<head> 
   <title>Ejemplo de PHP</title> 
</head> 
<body> 
<H1>Ejemplo de uso de bases de datos con PHP y MySQL</H1> 
<FORM ACTION="procesar.phtml"> 
<TABLE> 
<TR> 
   <TD>Nombre:</TD> 
   <TD><INPUT TYPE="text" NAME="nombre" SIZE="20" MAXLENGTH="30"></TD> 
</TR> 
<TR> 
   <TD>Apellidos:</TD> 
   <TD><INPUT TYPE="text" NAME="apellidos" SIZE="20" MAXLENGTH="30"></TD> 
</TR> 
</TABLE> 
<INPUT TYPE="submit" NAME="accion" VALUE="Grabar"> 
</FORM> 
<hr> 
<?php 
   include("conex.phtml"); 
   $link=Conectarse(); 
   $result=mysql_query("select * from prueba",$link); 
?> 
   <TABLE BORDER=1 CELLSPACING=1 CELLPADDING=1> 
      <TR><TD>&nbsp;<B>Nombre</B></TD> <TD>&nbsp;<B>Apellidos</B>&nbsp;</TD></TR> 
<?php       

   while($row = mysql_fetch_array($result)) { 
      printf("<tr><td>&nbsp;%s</td> <td>&nbsp;%s&nbsp;</td></tr>", $row["Nombre"], $row["Apellidos"]); 
   } 
   mysql_free_result($result); 
   mysql_close($link);    
?> 
</table> 
</body> 
</html>
REGISTRO:
Código:
<?php 
   include("conex.phtml"); 
   $link=Conectarse(); 
   $nombre=$_GET['nombre']; 
   $apellidos=$_GET['apellidos'];    
   mysql_query("insert into prueba (Nombre,Apellidos) values ('$nombre','$apellidos')",$link); 
    
   header("Location: ejem07d.phtml"); 
?>
Lógicamente en el de conexión he puesto los datos de mi tabla y como digo la conexion la hace perfectamente.


Y otra consulta que tengo es que si hay alguna función que lo que haga es recoger la ip del ordenador, para así poderla meter en otro campo de la tabla y que cada usuario sólo pueda meter un registro (a no ser que tenga ip dinaminca, claro).
  #2 (permalink)  
Antiguo 10/07/2007, 05:02
Avatar de cala932  
Fecha de Ingreso: septiembre-2006
Ubicación: San Juan-Argentina
Mensajes: 902
Antigüedad: 17 años, 7 meses
Puntos: 9
Re: Introducir registro en una base

Hola, falta que coloques el metodo por el cual pasas las variables del formulario a la otra pagina, es decir que debes colocar en esta parte si deseas pasar las variables por post o get:
Código PHP:
<FORM ACTION="procesar.phtml" METHOD="post">
//o
<FORM ACTION="procesar.phtml" METHOD="get"
Saludos.
__________________
->Aprender es un proceso que incluye el error..
  #3 (permalink)  
Antiguo 10/07/2007, 11:02
 
Fecha de Ingreso: julio-2007
Mensajes: 7
Antigüedad: 16 años, 9 meses
Puntos: 0
Re: Introducir registro en una base

Muchas gracias cala932, pero me sigue sin introducir los datos
El archivo del formulario lo he dejado así:
Código:
<html> 
<head> 
   <title>Ejemplo de PHP</title> 
</head> 
<body> 
<H1>Ejemplo de uso de bases de datos con PHP y MySQL</H1> 
<FORM ACTION="procesar.phtml" METHOD="GET"> 
Introduzca su nombre:<INPUT TYPE="text" NAME="nombre"><BR> 
Introduzca sus apellidos:<INPUT TYPE="text" NAME="apellidos"><BR> 
<INPUT TYPE="submit" VALUE="Enviar"> 
</FORM>

<?php 
   include("conex.phtml"); 
   $link=Conectarse(); 
   $result=mysql_query("select * from prueba",$link); 
?> 

<TABLE BORDER=1 CELLSPACING=1 CELLPADDING=1> 
      <TR><TD>&nbsp;<B>Nombre</B></TD> <TD>&nbsp;<B>Apellidos</B>&nbsp;</TD></TR> 
<?php       

   while($row = mysql_fetch_array($result)) { 
      printf("<tr><td>&nbsp;%s</td> <td>&nbsp;%s&nbsp;</td></tr>", $row["nombre"], $row["apellidos"]); 
   } 
   mysql_free_result($result); 
   mysql_close($link);    
?> 
</table> 
</body> 
</html>
¿Podría estar el problema en la tabla?
  #4 (permalink)  
Antiguo 10/07/2007, 16:28
Avatar de carmagedon  
Fecha de Ingreso: junio-2005
Ubicación: Argentina
Mensajes: 794
Antigüedad: 18 años, 10 meses
Puntos: 23
Re: Introducir registro en una base

Para hacer un redireccionamiento te aconsejo realizarlo con PHP, te aviso, porque talvez nos preguntes los errores tipicos del header, haz así:

Código:
<?php 
   include("conex.phtml"); 
   $link=Conectarse(); 
   $nombre=$_GET['nombre']; 
   $apellidos=$_GET['apellidos'];    
   mysql_query("insert into prueba (Nombre,Apellidos) values ('$nombre','$apellidos')",$link); 
if (!mysql_error())
{
echo "<script language='javascript'>location.href='index.php'</script>";
}else{
echo "Error ". mysql_error();
}
?>
Fijate, de ésta manera, si no se genera el registro en la base de datos te tirará el error especificando que clase de error es, si se guarda en la bd, te generará el redireccionamiento a tu pagina inicial. que por defecto le puse index.php, si no lo es, cambialo.
Espero que tengas suerte,
Saludos
  #5 (permalink)  
Antiguo 10/07/2007, 17:29
Avatar de cala932  
Fecha de Ingreso: septiembre-2006
Ubicación: San Juan-Argentina
Mensajes: 902
Antigüedad: 17 años, 7 meses
Puntos: 9
Re: Introducir registro en una base

HOla spork, prueba lo que te comento carmagedon, tambien te sugiero que muestres los valores de las variables nombre y apellido antes de insertarlas en la base para saber si estan trayendo bien los valores, podrias hacer unos echos"" aqui:
Código PHP:
$link=Conectarse(); 
   
$nombre=$_GET['nombre']; 
   
$apellidos=$_GET['apellidos'];    
echo
"Nombre: $nombre"//asi sabemos si las variables traen sus valores
echo"Apellido: $apellidos";  
//tambien agregue un punto y coma despues del parentesis del value
//por que una vez no me insertaba valores por eso
 
mysql_query("insert into prueba (Nombre,Apellidos) values ('$nombre','$apellidos');",$link); 
if (!
mysql_error())
{
echo 
"<script language='javascript'>location.href='index.php'</script>";
}else{
echo 
"Error "mysql_error();

Comentanos como te fue.
Saludos
__________________
->Aprender es un proceso que incluye el error..
  #6 (permalink)  
Antiguo 11/07/2007, 05:18
 
Fecha de Ingreso: julio-2007
Mensajes: 7
Antigüedad: 16 años, 9 meses
Puntos: 0
Re: Introducir registro en una base

Muchas gracias a los dos!!
Por fin lo he conseguido!!
  #7 (permalink)  
Antiguo 11/07/2007, 06:33
Avatar de cala932  
Fecha de Ingreso: septiembre-2006
Ubicación: San Juan-Argentina
Mensajes: 902
Antigüedad: 17 años, 7 meses
Puntos: 9
Re: Introducir registro en una base

Hola spork, me alegro que hayas solucionado el problema, seria bueno que comentaras como lo solucionaste, ya que a otro puede llegar a servirle.
Salu2.
__________________
->Aprender es un proceso que incluye el error..
  #8 (permalink)  
Antiguo 11/07/2007, 08:12
 
Fecha de Ingreso: julio-2007
Mensajes: 7
Antigüedad: 16 años, 9 meses
Puntos: 0
Re: Introducir registro en una base

Pues al final lo que he hecho ha sido lo que me recomendó carmagedon. El archivo lo guardé como procesar.php
También he probado a poner lo de los "echos" y sigue funcionando perfectamente, pero no encuentro diferencia.

Edito para decir que ahora he vuelto a empezar de 0 y me pasa lo mismo... voy a investigar un poco más a ver qué pasa.

Vuelvo a editar para decir que había sido un fallo mio, lo siento. Así que funciona perfectamente como me habeis dicho, tanto con los "echos" como sin ellos. Muchas gracias!!

Última edición por spork; 11/07/2007 a las 08:32
  #9 (permalink)  
Antiguo 11/07/2007, 12:22
Avatar de carmagedon  
Fecha de Ingreso: junio-2005
Ubicación: Argentina
Mensajes: 794
Antigüedad: 18 años, 10 meses
Puntos: 23
Re: Introducir registro en una base

Me alegro que te haya funcionado...
Estamos aca para ayudarnos mutuamente.
Saludos
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 23:14.