Foros del Web » Programando para Internet » PHP »

PHP OO Perdida de Variables

Estas en el tema de Perdida de Variables en el foro de PHP en Foros del Web. Holas, soy nuevo en este foro, quería pedirles una pequeña ayuda con una duda Tengo un simple problema pero ya tras renegar más de una ...
  #1 (permalink)  
Antiguo 07/03/2014, 13:55
 
Fecha de Ingreso: marzo-2014
Mensajes: 4
Antigüedad: 10 años, 1 mes
Puntos: 0
Perdida de Variables

Holas, soy nuevo en este foro, quería pedirles una pequeña ayuda con una duda

Tengo un simple problema pero ya tras renegar más de una semana decidí pedir ayuda.

Yo traigo la variable $account[0], que vendría a ser la cuenta que seleccione mediante una variable hidden de un formulario POST.

La variable nunca se pierde hasta que ingresa dentro de un "IF".

Osea en el momento que yo presiono el boton, quiero hacer cosas con esa cuenta que seleccione, sin embargo al perder por completo el nombre no tengo nada que hacer.
Probe nombrarla como $_SESSION, otra variable, miles de cosas, hasta mediante una consulta mysql, pero siempre que paso del IF, pierdo todo tipo de datos hasta como $_SESSION, es increible.

Código:
<?php session_start(); 
 require 'conexion.php';
 $account = $_POST['acc'];
 if (isset($_POST['bt_pass'])){
 echo $account[0];  // esta variable se pierde//
 }
?>
<!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>Documento sin título</title>
</head>

<body>
<form id="form1" name="form1" method="post" action="<?php PHP_SELF;?>">
<?php ?>
<table width="326" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td colspan="2">Cambio de Datos</td>
  </tr>
  <tr>
    <td width="144">Cuenta</td>
    <td width="182"><? echo $account[0]; ?></td>
  </tr>
 
  <tr>
    <td>Contraseña Nueva</td>
    <td><input type="text" name="pass" id="pass" /></td>
  </tr>
  <tr>
    <td>Repeti Contraseña</td>
    <td><input type="text" name="repass" id="repass" /></td>
  </tr>
  <tr>
    <td colspan="2">    <input type="submit" name="bt_pass" id="bt_pass" value="Enviar" /></td>
    </tr>
 </form>
</table>
</body>
</html>
Agradecería mucho su ayuda.

Saludos
  #2 (permalink)  
Antiguo 07/03/2014, 16:48
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 16 años
Puntos: 528
Respuesta: Perdida de Variables

Habría que ver qupe contiene
$_POST['acc'] ya que posiblemente no recibes lo que esperas.

Podrías hacer un var_dump para ver qué contiene lo recibido en post

var_dump( $_POST['acc']);
$account = $_POST['acc'];

Debería ser un array, aunque depende del formulario de donde provenga la variable.
  #3 (permalink)  
Antiguo 07/03/2014, 19:37
 
Fecha de Ingreso: marzo-2014
Mensajes: 4
Antigüedad: 10 años, 1 mes
Puntos: 0
Respuesta: Perdida de Variables

En estos momentos no tengo acceso al servidor, pero te comento:

$_POST['acc']; viene de un Array dentro de una tabla, la tabla esta contiene un listado de cuentas, al seleccionar la cuenta, me trae la cuenta que seleccione.
Si yo uso las siguientes lineas
$account = $_POST['acc'];
echo $account[0];

Ahí si me muestra la array que yo seleccione, el problema es que yo tengo el botón de cambiar contraseña.

Yo en otra parte del código pregunto si se presiona el boton para realizar el cambio.

if (isset($_POST['bt_pass'])){
echo $account[0]; --> esta variable, todo el tiempo se ve bien, pero automáticamente al ingresar dentro de un IF, queda sin valores.
}

Eso es lo que realmente sucede, el tema del var_dump no puedo realizarlo en estos momentos porque actualmente no tengo acceso al servidor.
  #4 (permalink)  
Antiguo 07/03/2014, 20:01
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 16 años
Puntos: 528
Respuesta: Perdida de Variables

Pues cuando tengas acceso al servidor haces la prueba y luego expones el resultado.

Pero es absurdo decir que por el if la variable cambia, y cuando dices

Cita:
Yo en otra parte del código pregunto....
Entonces parece obvio, tienes diferentes scripts, pero no por que en uno funcione en otro lo hará igual, si hay instrucciones de por medio.

Así que para no divagar, coloca el código del formulario que precede al script donde pierdes la variable.
  #5 (permalink)  
Antiguo 08/03/2014, 12:40
 
Fecha de Ingreso: marzo-2014
Mensajes: 4
Antigüedad: 10 años, 1 mes
Puntos: 0
Respuesta: Perdida de Variables

ocp001a te comento:

Cuando yo digo en otra parte del código, me refiero al mismo código que ya les mostré antes.

El var_dump me trae el usuario que yo he seleccionado, en este caso "mauronob", entonces queda así.

Código:
array(1) { [0]=> string(8) "mauronob" }
Ahí pongo el código en limpio como me quedo con el var_dump que me dijiste que haga.
En el código aclaro con comentarios que es lo que hace paso por paso.
Código:
<?php	session_start(); 
	require 'conexion.php';
	var_dump( $_POST['acc']);
	$account = $_POST['acc'];
	if ( $_REQUEST['bt_pass'] == "Enviar" ) {
		echo $account[0]; //esta variable $account[0] aca en el if no se ve
	}
	echo $account[0];   // aca veo el contenido del usuario en $account[0] osea "mauronob"
?>
<html>
<head>
</head>
<body>
<form id="form1" name="form1" method="post" action="<?php PHP_SELF;?>">
<?php 	 ?>
<table width="326" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td colspan="2">Cambio de Datos</td>
  </tr>
  <tr>
    <td width="144">Cuenta</td>
    <td width="182"><? echo $account[0]; // variable $account[0] me muestra el contenido osea "mauronob" como nombre de usuario?></td>  
  </tr>
 
  <tr>
    <td>Contraseña Nueva</td>
    <td><input type="text" name="pass" id="pass" /></td>
  </tr>
  <tr>
    <td>Repeti Contraseña</td>
    <td><input type="text" name="repass" id="repass" /></td>
  </tr>
  <tr>
    <td colspan="2">    <input type="submit" name="bt_pass" id="bt_pass" value="Enviar" /></td>
    </tr>
 </form>
</table>
</body>
</html>
Desde ya Gracias!

Saludos
Mauro
  #6 (permalink)  
Antiguo 08/03/2014, 14:13
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 16 años
Puntos: 528
Respuesta: Perdida de Variables

Código PHP:
Ver original
  1. if ( $_REQUEST['bt_pass'] == "Enviar" ) {
  2.         echo $account[0]; //esta variable $account[0] aca en el if no se ve
  3.     }

Entonces lo que parece es que la condición no se cumple, es decir si existe la variable $_REQUEST['bt_pass'], ésta no contiene la cadena "Enviar", en ese caso, sería recomendable que veas que contiene $_REQUEST['bt_pass'], igualmente con var_dump para que te asegures que exista y que contiene lo que requieres, tomando en cuenta posibles caracteres no visibles como espacios, enter, etc.
  #7 (permalink)  
Antiguo 08/03/2014, 15:51
 
Fecha de Ingreso: marzo-2014
Mensajes: 4
Antigüedad: 10 años, 1 mes
Puntos: 0
Respuesta: Perdida de Variables

Cita:
Iniciado por ocp001a Ver Mensaje
Código PHP:
Ver original
  1. if ( $_REQUEST['bt_pass'] == "Enviar" ) {
  2.         echo $account[0]; //esta variable $account[0] aca en el if no se ve
  3.     }

Entonces lo que parece es que la condición no se cumple, es decir si existe la variable $_REQUEST['bt_pass'], ésta no contiene la cadena "Enviar", en ese caso, sería recomendable que veas que contiene $_REQUEST['bt_pass'], igualmente con var_dump para que te asegures que exista y que contiene lo que requieres, tomando en cuenta posibles caracteres no visibles como espacios, enter, etc.
El problema es que la condición "$_REQUEST['bt_pass']" si se cumple.

Si yo le agrego un "echo 'hola';" dentro de esa condicion, si me funciona, el tema es cuando uso la variable post "$account[0]" dentro de cualquier if,¿por que razón puede pasar eso?

Es más si le hago de esta forma me pasa lo mismo, ya sea hasta que guarde la variable como $_SESSION.

Código:
 if (isset($_POST['bt_pass'])){
 echo $account[0];  // esta variable se pierde//
 //un var_dump en esta línea me da el $account[0] como null, cosa que fuera del if me da bien.
 }
Saludos

Última edición por mauronob; 09/03/2014 a las 00:00

Etiquetas: formulario, html, mysql, perdida, variable, 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 18:02.