Foros del Web » Programando para Internet » PHP »

Al pulsar un botón enviar una variable que no sea del formulario

Estas en el tema de Al pulsar un botón enviar una variable que no sea del formulario en el foro de PHP en Foros del Web. ¡Hola! ¿Qué tal? Tengo un problema...Estoy haciendo un juego, y quiero que el usuario tenga la opción de modificar su nombre en el juego. Para ...
  #1 (permalink)  
Antiguo 08/02/2010, 11:36
Avatar de andmai  
Fecha de Ingreso: enero-2010
Mensajes: 84
Antigüedad: 14 años, 3 meses
Puntos: 1
Al pulsar un botón enviar una variable que no sea del formulario

¡Hola!
¿Qué tal?
Tengo un problema...Estoy haciendo un juego, y quiero que el usuario tenga la opción de modificar su nombre en el juego. Para ello tengo modificarPerfil.php, la cual obtiene la variable del nombre del usuario de una anterior php.


modificarPerfil.php


<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>
Modificar Perfil
</title>
</head>
<link rel="stylesheet" type="text/css" href="estilos.css"/>
<body>
<p class="tituloInicio">Modificar Perfil</p>
<?

foreach( $_POST as $key => $value ) {
echo "<input type='hidden' name='".$key."' value='".$value."'>";
}
//se conecta con la BD
$link = mysql_connect('localhost', 'root');
if (!$link)
{echo " no se puede conectar";}

mysql_select_db("DatosConfiguraciones",$link);

$consulta= "SELECT idPerfil FROM perfil WHERE nombre='value'";
$rdo=mysql_query($consulta,$link);
echo $rdo;
?>

<form method="post" action="guardarDatos.php">
<p class="titulo1">modifica tu nombre</p>
<p class="textoAuxi">nombre:</p>
<input type="text" name="nombre" size="20" class="posicionCaja" >
<br>
<input type="submit" name="boton1" class="botonP" value="Aceptar" onclick=this.form.action='modificarDatos.php'>
<input type="reset" name="boton2" class="botonP" value= "Borrar">
<input class="botonP" type="submit" value="Atras" onclick=this.form.action='perfilPersonal.php'>

</body>
</html>





Mi problema es que cuando el usuario pulsa 'aceptar' envia a modificarDatos.php el nuevo nombre, pero para poder modifcar en la base de datos necesito tb el antiguo nombre.
¿Cómo puedo enviar también a modificarDatos.php el antiguo nombre?



Muchisimas gracias
  #2 (permalink)  
Antiguo 08/02/2010, 11:41
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Al pulsar un botón enviar una variable que no sea del formulario

Puedes ingresar esa información en un campo oculto y con ese dato verificas y haces la modificación.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 08/02/2010, 11:41
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Al pulsar un botón enviar una variable que no sea del formulario

El nombre anterior del usuario deberías guardarlo en una variable de sesión.

Ya que si lo envías con el formulario fácilmente se podría cambiar el nombre de cualquier otro usuario.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #4 (permalink)  
Antiguo 08/02/2010, 11:50
Avatar de andmai  
Fecha de Ingreso: enero-2010
Mensajes: 84
Antigüedad: 14 años, 3 meses
Puntos: 1
Respuesta: Al pulsar un botón enviar una variable que no sea del formulario

Y eso como sería? esk soy bastante novata en este mundillo todavia y estoy investigando un poco lo k me decis pero no me entero de mucho,jeje
Muchisimas gracias
  #5 (permalink)  
Antiguo 08/02/2010, 11:52
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Al pulsar un botón enviar una variable que no sea del formulario

Puedes leer en el manual al respecto:
http://www.php.net/manual/en/book.session.php

Saludos.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #6 (permalink)  
Antiguo 08/02/2010, 12:27
Avatar de andmai  
Fecha de Ingreso: enero-2010
Mensajes: 84
Antigüedad: 14 años, 3 meses
Puntos: 1
Respuesta: Al pulsar un botón enviar una variable que no sea del formulario

Ya he introducido las variables de sesion pero sigue sin modificar la base de datos....

modificarPerfil.php



<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>
Modificar Perfil
</title>
</head>
<link rel="stylesheet" type="text/css" href="estilos.css"/>
<body>
<p class="tituloInicio">Modificar Perfil</p>
<?

foreach( $_POST as $key => $value ) {
echo "<input type='hidden' name='".$key."' value='".$value."'>";
}
//se conecta con la BD
$link = mysql_connect('localhost', 'root');
if (!$link)
{echo " no se puede conectar";}

mysql_select_db("DatosConfiguraciones",$link);

$consulta= "SELECT idPerfil FROM perfil WHERE nombre='value'";
$rdo=mysql_query($consulta,$link);


session_start(); // incio de uso de sesiones. Necesario cada vez que se lean o guarden variables de sesión.
$_SESSION['nombreAntiguo']="$rdo";

?>

<form method="post" action="guardarDatos.php">
<p class="titulo1">modifica tu nombre</p>
<p class="textoAuxi">nombre:</p>
<input type="text" name="nombre" size="20" class="posicionCaja" >
<br>
<input type="submit" name="boton1" class="botonP" value="Aceptar" onclick=this.form.action='modificarDatos.php'>
<input type="reset" name="boton2" class="botonP" value= "Borrar">
<input class="botonP" type="submit" value="Atras" onclick=this.form.action='perfilPersonal.php'>

</body>
</html>





modificarDatos.php


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Perfil Creado</title>
</head>
<link rel="stylesheet" type="text/css" href="estilos.css"/>
<body>

<?

session_start(); // incio de uso de sesiones.
$viejo=$_SESSION['nombreAntiguo']; // asignamos a $variable la variable de la session áctiva.

echo "$viejo";
//se conecta con la BD
$link = mysql_connect('localhost', 'root');

if (!$link)
{echo " no se puede conectar";}

mysql_select_db("DatosConfiguraciones",$link);
$auxi=$_POST["nombre"];
echo "$auxi";
$consulta= "SELECT nombre FROM perfil WHERE nombre='$auxi'";
$rdo2=mysql_query($consulta,$link);

if(mysql_num_rows($rdo2)>0){
echo "<p class=textoAuxi>Este perfil ya existe</p>";
echo"<form method=post>";
echo"<input class=botonSeleccion type=submit value=Volver onClick=this.form.action='modificarPerfil.php'>";
echo " </form>";
}
else {
$sql="UPDATE perfil SET nombre=$auxi WHERE idPerfil=$viejo";
$rdo= mysql_query ($sql,$link);
echo "<p class=textoAuxi>La modificación se ha realizado con éxito</p>";
echo"<form method=post>";
echo"<input class=botonSeleccion type=submit value=Atras onClick=this.form.action='perfilPersonal.php'>";
echo " </form>";
}
?>
</body>
</html>

Gracias
  #7 (permalink)  
Antiguo 08/02/2010, 12:30
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Al pulsar un botón enviar una variable que no sea del formulario

No puedes usar session_start() después que hayas enviado datos al navegador. Debe ir antes de cualquier código HTML y cualquier echo.

P.S.: ¿Por qué 'value' aquí es constante?:
Código PHP:
Ver original
  1. $consulta= "SELECT idPerfil FROM perfil WHERE nombre='value'";
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #8 (permalink)  
Antiguo 08/02/2010, 12:42
Avatar de andmai  
Fecha de Ingreso: enero-2010
Mensajes: 84
Antigüedad: 14 años, 3 meses
Puntos: 1
Respuesta: Al pulsar un botón enviar una variable que no sea del formulario

He sacado los inicio de sesion fuera, pero me sigue haciendo lo mismo....

Pues lo he puesto como constante pork pensaba k asi era como cogia el valor del foreach, esk si no no se cual es la variable k coje el valor que me manda el anterior php...

M toy volviendo lo caaaaaaaaaaaaaaa jajaj

Muchas gracias
  #9 (permalink)  
Antiguo 08/02/2010, 12:47
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: Al pulsar un botón enviar una variable que no sea del formulario

Si quieres que tome el valor de la variable debería ser:
Código MySQL:
Ver original
  1. $consulta= "SELECT idPerfil FROM perfil WHERE nombre='$value'";
Además, fíjate que estás asignando $rdo a la variable de sesión, pero esa variable tiene un recurso devuelto por mysql_query(), no el nombre de usuario.

Te sugiero que primero leas detenidamente el capítulo del manual que habla de las sesiones. Luego, determina qué dato necesitas persistir y de dónde lo obtienes (en tu caso el nombre de usuario que parece que lo obtienes de la base de datos a partir de un campo de un formulario)

Si no te funciona, haz primero algunas pruebas con datos más sencillos para saber si están funcionando las variables de sesión.

Si surge algún problema, nos comentas.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #10 (permalink)  
Antiguo 08/02/2010, 15:19
Avatar de andmai  
Fecha de Ingreso: enero-2010
Mensajes: 84
Antigüedad: 14 años, 3 meses
Puntos: 1
Respuesta: Al pulsar un botón enviar una variable que no sea del formulario

Hola de nuevo!
ya he hecho todo lo que me has dicho, y he comprobado que las variables de sesion funcionan. El problema es que sigue sin modificar el dato de la tabla, aunque pone que si que lo ha hecho, y al darle al boton "atras" va a la pagina que sale cuando no se selecciona ningun nombre de usuario....
Alguna idea de porke pasa esto???
Muchas gracias
  #11 (permalink)  
Antiguo 09/02/2010, 09:56
Avatar de andmai  
Fecha de Ingreso: enero-2010
Mensajes: 84
Antigüedad: 14 años, 3 meses
Puntos: 1
Respuesta: Al pulsar un botón enviar una variable que no sea del formulario

Ya está!ya me funciona, tenia unos problemillas de novata,jeje
Muchas gracias a todos
  #12 (permalink)  
Antiguo 09/02/2010, 10:01
Avatar de vicram10  
Fecha de Ingreso: enero-2009
Ubicación: Asuncion
Mensajes: 326
Antigüedad: 15 años, 3 meses
Puntos: 27
Respuesta: Al pulsar un botón enviar una variable que no sea del formulario

plantea tu solucion asi todos lo ven, y el dia de mañana si a alguien mas le pasa lo mismo, al buscar y ver tu post, sabra la respuesta a la incognita planteada..

salu2
  #13 (permalink)  
Antiguo 09/02/2010, 10:12
Avatar de andmai  
Fecha de Ingreso: enero-2010
Mensajes: 84
Antigüedad: 14 años, 3 meses
Puntos: 1
Respuesta: Al pulsar un botón enviar una variable que no sea del formulario

ok! aki va


modificarPerfil.php


<? session_start(); // incio de uso de sesiones. Necesario cada vez que se lean o guarden variables de sesión. ?>


<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>
Modificar Perfil
</title>
</head>
<link rel="stylesheet" type="text/css" href="estilos.css"/>
<body>
<p class="tituloInicio">Modificar Perfil</p>
<?

$usu= $_SESSION['nombreUsu'];//Nombre antiguo del usuario

//se conecta con la BD
$link = mysql_connect('localhost', 'root');
if (!$link)
{echo " no se puede conectar";}

mysql_select_db("DatosConfiguraciones",$link);

$consulta= "SELECT idPerfil FROM perfil WHERE nombre= '$usu' ";
$rdo=mysql_query($consulta,$link);
$row= mysql_fetch_row($rdo);//pasar el resultado a la variable

$_SESSION['idAntiguo']="$row[0]";


?>

<form method="post" action="guardarDatos.php">
<p class="titulo1">modifica tu nombre</p>
<p class="textoAuxi">nombre:</p>
<input type="text" name="nombre" size="20" class="posicionCaja" >
<br>
<input type="submit" name="boton1" class="botonP" value="Aceptar" onclick=this.form.action='modificarDatos.php'>
<input type="reset" name="boton2" class="botonP" value= "Borrar">
<input class="botonP" type="submit" value="Atras" onclick=this.form.action='perfilPersonal.php'>
</form>
</body>
</html>





modificarDatos.php









<? session_start(); // incio de uso de sesiones. ?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Perfil Creado</title>
</head>
<link rel="stylesheet" type="text/css" href="estilos.css"/>
<body>

<?


$viejo=$_SESSION['idAntiguo']; // asignamos a $variable la variable de la session áctiva.
//se conecta con la BD
$link = mysql_connect('localhost', 'root');

if (!$link)
{echo " no se puede conectar";}

mysql_select_db("DatosConfiguraciones",$link);
$auxi=$_POST["nombre"];
$consulta= "SELECT nombre FROM perfil WHERE nombre='$auxi'";
$rdo2=mysql_query($consulta,$link);

if(mysql_num_rows($rdo2)>0){
echo "<p class=textoAuxi>Este perfil ya existe</p>";
echo"<form method=post>";
echo"<input class=botonSeleccion type=submit value=Volver onClick=this.form.action='modificarPerfil.php'>";
echo " </form>";
}
else {
$sql="UPDATE perfil SET nombre='$auxi' WHERE idPerfil='$viejo'";
$rdo= mysql_query ($sql,$link);
echo "<p class=textoAuxi>La modificación se ha realizado con éxito</p>";
echo"<form method=post>";
echo"<input class=botonSeleccion type=submit value=Atras onClick=this.form.action='perfil.php'>";
echo " </form>";
}
?>
</body>
</html>



Espero k le sirva de ayuda a alguien


Gracias de nuevo

Etiquetas: enviar, pulsar, formulario, variables
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 14:32.