PHP - pierdo variable al enviar formulario

   
Vista:

pierdo variable al enviar formulario

Publicado por andres felipe (5 intervenciones) el 02/11/2010 17:44:44
tengo en un formulario un calendario, el cual al darle click a un boton este formulario cambia de mes y una vez llega al mes indicado el usuario elige un dia del mes y al presionar un boton estos datos son guardados en una base de datos, todos los datos llegan correctamente a excepcion del mes, este dato se pierde al darle click al boton q envia la informacion. No existe una forma de evadir este error??

copio parte del codigo

//obtengo la fecha
$fecha=date("L-D-d-m-Y-N H");
//obtengo el nombre del dia de la fecha (lun, martes)
$dia=date("D");
//obtengo el numero de la fecha (12, 15..)
$numero=date("d");
//obtengo el numero del nombre del dia de la semana( viernes=5, sabado=6)
$dsem=date("N");
//Obtengo el mes$Encendido=$_POST['Encendido'];
$Apagado=$_POST['Apagado'];
$mes=date("m");
//busco si el año es bisiesto o no
$bisiesto=date("L");
//Obtengo el Año
$ano=date("Y");

/************* ACA PONGO EL BOTON: PARA PASAR EL MES SI LO PRECIONAN LA VARIABLE MES CAMBIA ***********/

if($_POST['next']){
$primero=$comienza;
$mes=$mes+1;
if($mes==13)
$mes=1;

echo $mes;

switch ($mes){
case 1:
$mesA="Enero";
$termina=31;
break;
case 2:
$mesA="Febrero";
if($bisiesto==0)
{$termina=28;}
else{
$termina=29;}
break;
case 3:
$mesA="Marzo";
$termina=31;
break;
case 4:
$mesA="Abril";
$termina=30;
break;
case 5:
$mesA="Mayo";
$termina=31;
break;
case 6:
$mesA="Junio";
$termina=30;
break;
case 7:
$mesA="Julio";
$termina=31;
break;
case 8:
$mesA="Agosto";
$termina=31;
break;
case 9:
$mesA="Septiembre";
$termina=30;
break;
case 10:
$mesA="Octubre";
$termina=31;
break;
case 11:
$mesA="Noviembre";
$termina=30;
break;
case 12:
$mesA="Diciembre";
$termina=31;
break;
}
}

/***************** ABAJO DEL CODIGO TENGO: *********************/
<?
if($_POST['Guardar'])
{
echo "on";
echo $Encendido;
echo "off";
echo $Apagado;
echo "dias";
echo $row;
echo "zonas";
echo $total;
echo "mes";
echo $mes;
echo "ano";
echo $ano;
echo "<p>";
}
}
echo $error;
}
?>

TODAS ESTAS VARIABLES LA IMPRIME BIEN EXCEPTO $MES, SI ES PRECIONADO EL BOTON ANTERIOR.

Espero me puedan colaborar muchas gracias!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:pierdo variable al enviar formulario

Publicado por Raúl Vargas (13 intervenciones) el 02/11/2010 19:09:21
Hola, falta ver el formulario para poder encontrar el error.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:pierdo variable al enviar formulario

Publicado por andres felipe (5 intervenciones) el 02/11/2010 21:45:43
siendo asi copio el codigo completo, es bastante largo:

<?php
//session_start();
//$_SESSION['mes']=$_REQUEST['$mes'];
?>


<html><head><script type='text/javascript'>
function enviar(){

document.forms[0].submit();

}
</script>
</head>
<body style="background-image:url('botones/fondob.png');background-position:left left;background-repeat:no-repeat; background-color: #0099ff" ><div style="margin:auto; width:980px"><center>
<pre>




</pre>
<font face="Verdana" size="5" color="white">Programacion de zonas</font>
<table border="0" cellspacing="17"><tr><td>
<?php
/**********conexion a la base de datos **************************/
/*** conectar a la base datos ***/
$dbh = new PDO("sqlite:lampara.db");
/*** confirmar la conexion ***/

$prev='botones/izqu50x50.png';
$next='botones/derecha50x50.png';

//obtengo la fecha
$fecha=date("L-D-d-m-Y-N H");
//obtengo el nombre del dia de la fecha (lun, martes)
$dia=date("D");
//obtengo el numero de la fecha (12, 15..)
$numero=date("d");
//obtengo el numero del nombre del dia de la semana( viernes=5, sabado=6)
$dsem=date("N");
//Obtengo el mes$Encendido=$_POST['Encendido'];
$Apagado=$_POST['Apagado'];
$mes=date("m");
//busco si el año es bisiesto o no
$bisiesto=date("L");
//Obtengo el Año
$ano=date("Y");

switch ($mes){
case 1:
$mesA="Enero";
$termina=31;
break;
case 2:
$mesA="Febrero";
if($bisiesto==0)
{$termina=28;}
else{
$termina=29;}
break;
case 3:
$mesA="Marzo";
$termina=31;
break;
case 4:
$mesA="Abril";
$termina=30;
break;
case 5:
$mesA="Mayo";
$termina=31;
break;
case 6:
$mesA="Junio";
$termina=30;
break;
case 7:
$mesA="Julio";
$termina=31;
break;
case 8:
$mesA="Agosto";
$termina=31;
break;
case 9:
$mesA="Septiembre";
$termina=30;
break;
case 10:
$mesA="Octubre";
$termina=31;
break;
case 11:
$mesA="Noviembre";
$termina=30;
break;
case 12:
$mesA="Diciembre";
$termina=31;
break;
}

$primero=$numero-1;

$primero=$primero-$dsem;


while($primero>=1)
{

for($startd=1; $startd<8; $startd++)
{
$primero=$primero-1;
}

}

$primero=$primero*-1;
echo "<p>";

$fin=$numero-$dsem+1;

while($fin<=$termina)
{
$fin=$fin+1;
$diat=$diat+1;

}

while ($diat>=1)
{
$diat=$diat-1;
$fina=$fina+1;
if($fina==8)
{$fina=0;}
}
$fina=$fina+1;

if($fina==7)
$comienza=1;
else $comienza=$fina+1;

echo "<p>";
$inic=1;
$start=1;

//inicio la tabla del calendario
echo "<table border='1' cellpadding='5' cellspacing='5' height='180' width='250'>";
echo"<tr><td colspan='7'>";
?>
<form method="GET" action="yo.php">
<input type= "image" img src="<?php echo $prev ?>" name="ejemplo2" onclick="enviar()" />
<input type="hidden" name="prev" value="<?php echo $prev ?>" /> <input type= "image" img src="<?php echo $next ?>" name="ejemplo2" onclick="enviar()" /> <input type="hidden" name="next" value="<?php echo $next ?>" />
</form>
</td></tr>
<?

if($_GET['next']){

$primero=$comienza;
$mes=$mes+1;
$meshmm=$mes;
if($mes==13)
$mes=1;

echo $mes;

switch ($mes){
case 1:
$mesA="Enero";
$termina=31;
break;
case 2:
$mesA="Febrero";
if($bisiesto==0)
{$termina=28;}
else{
$termina=29;}
break;
case 3:
$mesA="Marzo";
$termina=31;
break;
case 4:
$mesA="Abril";
$termina=30;
break;
case 5:
$mesA="Mayo";
$termina=31;
break;
case 6:
$mesA="Junio";
$termina=30;
break;
case 7:
$mesA="Julio";
$termina=31;
break;
case 8:
$mesA="Agosto";
$termina=31;
break;
case 9:
$mesA="Septiembre";
$termina=30;
break;
case 10:
$mesA="Octubre";
$termina=31;
break;
case 11:
$mesA="Noviembre";
$termina=30;
break;
case 12:
$mesA="Diciembre";
$termina=31;
break;
}

}

echo "<tr><td><font color='white' face='verdana'> Lun</font></td>";
echo "<td><font color='white' face='verdana'> Mar</font></td>";
echo "<td><font color='white' face='verdana'> Mier</font></td>";
echo "<td><font color='white' face='verdana'> Juev</font></td>";
echo "<td><font color='white' face='verdana'> Vier</font></td>";
echo "<td><font color='white' face='verdana'> Sab</font></td>";
echo "<td><font color='white' face='verdana'> Dom</font></td></tr>";
?>
<FORM METHOD="post" name="fvalida" ACTION="yo.php">

<?
for ($semana=0; $semana<6; $semana++)
{

echo "<tr>";
for ($dias=1; $dias<8; $dias++)
{
if ($inic < $primero || $start>=$termina+1)
echo "<td><center> </td>";
else{
//como son varios valores los q necesitan se grabados utilizo el parentesis si el checkbox es seleccionado
//toma el valor de start, posteriormente imprimo el valor
echo "<td><font face='verdana' color='white' size='3'>
<center><pre><input type='checkbox' name='seleccion[]' value='".$start."'> $start</pre></font></td>";
$start = $start+1;
}
$inic = $inic+1;
}
echo "</tr>";
}
echo "<tr><td colspan='5'><center>
<div align='center'><font color='white' face='verdana'>$mesA $ano</font></div></td>";

echo"</tr>";
//aca termina la tabla del calendario
?>
</table>
</td><td>

<FORM name="fvalida" METHOD="post" ACTION="yo.php">
<?
?><hr><p>
<font color='white' face='verdana'>Seleccione las zonas a programar:</font>
<p><table border="0" cellspacing="7"><tr><td>
<input type='checkbox' name='zona1' value='1'><font color='white' face='verdana'>Zona 1</font></td><td>
<input type='checkbox' name='zona2' value='2'><font color='white' face='verdana'>Zona 2</font></td></tr><tr><td>
<input type='checkbox' name='zona3' value='3'><font color='white' face='verdana'>Zona 3</font></td><td>
<input type='checkbox' name='zona4' value='4'><font color='white' face='verdana'>Zona 4</font></td></tr><tr><td>
<input type='checkbox' name='zona5' value='5'><font color='white' face='verdana'>Zona 5</font></td><td>
<input type='checkbox' name='zona6' value='6'><font color='white' face='verdana'>Zona 6</font></td></tr>
<p></font>
</table>
<hr>
<p><font color='white' face='verdana'>
Digite la hora de encendido:<p>
<input type="text" maxlength="10" size="2" name="onhora"> - <input type="text" maxlength="10" size="2" name="onmin">
<p>
Digite la hora de Apagado:<p>
<input type="text" maxlength="10" size="2" name="offhora"> - <input type="text" maxlength="10" size="2" name="offmin">
<p>
<hr>
<pre> <font size=2>la horas deben ser escritas con formato <br> de hora militar ej: 13:30</font></pre>
<p>
<pre> <input name=Guardar value="Guardar" type="submit" onClick="valida_envia()"></pre>
</form>
<?php

if (isset($_REQUEST['zona1']))
{
$a=1;
}
if (isset($_REQUEST['zona2']))
{
$b=2;
}
if (isset($_REQUEST['zona3']))
{
$c=4;
}
if (isset($_REQUEST['zona4']))
{
$d=8;
}
if (isset($_REQUEST['zona5']))
{
$e=16;
}
if (isset($_REQUEST['zona6']))
{
$f=32;
}

$total=$a+$b+$c+$d+$e+$f;
$offhora=$_POST['offhora'];
$offmin=$_POST['offmin'];
$puntos= ":";
$Apagado=$offhora .$puntos . $offmin;
$onhora=$_POST['onhora'];
$onmin=$_POST['onmin'];
$Encendido=$onhora .$puntos . $onmin;
$cuantos=count($totaln);
$totaln= $_POST['seleccion'];

echo "Miro aver si se perdio";
echo $meshmm;
if($_POST['Guardar'])
{

//$_SESSION['mes']=$_REQUEST['mes'];
echo "<br><br>";
echo "La clave recuperada de la variable de sesión:".$_SESSION['mes'];

$error=0;
if($total==0){
echo "seleccione las zonas a programar<br>";
$error=$error+1;}
if ($onhora==""||$onmin=="" ){
echo "complete los campos con q se va Encender <br>";
$error=$error+1;}
if ($offhora==""||$offmin=="" ){
echo "complete los campos con q se va Apagar <br>";
$error=$error+1;}
if ($onhora>24 || $offhora>24){
echo "digite correctamente los valores <br>";
$error=$error+1;
}
if($onmin>60 || $offmin>60){
echo "digite correctamente los valores m <br>";
$error=$error+1;
}
if ($offhora<$onhora){
if ($offmin<$onmin){
echo "Recuerde q el Formato es de hora militar <br>";
$error=$error+1;}
}
if ($error==0)
{
echo "<script type='text/javascript'>
alert('Ha ingresado correctamente los datos.')
</script>";
echo "ha digitado los campos correctamente <br>";
foreach($totaln as $row)
{
/*$sql11 ="INSERT INTO programacion(ano, mes, dia,horaE, horaA, dato,estado) VALUES('$ano','$mes','$row','$Encendido','$Apagado','$total',1)";
$dbh->query($sql11);*/
echo "on";
echo $Encendido;
echo "off";
echo $Apagado;
echo "dias";
echo $row;
echo "zonas";
echo $total;
echo "mes";
echo $mes;
echo "ano";
echo $ano;
echo "<p>";

}
}
echo $error;
}
?>
</form>
</td></tr><tr><td>
<div align="left">
<a href="lampara.php" target=_self><img src="botones/prev.png" border="0"></a></div></td></tr>
</table>

</div>
</body>
</html>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:pierdo variable al enviar formulario

Publicado por Raúl Vargas (13 intervenciones) el 04/11/2010 15:58:47
Hola, pregunta: ¿ por que están como comentario lo relacionado con sesiones?

ejem:

//$_SESSION['mes']=$_REQUEST['mes'];

Y usas en una parte :

echo "La clave recuperada de la variable de sesión:".$_SESSION['mes'];


PD: Muy bueno lo del calendario.

Una técnica: copia el codigo a otro directorio, deja sólo para transferir el $mes.

"Si descartamos los imposible, sólo lo posible puede ser la respuesta"
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:pierdo variable al enviar formulario

Publicado por andres felipe (5 intervenciones) el 04/11/2010 22:09:10
Es por q lo intente hacer por medio de variables de sesion sin embargo no las puedo utilizar ya q en el equipo donde voy a trabajar no las permite (es un dispositivo embebido) por ello las comente
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:pierdo variable al enviar formulario

Publicado por Raúl Vargas (13 intervenciones) el 08/11/2010 20:31:33
Hola, como te fue con el problema?.

Probaste poniendo las variables dentro de un tradicional formulario y enviarlo con el botón?

<form>

<input ...... etc.... name=mes>

</form>

Y recibirlo con:

$mes = $_REQUEST['mes']

Esto nunca falla

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar