Foros del Web » Programando para Internet » PHP »

Consulta sobre formularios

Estas en el tema de Consulta sobre formularios en el foro de PHP en Foros del Web. Hola a todos! Mi consulta es sencilla. Tengo armado un formulario sencillo de prueba donde ingreso los datos y posteriormente se graba en la base. ...
  #1 (permalink)  
Antiguo 28/02/2006, 12:07
 
Fecha de Ingreso: mayo-2002
Ubicación: Capital Federal
Mensajes: 630
Antigüedad: 15 años, 7 meses
Puntos: 1
Consulta sobre formularios

Hola a todos! Mi consulta es sencilla. Tengo armado un formulario sencillo de prueba donde ingreso los datos y posteriormente se graba en la base.
El form es este:
Código HTML:
<FORM ACTION="form2insertar.php" METHOD="POST">
<TABLE>
<TR>
   <TD width="157">Nombre de la Prueba:</TD>
   <TD width="164"><INPUT TYPE="text" NAME="nombre" SIZE="20" MAXLENGTH="30"></TD>
</TR>
<TR>
  <TD>Apellido de la Prueba:</TD>
  <TD><INPUT TYPE="text" NAME="apellido" SIZE="20" MAXLENGTH="30"></TD>
</TR>
<TR>
  <TD>Edad de la Prueba:</TD>
  <TD><INPUT TYPE="text" NAME="edad" SIZE="20" MAXLENGTH="30"></TD>
</TR>
</TABLE>
<INPUT TYPE="submit" NAME="accion" VALUE="Grabar">
</FORM> 
Y la página form2insertar.php que hace el proceso de carga directamente:
Código PHP:
<?php
   
include("con.php");
// conexion a la base
$conexion mysql_connect($host_db$usuario_db$pass_db) or die ("no se ha podido conectar a la BD");
mysql_select_db($base_db$conexion) or die ("no se ha podido seleccionar la BD");

$Sql="insert into prueba (nombre_p,apellido_p,edad_p) values ('".$_POST["nombre"]."','".$_POST["apellido"]."','".$_POST["edad"]."')";
   
mysql_query($Sql,$conexion);
   
header("Location: form2cargar.php");
?>
Como verán es más que sencillo para lo que estoy probando. Hasta acá va bien pero quisiera saber como le puedo agregar esto:
1- ¿cómo hago, sin crear otra página, para que me muestre los datos antes de grabarlo en la base? Por ejemplo que aparezcan los datos y si son los correctos, presionar un boton para grabar. Más que nada por si acaso si hay que arreglar algo.
2- ¿cómo se hace para que me muestre el id con el que se va a grabar?

Bueno, muchas gracias y sigan adelante.

Saludos.

Marx.
__________________
"Todo lo que somos es el resultado de lo que hemos pensado". Budda.
  #2 (permalink)  
Antiguo 28/02/2006, 13:59
Avatar de nosoynadie  
Fecha de Ingreso: noviembre-2005
Ubicación: dando vueltas por aquí
Mensajes: 206
Antigüedad: 12 años
Puntos: 1
Hola,

lo de mostrar los datos, lo puedes hacer recgiendo las variables del formulario
Código PHP:
if(isset($_POST["accion"])){
  echo 
"<br />Nombre: " $_POST["nombre"];
  echo 
"<br />Apellido: " $_POST["apellido"];
  echo 
"<br />Edad: " $_POST["edad"];

y lo del próximo id de la tabla mira la función mysql_id_result

Código HTML:
mysql_insert_id
(PHP 3, PHP 4 , PHP 5)
mysql_insert_id --  Devuelve el identificador generado en la última llamada a INSERT 
espero que esto te valga para algo, ciao.
__________________
http://www.nosoynadie.net/
  #3 (permalink)  
Antiguo 28/02/2006, 16:36
 
Fecha de Ingreso: mayo-2002
Ubicación: Capital Federal
Mensajes: 630
Antigüedad: 15 años, 7 meses
Puntos: 1
Gracias nosoynadie. Ya hice que aparezcan los datos. Hasta acá todo bien. Lo que no puedo hacer es que ingrese a la base de datos.
Algo estoy haciendo mal, aunque a las apuradas porque estoy en el trabajo.
Veamos:
Código PHP:
<html>
<head>
   <title>Ejemplo de PHP</title>
</head>
<body>
<H1>Ejemplo de uso de bases de datos con PHP y MySQL<br>
Datos a Grabar </H1>
<FORM ACTION="form4cargar.php" METHOD="POST">
  <? 
if(isset($_POST["boton"])){
  echo 
"<br />Nombre: " $_POST["nombre"];
  echo 
"<br />Apellido: " $_POST["apellido"];
  echo 
"<br />Edad: " $_POST["edad"];
}
  
?>
<br>
 <INPUT type='button' value='Volver' onclick='history.go(-1)'>
 <INPUT NAME="grabar" TYPE="submit" VALUE="Grabar">
</FORM>

<?php
if(isset($_POST["grabar"])){
 
   include(
"conectar.php");

// conexion a la base
$conexion mysql_connect($host_db$usuario_db$pass_db) or die ("no se ha podido conectar a la BD");
mysql_select_db($base_db$conexion) or die ("no se ha podido seleccionar la BD");

$Sql="insert into prueba (nombre_p,apellido_p,edad_p) values ('".$_POST["nombre"]."','".$_POST["apellido"]."','".$_POST["edad"]."')";
   
mysql_query($Sql,$conexion);

}
//   header("Location: form4cargar.php");
?>
<hr>
</body>
</html>
Lo que hice fué pasarlo a otro formulario que tiene otro botón que, si los datos son correctos, los procesa. No sé si es la forma paro es lo que probé hasta ahora. Los muestra pero no los graba.
¿En qué línea estoy fallando?

Muchas gracias... ahí viene mi jefe
__________________
"Todo lo que somos es el resultado de lo que hemos pensado". Budda.
  #4 (permalink)  
Antiguo 28/02/2006, 21:34
Avatar de vevni  
Fecha de Ingreso: julio-2005
Ubicación: cancun mexico
Mensajes: 598
Antigüedad: 12 años, 4 meses
Puntos: 3
Exclamación

si te los muestra como tu dices,
porque al hacer esto..
lo que haces es imprimir lo que recives del anterior form.
Cita:
<?
if(isset($_POST["boton"])){
echo "<br />Nombre: " . $_POST["nombre"];
echo "<br />Apellido: " . $_POST["apellido"];
echo "<br />Edad: " . $_POST["edad"];
}
?>
estas verificando........ que viene del otro formulario, asi como lo comentas aqui..
Cita:
Lo que hice fué pasarlo a otro formulario que tiene otro botón que, si los datos son correctos, los procesa. No sé si es la forma paro es lo que probé hasta ahora. Los muestra pero no los graba.
¿En qué línea estoy fallando?

ahora al dar click en el boton submit, es claro que no te mande nada...
porque te mandaria al codigo o archivo que especificas aqui
ademas no tienes nada en el form. para enviar datos...!!!
Cita:
<FORM ACTION="form4cargar.php" METHOD="POST">
<?

y se keda tu pag. en blanco...
y nunca llegas a esta linea de codigo.


Código PHP:
if(isset($_POST["grabar"])){
 
   include(
"conectar.php");

// conexion a la base
$conexion mysql_connect($host_db$usuario_db$pass_db) or die ("no se ha podido conectar a la BD");
mysql_select_db($base_db$conexion) or die ("no se ha podido seleccionar la BD");

$Sql="insert into prueba (nombre_p,apellido_p,edad_p) values ('".$_POST["nombre"]."','".$_POST["apellido"]."','".$_POST["edad"]."')";
   
mysql_query($Sql,$conexion); 

saludos.. considero que tomes los sig. puntos

si vas a trabajar con minisculas, pues que sea asi
o con MAY. pero todo debe ser homogeneo, mas si deseas usar el estandar xhtml, claro no lo mencionas, pero te lo comento.

o usas comillas simples en el html o dobles. definete...
sabemos que es a prisas pero aun asi. debes de ponerte un estilo y hacerlo ordnado..

por experiencia... que llevo de 6 años prog. desde leng. c.. te lo digo.
es una muy buena costumbre y te evita prob...

ahora muy importante, separar la logica de la interfaz..

eso del php lo puedes hacer al inicio y las condiciones..............

y solo en el html.. imprimir lo correcto...

saludos...............
estamos aqui para ayudate y.. explicarte las buenas costumbres de prog.
__________________
Código PHP:
echo"hola mundo ver 1221332143.02";
echo
"cuantos usuarios habran impreso hola mundo en el mundo.!???"
  #5 (permalink)  
Antiguo 01/03/2006, 02:33
Avatar de nosoynadie  
Fecha de Ingreso: noviembre-2005
Ubicación: dando vueltas por aquí
Mensajes: 206
Antigüedad: 12 años
Puntos: 1
Hola,

si no he entendido mal tu código:
  • la primera vez que envias el formulario ejecutas esto:
    Código PHP:
    <FORM ACTION="form4cargar.php" METHOD="POST">
      <? 
    if(isset($_POST["boton"])){
      echo 
    "<br />Nombre: " $_POST["nombre"];
      echo 
    "<br />Apellido: " $_POST["apellido"];
      echo 
    "<br />Edad: " $_POST["edad"];
    }
      
    ?>
    <br>
     <INPUT type='button' value='Volver' onclick='history.go(-1)'>
     <INPUT NAME="grabar" TYPE="submit" VALUE="Grabar">
    </FORM>
    lo que te crea un formulario cuyo único elemento es el botón de 'submit', lo demás sólo es texto generado a partir de lo que enviaste en el primer formulario.
  • Al intentar guardar los datos, apretando 'Grabar' (como te dice vevni, cuidado con las mayúsculas/minúsculas), sólo estás enviado el botón de submit. Has de crear los elementos de formulario para luego poder guardarlos. Una posible solución sería:
    Código PHP:
    <FORM ACTION="form4cargar.php" METHOD="POST">
      <? 
    if(isset($_POST["boton"])){
      echo 
    "<br />Nombre: " $_POST["nombre"];
      echo 
    "<input type='hidden' name='nombre' value='".$_POST["nombre"]."' />";
      echo 
    "<br />Apellido: " $_POST["apellido"];
      echo 
    "<input type='hidden' name='apellido' value='".$_POST["apellido"]."' />";
      echo 
    "<br />Edad: " $_POST["edad"];
      echo 
    "<input type='hidden' name='edad' value='".$_POST["edad"]."' />";
    }
      
    ?>
    <br>
     <INPUT type='button' value='Volver' onclick='history.go(-1)'>
     <INPUT NAME="grabar" TYPE="submit" VALUE="Grabar">
    </FORM>
__________________
http://www.nosoynadie.net/
  #6 (permalink)  
Antiguo 01/03/2006, 14:31
 
Fecha de Ingreso: mayo-2002
Ubicación: Capital Federal
Mensajes: 630
Antigüedad: 15 años, 7 meses
Puntos: 1
vevni: muchas gracias por tus consejos. Por supuesto que tomaré en cuenta lo que me has dicho y para mí es muy importante, como el tiempo que has tomado para responderme. Muchas gracias.

nosoynadie: a tí también muchas gracias por tu tiempo y lo que me enviaste me sirvió. Mi formulario ya funciona. Muchas gracias.

Marx.
__________________
"Todo lo que somos es el resultado de lo que hemos pensado". Budda.
  #7 (permalink)  
Antiguo 17/03/2006, 15:03
 
Fecha de Ingreso: mayo-2002
Ubicación: Capital Federal
Mensajes: 630
Antigüedad: 15 años, 7 meses
Puntos: 1
Hola a todos! Retomo esta situación que ya en un 99% me funcionó, pero me falta un pequeño detalle que no logro descubrir como hacerlo.

Lo hice como me dijo nosoynadie (muchas gracias) pero solo me falta que vuelva al formulario de carga... nada más y no sé como hacerlo.

Repaso lo que tengo:
formulario.html
Código HTML:
<html>
<head>
   <title>Ejemplo de PHP</title>
</head>
<body>
<H1>Ejemplo de uso de bases de datos con PHP y MySQL</H1>
<FORM ACTION="mostrarygrabar.php" METHOD="POST">
<TABLE>
<TR>
   <TD width="157">Nombre de la Prueba:</TD>
   <TD width="164"><input type="text" name="nombre" size="20" maxlength="30"></TD>
</TR>
<TR>
  <TD>Apellido de la Prueba:</TD>
  <TD><INPUT TYPE="text" NAME="apellido" SIZE="20" MAXLENGTH="30"></TD>
</TR>
<TR>
  <TD>Edad de la Prueba:</TD>
  <TD><INPUT TYPE="text" NAME="edad" SIZE="20" MAXLENGTH="30"></TD>
</TR>
</TABLE>
<INPUT NAME="boton" TYPE="submit" VALUE="Grabar">
</FORM>
<hr>
</body>
</html> 
mostrarygrabar.php
Código PHP:
<FORM ACTION="mostrarygrabar.php" METHOD="POST">
  <p>
    <? 
if(isset($_POST['boton'])){
  echo 
"<br />Nombre: " $_POST['nombre'];
  echo 
"<input type='hidden' name='nombre' value='".$_POST['nombre']."' />";
  echo 
"<br />Apellido: " $_POST["apellido"];
  echo 
"<input type='hidden' name='apellido' value='".$_POST['apellido']."' />";
  echo 
"<br />Edad: " $_POST["edad"];
  echo 
"<input type='hidden' name='edad' value='".$_POST['edad']."' />";
}
  
?>
  </p>
  <p>
    <INPUT type="button" value="Volver" onClick="history.go(-1)">
    <INPUT NAME="grabar" TYPE="submit" VALUE="Grabar">
    <?php
if(isset($_POST['grabar'])){
 
   include(
'con.php');

// conexion a la base
$conexion mysql_connect($host_db$usuario_db$pass_db) or die ("no se ha podido conectar a la BD");
mysql_select_db($base_db$conexion) or die ("no se ha podido seleccionar la BD");

$Sql="insert into prueba (nombre_p,apellido_p,edad_p) values ('".$_POST["nombre"]."','".$_POST["apellido"]."','".$_POST["edad"]."')";
   
mysql_query($Sql,$conexion);

}

?>
    </p>
</FORM>
De esta forma funciona, muestra los datos antes de guardarlos y si presiono grabar, lo hace en la base, pero quisiera que vuelva al formulario de carga.
¿Se puede hacer?

Muchísimas gracias a todos.

Salutes.... Marx.
__________________
"Todo lo que somos es el resultado de lo que hemos pensado". Budda.
  #8 (permalink)  
Antiguo 17/03/2006, 15:21
 
Fecha de Ingreso: diciembre-2005
Mensajes: 165
Antigüedad: 12 años
Puntos: 4
Si pulsas el boton volver no vuelve?
  #9 (permalink)  
Antiguo 17/03/2006, 15:25
 
Fecha de Ingreso: mayo-2002
Ubicación: Capital Federal
Mensajes: 630
Antigüedad: 15 años, 7 meses
Puntos: 1
Si, vuelve para atrás sin grabar nada.
Fíjate que al lado del botón VOLVER hay otro que dice GRABAR. El tema está ahí. Quiero que al presionar ese botón, grabe en la base y retorne al formulario de carga.
__________________
"Todo lo que somos es el resultado de lo que hemos pensado". Budda.
  #10 (permalink)  
Antiguo 17/03/2006, 17:07
Avatar de nosoynadie  
Fecha de Ingreso: noviembre-2005
Ubicación: dando vueltas por aquí
Mensajes: 206
Antigüedad: 12 años
Puntos: 1
Hola,

para que vuelva a la página puedes hacer un header() a la página inicial pero, para que funcione, has de utilizarlo antes de sacar nada por pantalla.

El posible script sería:

Código PHP:
<?php
if(isset($_POST['grabar'])){
    include(
'con.php');
    
// conexion a la base
    
$conexion mysql_connect($host_db$usuario_db$pass_db) or die ("no se ha podido conectar a la BD");
    
mysql_select_db($base_db$conexion) or die ("no se ha podido seleccionar la BD");
    
$Sql="insert into prueba (nombre_p,apellido_p,edad_p) values ('".$_POST["nombre"]."','".$_POST["apellido"]."','".$_POST["edad"]."')";
    
mysql_query($Sql,$conexion);
    
header("location: pagina_inicial.php");
    exit;
}
?>
<FORM ACTION="mostrarygrabar.php" METHOD="POST">
  <p>
    <? 
if(isset($_POST['boton'])){
  echo 
"<br />Nombre: " $_POST['nombre'];
  echo 
"<input type='hidden' name='nombre' value='".$_POST['nombre']."' />";
  echo 
"<br />Apellido: " $_POST["apellido"];
  echo 
"<input type='hidden' name='apellido' value='".$_POST['apellido']."' />";
  echo 
"<br />Edad: " $_POST["edad"];
  echo 
"<input type='hidden' name='edad' value='".$_POST['edad']."' />";
}
  
?>
  </p>
  <p>
    <INPUT type="button" value="Volver" onClick="history.go(-1)">
    <INPUT NAME="grabar" TYPE="submit" VALUE="Grabar">
    </p>
</FORM>
prueba y dinos
P.D. revisa el código por si he metido la gamba
__________________
http://www.nosoynadie.net/
  #11 (permalink)  
Antiguo 17/03/2006, 17:41
 
Fecha de Ingreso: mayo-2002
Ubicación: Capital Federal
Mensajes: 630
Antigüedad: 15 años, 7 meses
Puntos: 1
ESO ES !!!!!!! MUY BIEN NOSOYNADIE !!!! ge-nio ge-nio.

El código que me enviaste está perfecto y funciona de maravilllllllas. Ya lo estoy usando.

¿Sabes...? Yo lo que había echo, no sé si estaba bien y pido me corrijan por favor, fue lo siguiente:

formulario.php
Código PHP:
<?php
if(isset($_POST['grabar'])){
 
   include(
'con.php');

// conexion a la base
$conexion mysql_connect($host_db$usuario_db$pass_db) or die ("no se ha podido conectar a la BD");
mysql_select_db($base_db$conexion) or die ("no se ha podido seleccionar la BD");

$Sql="insert into prueba (nombre_p,apellido_p,edad_p) values ('".$_POST["nombre"]."','".$_POST["apellido"]."','".$_POST["edad"]."')";
   
mysql_query($Sql,$conexion);

}

?>

<html>
<head>
   <title>Ejemplo de PHP</title>
</head>
<body>
<H1>Ejemplo de uso de bases de datos con PHP y MySQL</H1>
<FORM ACTION="mostrarygrabar.php" METHOD="POST">
<TABLE>
<TR>
   <TD width="157">Nombre de la Prueba:</TD>
   <TD width="164"><input type="text" name="nombre" size="20" maxlength="30"></TD>
</TR>
<TR>
  <TD>Apellido de la Prueba:</TD>
  <TD><INPUT TYPE="text" NAME="apellido" SIZE="20" MAXLENGTH="30"></TD>
</TR>
<TR>
  <TD>Edad de la Prueba:</TD>
  <TD><INPUT TYPE="text" NAME="edad" SIZE="20" MAXLENGTH="30"></TD>
</TR>
</TABLE>
<INPUT NAME="boton" TYPE="submit" VALUE="grabar">
</FORM>
<hr>
</body>
</html>
mostrarygrabar.php
Código PHP:
<html>
<head>
   <title>Ejemplo de PHP</title>
</head>
<body>
<H1>Ejemplo de uso de bases de datos con PHP y MySQL<br>
Datos a Grabar </H1>
<FORM ACTION="formulario.php" METHOD="POST">
  <p>
    <? 
if(isset($_POST['boton'])){
  echo 
"<br />Nombre: " $_POST['nombre'];
  echo 
"<input type='hidden' name='nombre' value='".$_POST['nombre']."' />";
  echo 
"<br />Apellido: " $_POST["apellido"];
  echo 
"<input type='hidden' name='apellido' value='".$_POST['apellido']."' />";
  echo 
"<br />Edad: " $_POST["edad"];
  echo 
"<input type='hidden' name='edad' value='".$_POST['edad']."' />";
}
  
?>
  </p>
  <p>
    <INPUT type="button" value="Volver" onClick="history.go(-1)">
    <INPUT NAME="grabar" TYPE="submit" VALUE="grabar">
    </p>

</FORM>

<hr>
</body>
</html>
Como verás, en FORMULARIO.PHP arriba de todo, puse primero toda la secuencia de grabación. ¿Qué hace esto? un efecto rebote que envía la información de este formulario a MOSTRARYGRABAR.PHP y al presionar sobre el botón grabar de la página MOSTRARY...., vuelve a FORMULARIO.PHP y guarda al mismo tiempo. ¿Estoy mariado? ¿Está mal?

Pero bueno, voy a utilizar lo que tú me pasaste.

Mil gracias por toda tu ayuda.

Un gran abrazo.

Marx.
__________________
"Todo lo que somos es el resultado de lo que hemos pensado". Budda.
  #12 (permalink)  
Antiguo 18/03/2006, 18:21
Avatar de nosoynadie  
Fecha de Ingreso: noviembre-2005
Ubicación: dando vueltas por aquí
Mensajes: 206
Antigüedad: 12 años
Puntos: 1
Cita:
Iniciado por marx-pola
Mil gracias por toda tu ayuda.
Nada, para eso estamos

P.D. Lo que tú habías hecho no estaba mal, es otra manera de hacerlo.
__________________
http://www.nosoynadie.net/
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 22:57.