Foros del Web » Programando para Internet » PHP »

Problema con variable php.

Estas en el tema de Problema con variable php. en el foro de PHP en Foros del Web. Buenas tardes, mi nombre es Roberto, soy nuevo por aca, espero el planteamiento de mi problema sea el correcto y aqui voy. Tengo codigo php ...
  #1 (permalink)  
Antiguo 22/09/2010, 17:29
 
Fecha de Ingreso: septiembre-2010
Mensajes: 8
Antigüedad: 14 años, 3 meses
Puntos: 0
Problema con variable php.

Buenas tardes, mi nombre es Roberto, soy nuevo por aca, espero el planteamiento de mi problema sea el correcto y aqui voy.

Tengo codigo php que me toma datos de un formulario para hacer consultas a una bd mysql y luego tomar los datos del resultado de la consulta y mostrarlos en un pdf. Todo me funciona bien, escepto un checkbox que utilizo para no tener que meter la fecha del día actual completa sino simplemente marcarlo y utilizar como fecha final el día actual. Lo curioso es que cuando marco el checkbox no me genera el pdf pero tampoco me da error simplemente me envia a una pagina en blanco. En otras consultas php que tengo en mi maquina me funciona perfectamente el check, francamente no soy de quienes acostumbran estar lloriqueando en cuanto foro se encuentran por cualquier minimo problema (de hecho este es el primer foro al que me suscribo) pero sinceramente no tengo ni idea de que sucede. Agradeceria mucho si algun guru del php compartiera un poco de sus conocimientos conmigo. El codigo es el siguiente (con los comentarios necesarios para explicar el problema):

//almaceno el timestamp menos 21600 porque mi zona horaria es utc-6
$fecha=time()-21600;

// esto me chequea si se ha elegido la opcion de reportes rapidos que son 30, 90, o 365 dias
// este if que sigue es el que me dice que el problema esta fuera de mi alcance, porque aqui si me
// funciona igualar $fechaf que es la fecha final a $fecha que es la fecha del dia actual.

if (isset($_POST['quickr']))
{
if ($_POST['quickr']==30)
{
$fechai=$fecha-2592000;
}
if ($_POST['quickr']==90)
{
$fechai=$fecha-7776000;
}
if ($_POST['quickr']==365)
{
$fechai=$fecha-31536000;
}
$fechaf=$fecha; // aqui es donde igualo la fecha final a la fecha del día actual y funciona perfecto
}else{
if (isset($_POST['hoy'])) //Aqui empieza el problema, si marco el checkbox, ya no me funciona nada...
{
$fechaf=$fecha; // y supongo es por hacer esta operacion, pero antes de que me digan
// que lo igual a time() o algo así, ya lo intente y tampoco funciona..

}
else{
$fechaf=mktime(0,0,0,$_POST['mesf'],$_POST['diaf'],$_POST['yearf']);
}
$fechai=mktime(0,0,0,$_POST['mes'],$_POST['dia'],$_POST['year']);
}
  #2 (permalink)  
Antiguo 22/09/2010, 17:57
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 4 meses
Puntos: 2237
Respuesta: Problema con variable php.

Supongo que deberias crear la fecha inicial con el dia actual y hora 0:00, y la fecha final igual, pero con la hora 23:59:59, de lo contrario, tanto la inicial como la final son iguales y, por tanto, no habra resultados.
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 22/09/2010, 20:23
 
Fecha de Ingreso: septiembre-2010
Mensajes: 2
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Problema con variable php.

Te recomendaría que pusieras todo el código PHP y también el código en HTML para poder revisarlo todo.
  #4 (permalink)  
Antiguo 23/09/2010, 12:18
 
Fecha de Ingreso: septiembre-2010
Mensajes: 8
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Problema con variable php.

Cita:
Iniciado por jdbravo Ver Mensaje
Te recomendaría que pusieras todo el código PHP y también el código en HTML para poder revisarlo todo.
Gracias, jdbravo, el codigo html es el siguiente:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>VENTAS DIARIAS</title>

<link rel="stylesheet" href="styleventasxarticulo.css" />

</head>

<body>

<h1>Souvenir My Beach</h1>
<p></p> <p></p>
<h4>VENTAS DIARIAS</h4>

<p></p> <p></p>

<FORM METHOD="post" ACTION="ventasdiarias.php">

<input type="hidden" name="edad" value="55">



<p>FECHA INICIAL

<select size="1" name="dia">
<option selected value=""></option>
<option value="01">01</option> // aqui iban todos los dias hasta el 31, eliminado
// por longitud de nuevo
</select>

<select size="1" name="mes">
<option selected value=""></option>
<option value="01">ENERO</option>
<option value="02">FEBRERO</option><option value="03">MARZO</option><option value="04">ABRIL</option>
<option value="05">MAYO</option><option value="06">JUNIO</option><option value="07">JULIO</option>
<option value="08">AGOSTO</option><option value="09">SETIEMBRE</option><option value="10">OCTUBRE</option>
<option value="11">NOVIEMBRE</option><option value="12">DICIEMBRE</option>
</select>

<select size="1" name="year">
<option selected value=""></option>
<option value="2010">2010</option>
<option value="2011">2011</option><option value="2012">2012</option><option value="2013">2013</option>
<option value="2014">2014</option><option value="2015">2015</option><option value="2016">2016</option>
<option value="2017">2017</option><option value="2018">2018</option><option value="2019">2019</option>
<option value="2020">2020</option><option value="2021">2021</option>
</select>
</p>

<p></p> <p></p>

<p>FECHA FINAL

<select size="1" name="diaf">
<option selected value=""></option>
<option value="01">01</option>
<option value="02">02</option><option value="03">03</option><option value="04">04</option>
<option value="05">05</option><option value="06">06</option><option value="07">07</option>
<option value="08">08</option><option value="09">09</option><option value="10">10</option>
<option value="11">11</option><option value="12">12</option><option value="13">13</option>
<option value="14">14</option><option value="15">15</option><option value="16">16</option>
<option value="17">17</option><option value="18">18</option><option value="19">19</option>
<option value="20">20</option><option value="21">21</option><option value="22">22</option>
<option value="23">23</option><option value="24">24</option><option value="25">25</option>
<option value="26">26</option><option value="27">27</option><option value="28">28</option>
<option value="29">29</option><option value="30">30</option><option value="31">31</option>
</select>

<select size="1" name="mesf">
<option selected value=""></option>
<option value="01">ENERO</option>
<option value="02">FEBRERO</option><option value="03">MARZO</option><option value="04">ABRIL</option>
<option value="05">MAYO</option><option value="06">JUNIO</option><option value="07">JULIO</option>
<option value="08">AGOSTO</option><option value="09">SETIEMBRE</option><option value="10">OCTUBRE</option>
<option value="11">NOVIEMBRE</option><option value="12">DICIEMBRE</option>
</select>

<select size="1" name="yearf">
<option selected value=""></option>
<option value="2010">2010</option>
<option value="2011">2011</option><option value="2012">2012</option><option value="2013">2013</option>
<option value="2014">2014</option><option value="2015">2015</option><option value="2016">2016</option>
<option value="2017">2017</option><option value="2018">2018</option><option value="2019">2019</option>
<option value="2020">2020</option><option value="2021">2021</option>
</select>

Hoy <input type="checkbox" name="hoy" value='1'>
</p>
<!--
<p>anotaciones</p>

<p><textarea rows="5" name="anotaciones" cols="28"></textarea></p>
-->
<p></p>


<p>REPORTES R&Aacute;PIDOS:</p>
<p>
&Uacute;ltimos 30 d&iacute;as<input type="radio" name="quickr" value="30">&nbsp;&nbsp;
&Uacute;ltimos 90 d&iacute;as<input type="radio" name="quickr" value="90">&nbsp;&nbsp;
&Uacute;ltimo a&ntilde;o<input type="radio" name="quickr" value="365">
</p>


<p>
<input type="reset" value="Limpiar" name="B2">
<input type="submit" value="Crear Reporte" name="enviar">
</p>





</FORM>

</BODY>


</body>
</html>


y el codigo php es el siguiente:

<?php

require('fpdf/fpdf.php');
require('conexion.php');
class PDF extends FPDF
{
var $widths;
var $aligns;
//aqui iba toda la formacion del pdf, que es irrelevante en este caso y tuve que eliminarla para
//reducir la longitud del mensaje.


// SE FORMAN LAS FECHAS INICIALES Y FINALES
$fecha=time()-21600;

if (isset($_POST['quickr']))
{
if ($_POST['quickr']==30)
{
$fechai=$fecha-2592000;
}
if ($_POST['quickr']==90)
{
$fechai=$fecha-7776000;
}
if ($_POST['quickr']==365)
{
$fechai=$fecha-31536000;
}
$fechaf=$fecha;
}else{
if (isset($_POST['hoy']))
{
$fechaf=$fecha;
}
else{
$fechaf=mktime(0,0,0,$_POST['mesf'],$fechaf=$_POST['diaf'],$_POST['yearf']);
}
$fechai=mktime(0,0,0,$_POST['mes'],$_POST['dia'],$_POST['year']);
}



// $product= $_POST['codigo'];
$con = new DB;
$products = $con->conectar();
/*
$strConsulta = "SELECT * from products WHERE code = '$product'";

$products = mysql_query($strConsulta);

$fila = mysql_fetch_array($products);
*/
$pdf=new PDF('P','mm','Letter');
$pdf->Open();
$pdf->AddPage();
$pdf->SetMargins(15,15,15);
$pdf->Ln(10);

$fechaformati=date("Y-m-d",$fechai);
$fechaformatf=date("Y-m-d",$fechaf);

$pdf->SetFont('Arial','',12);
$pdf->Cell(0,6,'Desde '.$fechaformati.' hasta '.$fechaformatf.'.',0,1);
// $fechai=date("Y-m-d",$fecha-86400); $pdf->Cell(0,6,'Producto: '.$fila['name'],0,1);
$pdf->Ln(10);
$pdf->SetFont('Arial','',10);
$pdf->SetWidths(array(25,20,20,25,30,30,30));
$pdf->SetAligns(array('C',0,0,0,0,0,0));
$pdf->Row(array("FECHA","CLIENTES","ITEMS","TC","EFECT" ,"VENTA DIA",'UTIL $'));

$listado = $con->conectar();
$strConsulta = "SELECT transactions.date, transactions.amount, transactions.itemcount, transactions.paymethod,
transactions.utility, transactions.type
FROM transactions
WHERE transactions.type='1' AND transactions.date >='$fechaformati' AND transactions.date <= '$fechaformatf' ";
//variables para totales generales
$totalclientesg=0;
$totalitemsg=0;
$totaltcg=0;
$totalcashg=0;
$totalventasg=0;
$totalutilg=0;
$queryventasdia = mysql_query($strConsulta);
$pdf->Cell(0,6,'','T',1);
$rangodias=$fechaf-$fechai;
$numfilas = mysql_num_rows($queryventasdia);

while ($rangodias!=-86400)
{
$totalclientesl=0;
$totalitemsl=0;
$totaltcl=0;
$totalcashl=0;
$totalventasl=0;
$totalutill=0;
$dia=date("Y-m-d",$fechai+$rangodias);
$fila=mysql_data_seek($queryventasdia,0);

for ($r=0; $r<$numfilas; $r++)
{
$fila=mysql_fetch_array($queryventasdia);
if ($dia==$fila['date'])
{
$totalclientesl=$totalclientesl+1;
$totalitemsl=$totalitemsl+$fila['itemcount'];
if ($fila['paymethod']=="2")
{
$totaltcl=$totaltcl+$fila['amount'];
}
else
{
$totalcashl=$totalcashl+$fila['amount'];
}
$totalventasl=$totalventasl+$fila['amount'];
$totalutill=$totalutill+$fila['utility'];
}

}
$pdf->Row(array($dia, $totalclientesl,$totalitemsl,number_format($totalt cl,2),number_format($totalcashl,2),number_format($ totalventasl,2),number_format($totalutill,2)));
$totalclientesg=$totalclientesg+$totalclientesl;
$totalitemsg=$totalitemsg+$totalitemsl;
$totaltcg=$totaltcg+$totaltcl;
$totalcashg=$totalcashg+$totalcashl;
$totalventasg=$totalventasg+$totalventasl;
$totalutilg=$totalutilg+$totalutill;
$rangodias=$rangodias-86400;
}
$pdf->Cell(0,6,'','T',1);
$pdf->SetFont('Arial','',12);
$pdf->SetTextColor(25,25,250);
$pdf->Row(array('TOTALES: ',$totalclientesg,$totalitemsg,'$ '.number_format($totaltcg,2),'$ '.number_format($totalcashg,2),'$ '.number_format($totalventasg,2),'$ '.number_format($totalutilg,2)));

$pdf->Output();
?>

De nuevo gracias.
  #5 (permalink)  
Antiguo 23/09/2010, 14:46
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 4 meses
Puntos: 2237
Respuesta: Problema con variable php.

Cita:
Iniciado por krea7or
$fechaformati=date("Y-m-d",$fechai);
$fechaformatf=date("Y-m-d",$fechaf);
...
WHERE transactions.type='1' AND transactions.date >='$fechaformati' AND transactions.date <= '$fechaformatf' ";
- El campo de fecha en tu tabla conserva la hora o solo dia, mes y año?
- No leiste lo que sugeri en mi mensaje anterior?
- Creo que no importa que ajustes el horario a GMT, porque en la consulta no usas horas... algo estas haciendo mal o de mas.
__________________
- León, Guanajuato
- GV-Foto
  #6 (permalink)  
Antiguo 24/09/2010, 10:45
 
Fecha de Ingreso: septiembre-2010
Mensajes: 8
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Problema con variable php.

Gracias amigos por su ayuda, paso a especificar un poquito mas puntual mi problema.

- El campo almacena la fecha en el siguiente formato aaaa-mm-dd.
- El horario lo ajusto porque las fechas las manejo con timestamps y si no lo ajusto a partir de las 6 de la tarde de un dia x en mi reporte saldria informacion del dia siguiente...

Ya por ultimo el quiero aclarar que todo el algoritmo funciona perfecto, solo me da problemas cuando marco "hoy" en el form, lo cual me extrana porque lo que sucede dentro del codigo es lo siguiente:

if (isset($_POST['hoy']))
{
$fechaf=$fecha; // esto es lo que no funciona, pero curiosamente en otra parte del codigo funciona perfecto.
}
else{
$fechaf=mktime(0,0,0,$_POST['mesf'],$fechaf=$_POST['diaf'],$_POST['yearf']);
}
$fechai=mktime(0,0,0,$_POST['mes'],$_POST['dia'],$_POST['year']);
}

Creo que debe ser uno de esos detalles pendejos que te hacen la vida imposible, y cuando los encuentras no sabes si llorar o reir...
  #7 (permalink)  
Antiguo 24/09/2010, 12:29
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 4 meses
Puntos: 2237
Respuesta: Problema con variable php.

Supongo que perderias mucho tiempo si intentaras poner tambien las horas en las fechas... lamento no poder sugerirte otra cosa... bueno, de hecho si podria, pero... para que?

Cita:
Iniciado por krea7or
- El campo almacena la fecha en el siguiente formato aaaa-mm-dd.
- El horario lo ajusto porque las fechas las manejo con timestamps y si no lo ajusto a partir de las 6 de la tarde de un dia x en mi reporte saldria informacion del dia siguiente...
Juro que no lo entiendo... si lo primero es cierto, lo segundo es completamente innecesario.
__________________
- León, Guanajuato
- GV-Foto
  #8 (permalink)  
Antiguo 25/09/2010, 15:00
 
Fecha de Ingreso: septiembre-2010
Mensajes: 8
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Problema con variable php.

Bueno aun mas especifico, comandox funciona dentro de ifX pero dentro de ifZ no funciona, por que? existe algun bug conocido, o es un caso muy particular? porque como ya comente todo el resto del codigo funciona de maravilla el unico problema es cuando marco un checkbox...
  #9 (permalink)  
Antiguo 25/09/2010, 15:44
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 4 meses
Puntos: 2237
Respuesta: Problema con variable php.

A ver, ultima sugerencia, espero que la pruebes, yo creo que no te deberia dar problema:

Cuando se marca el checkbox para mostrar solo lo del dia actual, independientemente de que ajustes o no el horario:

Fecha_inicio = hoy a las 0:00
Fecha_final = fecha_inicio + 86400 (o sea, mañana)

Tu query: WHERE fecha >= fecha_inicio AND fecha < fecha_final (Solo menor)

Si te funciona... genial!!! Si no... 'pos a replantear tu logica porque seria muy ilogico que no funcione!!!... aunque no tanto como no haber probado desde antes "solo por si acaso".

P.D. No hay peor gestion que la que no se hace.
__________________
- León, Guanajuato
- GV-Foto
  #10 (permalink)  
Antiguo 28/09/2010, 15:01
 
Fecha de Ingreso: septiembre-2010
Mensajes: 8
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Problema con variable php.

mira que sencillo, todo se reduce a que esto no me lo ejecuta php $fechaf=$fecha donde $fechaf es la fecha final y $fecha es la fecha actual pero en segundos tipo unix, en la parte del codigo que lo ponga ahi se pega y no tengo la menor idea... estoy a punto de llegar a la conclusion q es un bug...
  #11 (permalink)  
Antiguo 28/09/2010, 15:43
 
Fecha de Ingreso: septiembre-2010
Mensajes: 8
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Problema con variable php.

Damas y caballeros me complace presentarles la solucion a mi problema, no es un bug, no es una pulga, no es parse error, jaja, es una de esas pendejadas que te hacen aprender, todo se resume a que la condicion del while que utilizo en el codigo se ejecuta mientras la diferencia entre $fechaf y $fechai sea diferente de -86400, por lo cual al darle valor a $fechai con mktime(0,0,0,mes,dia,ano) y a $fechaf con time(), NO existe una diferencia de dias exacta entre ambas variables por lo cual el while se seguira ejecutando hasta encontrar el valor de la constante cosmologica de einstein, jajaja, o sea NUNCA, jeje de todos modos gracias....

Etiquetas: checkbox, isset, 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 19:10.