Duda en formulario para cambiar un registro

Iniciado por Linton, 28 Enero 2014, 16:01 PM

0 Miembros y 1 Visitante están viendo este tema.

Linton

En una web para aprender PHP, encuentro un punto confuso en el formulario para modificar un registro en base de datos. Tras el primer archivo con el form (en el ejemplo se cambiará el mail de un alumno), se muestra el segundo archivo. Y contiene un nuevo formulario con algo que no comprendo, esta parte:

<form action="pagina3.php" method="post">
  Ingrese nuevo mail:
  <input type="text" name="mailnuevo" value="<?php echo $reg['mail'?>">
  <br>
  <input type="hidden" name="mailviejo" value="<?php echo $reg['mail'?>">
  <input type="submit" value="Modificar">
  </form>


Vale, este botón de texto recoge el nuevo mail:   <input type="text" name="mailnuevo" value="<?php echo $reg['mail'?>">


...y ahora el mail anterior tiene el mismo value, o sea "<?php echo $reg['mail'] ?>">

El manual no ha explicado los botones hidden y no entiendo cómo funciona esta parte del código: el mail nuevo y el anterior son, según el código PHP, el mismo elemento del array  :huh: ¿Alguien me lo aclara?

¡Gracias por la ayuda!  :)

basickdagger

Cita de: Linton en 28 Enero 2014, 16:01 PM
En una web para aprender PHP, encuentro un punto confuso en el formulario para modificar un registro en base de datos. Tras el primer archivo con el form (en el ejemplo se cambiará el mail de un alumno), se muestra el segundo archivo. Y contiene un nuevo formulario con algo que no comprendo, esta parte:

<form action="pagina3.php" method="post">
  Ingrese nuevo mail:
  <input type="text" name="mailnuevo" value="<?php echo $reg['mail'?>">
  <br>
  <input type="hidden" name="mailviejo" value="<?php echo $reg['mail'?>">
  <input type="submit" value="Modificar">
  </form>


Vale, este botón de texto recoge el nuevo mail:   <input type="text" name="mailnuevo" value="<?php echo $reg['mail'?>">


...y ahora el mail anterior tiene el mismo value, o sea "<?php echo $reg['mail'] ?>">

El manual no ha explicado los botones hidden y no entiendo cómo funciona esta parte del código: el mail nuevo y el anterior son, según el código PHP, el mismo elemento del array  :huh: ¿Alguien me lo aclara?

¡Gracias por la ayuda!  :)


con el pedazo de código q pusiste realmente no se sabe, yo solo veo q metes el mismo value a los dos input.... y el input hidden es oculto... muchos lo utilizan para enviar valores cargados que el usuario no puede ver.... mas q con f12 xD, tendrias q poner el otro pedazo de código y tal vez nos podamos entender mejor salu2

Linton

Vaaaaale, pues lo copio enterito y pleno  ;D

Archivo 1:

<html>
<head>
<title>Problema</title>
</head>
<body>
<form action="pagina2.php" method="post">
Ingrese el mail del alumno: <input type="text" name="mail"><br>
<input type="submit" value="buscar">
</form>
</body>
</html>


Segundo archivo:
Código (php) [Seleccionar]
<html>
<head>
<title>Problema</title>
</head>
<body>
<?php
$conexion
=mysql_connect("localhost","root","") or die("Problemas en la conexion");
mysql_select_db("base1",$conexion) or die("Problemas en la selección de la base de datos");
$registros=mysql_query("select * from alumnos where mail='$_REQUEST[mail]'",$conexion) or
  die(
"Problemas en el select:".mysql_error());
if (
$reg=mysql_fetch_array($registros))
{
?>

  <form action="pagina3.php" method="post">
  Ingrese nuevo mail:
  <input type="text" name="mailnuevo" value="<?php echo $reg['mail'?>"><br>
  <input type="hidden" name="mailviejo" value="<?php echo $reg['mail'?>">
  <input type="submit" value="Modificar">
  </form>
<?php
}
else
  echo 
"No existe alumno con dicho mail";
?>

</body>
</html>


Y finalmente el tercero:
Código (php) [Seleccionar]
<html>
<head>
<title>Problema</title>
</head>
<body>
<?php
$conexion
=mysql_connect("localhost","root","") or die("Problemas en la conexion");
mysql_select_db("base1",$conexion) or die("Problemas en la selección de la base de datos");
$registros=mysql_query("update alumnos set mail='$_REQUEST[mailnuevo]' where mail='$_REQUEST[mailviejo]'",$conexion) or
  die(
"Problemas en el select:".mysql_error());
  echo 
"El mail fue modificado con exito";
?>

</body>
</html>

basickdagger

#3
Cita de: Linton en 28 Enero 2014, 17:54 PM


Archivo 1:



Ingrese el mail del alumno: <input type="text" name="mail"><br>



Segundo archivo:
Código (php) [Seleccionar]


 Ingrese nuevo mail:
 <input type="text" name="mailnuevo" value="<?php echo $reg['mail'?>"><br>
 <input type="hidden" name="mailviejo" value="<?php echo $reg['mail'?>">
 


Y finalmente el tercero:
Código (php) [Seleccionar]
<html>
<head>
<title>Problema</title>
</head>
<body>
<?php
$conexion
=mysql_connect("localhost","root","") or die("Problemas en la conexion");
mysql_select_db("base1",$conexion) or die("Problemas en la selección de la base de datos");
$registros=mysql_query("update alumnos set mail='$_REQUEST[mailnuevo]' where mail='$_REQUEST[mailviejo]'",$conexion) or
  die(
"Problemas en el select:".mysql_error());
  echo 
"El mail fue modificado con exito";
?>

</body>
</html>



mm sinceramente no entiendo...
primer archivo:
primero envian el email...
segundo archivo:
buscan si existe el alumno con dicho email en la BD y si este existe.. crean dos input uno oculto y otro visible pero ambos con el mismo valor....
tercer archivo:
modifican el mail


quiero entender... q solamente imprimen el valor en el archivo 2 para q el usuario pueda verlo y después modificarlo...y así enviar el correo nuevo
<input type="text" name="mailnuevo" value="<?php echo $reg['mail'?>"><br>
y el viejo(este no se vera en pantalla pero el valor estará ahí)...
<input type="hidden" name="mailviejo" value="<?php echo $reg['mail'?>">


pero si existen dos correos iguales... te va crear 2 forms si hay 5 iguales te va crear 5 forms, etc...


olvide decirte... en el archivo 3 modifica el mail nuevo donde email sea igual a email viejo
salu2

1mpuls0

Cita de: basickdagger en 28 Enero 2014, 18:33 PM
quiero entender... q solamente imprimen el valor en el archivo 2 para q el usuario pueda verlo y después modificarlo... y así enviar el correo nuevo

Así de simple es la respuesta.

El atributo name="mailnuevo" solo es para mostrar el email que se busco en el anterior form.
El atributo name="mailviejo" es para poder utilizarlo en la sentencia donde se actualizará el email.
abc

Linton

Hum, no lo entiendo bien...   :-X

Lo que me sorprende es que en otros manuales modifican datos de una tabla con un solo archivo  :huh: :huh:

1mpuls0

la clave está en la consulta..

este es un ejemplo muy sencillo y no recomendable hacer actualizaciones con email por seguridad.
los sistemas grandes utilizan variables como id del usuario, la variable de sesión, o alguna otra clave generada.

En este ejemplo es forzoso realizarlo así.

ACTUALIZA tabla_alumos coloca MAIL='nuevomail' DONDE MAIL='mailanterior'

Cita de: Linton en 28 Enero 2014, 21:26 PM
Lo que me sorprende es que en otros manuales modifican datos de una tabla con un solo archivo  :huh: :huh:

Esto es posible hacerlo mediante metodos tipo POST
abc

Linton

¿Y por qué entonces enseñan el método más complicado?  :laugh:

Bueno, a ver si mañana lo termino de chapar... ¡Gracias! :)

1mpuls0

No es un método complicado, de hecho es un método correcto.

Si partimos desde lo primordial que es la programación orientada a objetos, te darás cuenta que así se deben hacer las cosas.

Un archivo para realizar la busqueda, otro podria usarse para mostrar los resultados (o utilizando ajax o jquery puede presentarse el resultado en la misma página) pero eso si, lo correcto es realizar tus funciones que tendrán las consultas en archivos separados.

abc

Linton

Sí, que se organice el proceso con dos archivos lo entiendo y me parece diáfano. Lo que no entiendo es que el nuevo email anotado en el input sea a la vez (hidden mediante) el antiguo  :huh:

Nuevo mail......<?php echo $reg['mail'];?>
Anterior mail....<?php echo $reg['mail'];?>