Foros del Web » Programando para Internet » PHP »

Problema con php

Estas en el tema de Problema con php en el foro de PHP en Foros del Web. Que tal, estoy teniendo problemas con un formulario de php. Este ejecuta un query que selecciona un rango de fechas, al ejecutar un rango de ...
  #1 (permalink)  
Antiguo 02/09/2014, 09:59
 
Fecha de Ingreso: septiembre-2014
Mensajes: 3
Antigüedad: 9 años, 8 meses
Puntos: 0
Problema con php

Que tal, estoy teniendo problemas con un formulario de php.

Este ejecuta un query que selecciona un rango de fechas, al ejecutar un rango de fechas de 3 dias este se queda pensando y llega a su tiempo maximo de ejecucion y se traba, pero al ejecutar este mismo query por sql yog lo hace sin problemas.

Otro detalle, cuando selecciono un rango de fechas de 1 dia o maximo 2 en el php la consulta se hace correctamente pero ya ponerle 3 dias hace que se trabe el formulario.

He probado los querys desde sql yog y phpmyadmin y todo bien, que podra estar afectando??

Saludos.
  #2 (permalink)  
Antiguo 02/09/2014, 10:06
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 10 meses
Puntos: 379
Respuesta: Problema con php

La solución simple es que le des mas tiempo de ejecución al script, pero te recomendaría que mejor publicaras el código igual es otra cosa el problema. Cuantos registros te devuelve la consulta ?
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #3 (permalink)  
Antiguo 02/09/2014, 10:15
 
Fecha de Ingreso: septiembre-2014
Mensajes: 3
Antigüedad: 9 años, 8 meses
Puntos: 0
Respuesta: Problema con php

Ya cambie el maximo tiempo de ejecución a 600(10 minutos) y lo raro es que se sigue trabando a los 300 que tenia por default (5 minutos)

Aqui publico el codigo:

Código PHP:
<?
    
include('include/header1.php');
    
set_time_limit(0);
    
ini_set('max_execution_time'600);
      
ini_set('memory_limit''1024M');
    
$fechamax  $db->get_row("SELECT MAX(fecha_transmision) as fecha FROM ventas"); 
    
$fechamin  $db->get_row("SELECT MIN(fecha_transmision) as fecha FROM ventas"); 
    
$bar       strtotime($fechamax->fecha); $candy strtotime('-1 month',$bar); 
    
$separa    date('Y-m-d'$candy);
    
$fechamax1 str_replace('-'', '$separa); 
    
$bar1      strtotime($fechamin->fecha); $candy1 strtotime('-1 month',$bar1); 
    
$separa1   date('Y-m-d'$candy1);
    
$fechamin1 str_replace('-'', '$separa1); 
?>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  <title>Alsuper - Proveedores</title>
  <link rel="stylesheet" href="css/style.css" type="text/css" media="all" />
  <link rel="stylesheet" type="text/css" href="css/theme/easyui.css">
  <script type="text/javascript" src="js/jquery-1.8.0.min.js"></script>
  <script type="text/javascript" src="js/jquery-ui-1.7.2.custom.min.js"></script>
  <script type="text/javascript" src="js/curvycorners.js"></script>
  <script type="text/javascript">

  jQuery(document).ready(function($) {
      caldenario();
      $('#exportar').on('click',exportar);
      $('#Exportar_a_Excel tr:nth-child(odd)').addClass('odd1');
    $('#Exportar_a_Excel tr:nth-child(even)').addClass('even1');
  });
  function caldenario(){
      $.datepicker.regional['es'] = {
        closeText: 'Cerrar',
        prevText: '&#x3c;Ant',
        nextText: 'Sig&#x3e;',
        currentText: 'Hoy',
        monthNames: ['Enero','Febrero','Marzo','Abril','Mayo','Junio','Julio','Agosto','Septiembre','Octubre','Noviembre','Diciembre'],
        monthNamesShort: ['Ene','Feb','Mar','Abr','May','Jun','Jul','Ago','Sep','Oct','Nov','Dic'],
        dayNames: ['Domingo','Lunes','Martes','Mi&eacute;rcoles','Jueves','Viernes','S&aacute;bado'],
        dayNamesShort: ['Dom','Lun','Mar','Mi&eacute;','Juv','Vie','S&aacute;b'],
        dayNamesMin: ['Do','Lu','Ma','Mi','Ju','Vi','S&aacute;'],
        weekHeader: 'Sm',
        dateFormat: 'dd-mm-yy',
        firstDay: 1,
        isRTL: false,
        showMonthAfterYear: false,
        yearSuffix: ''
    };
    $.datepicker.setDefaults($.datepicker.regional['es']);

    $(".datepicker").datepicker({ 
        showOn: 'button',     
        buttonImageOnly: true, 
        buttonImage: 'img/calendario.jpeg',
        minDate: new Date(<? print $fechamin1?>),
        maxDate: new Date(<? print $fechamax1?>),
        constrainInput: true,
        showAnim: "scale", 
        showOn: "both",
        showOptions: { 
               origin: ["top", "left"] 
          }
    });
  }
  function exportar(){
            $("#datos_a_enviar").val( $("<div>").append( $("#Exportar_a_Excel").eq(0).clone()).html());
            $("#FormularioExportacion").submit();
      }

  </script>
  <?
  
if(!empty($_POST)){
        
$arreglo = array(
            
'proveedor'            =>    $_POST['proveedor'],
            
'descripcion'         =>    $_POST['descripcion'],
            
'fechade'             =>    $_POST['fechade'],
            
'fechaa'             =>    $_POST['fechaa'],
            
'sucursal'             =>    $_POST['sucursal'],
            
'codigo'             =>    $_POST['codigo'],
            
'cantidadde'         =>    $_POST['cantidadde'],
            
'cantidada'         =>    $_POST['cantidada'],
            
'importede'         =>    $_POST['importede'],
            
'importea'             =>    $_POST['importea'],
            
'tecla'             =>     $_POST['tecla'],
        );
        
$ventas1 getVentas($arreglo);
    } 
    
?>
</head>
<body topmargin="0" leftmargin="0" rightmargin="0" bottommargin="0">
<div align="center">
  <table id="content">
    <tr>
      <td height="19" align="center" valign="top">
        <img src="img/top_prov.jpg" width="715" height="110">
        <div class="prov_ventana_info">
            Favor de Incluir en su facturación la siguiente información  <br>
            <b>Banco:</b> <?=$_SESSION["nom_banco"]?> <br>
            <b>No. de Cuenta:</b> <?=$_SESSION["num_cuenta"]?> <br>
            <b>Tipo de Pago:</b> <?=$_SESSION["tipo_pago"]?>  - <a href="formapago.php">ver completo</a><br>
        </div>
      </td>
    </tr>
    <tr>
      <td align="center" valign="top">
      <table width="710" border="0" cellpadding="0" cellspacing="0" bordercolor="#CCCCCC">
        <tr>
          <td>
              <ul class="tabs123 group">
                <li><a href="existencias.php" >Existencias</a></li> 
                <li class="active rounded"><a href="ventas.php">Ventas</a></li> 
                <li><a href="ordenesdecompra.php" >Ordenes de Compra</a></li>
                <li><a href="cheques.php" >Cheques</a></li> 
                <li><a href="promocontrol.php" >Promocontrol</a></li> 
                <li><a href="usuario.php">Usuarios</a></li> 
                <li><a href="salir.php" >Salir</a></li> 
              </ul>
          </td>
        </tr>
        <?
            $bar 
strtotime($fechamax->fecha);
            
$newMax1 =  date('d-m-Y'$bar);
            
$bar2 strtotime($fechamin->fecha);
            
$newMin1 =  date('d-m-Y'$bar2);
        
?>
      <tr>
        <td height="38" colspan="10" align="left" valign="top" bordercolor="#2B659A" >
          <table width="100%" border="0" cellpadding="0" cellspacing="0" class="tablatext">
            <tr>
            <td width="2%" align="left" valign="top" bgcolor="#FFFFFF"></td>
                <td width="95%" bgcolor="#FFFFFF" style="padding-top:4px;">
                  <div class="Estilo1">
                    <form method="post" action='<?=$_SERVER['PHP_SELF']?>'>
                            <input type="hidden" value="<?=$_SESSION["proveedor"]?>" name="proveedor" id="formProveedor">
                        <div style="float: left; ">
                            Descripcion:
                            <input type="text" name="descripcion" id="descripcion" size="10">
                            Fecha de:
                            <input id="formFechade" class="datepicker" name="fechade" value="<?=$newMin1?>" size="8" maxlength="10">
                             a 
                            <input id="formFechaa" class="datepicker" name="fechaa" value="<?=$newMax1?>" size="8" maxlength="10">
                            Suc:
                            <select id="formSucursal" style="width:100px" name="sucursal">
                                    <option value="0" selected>Todas</option>
                                    <?
                                        
foreach (getSucursales() as $res){
                                    
?>
                                        <option value="<?=$res->sucursal?>"><?=$res->sucursal?>-<?=$res->descripcion?></option>
                                    <? ?>
                            </select>
                            Tecla
                            <input type="text" id="formTecla" name="tecla" size="3">
                            <br>
                            Codigo
                            <input type="text" id="formCodigo" name="codigo" size="7">
                            Cantidad entre
                            <input type="text" id="formCantidadde" name="cantidadde" size="2">
                            y 
                            <input type="text" id="formCantidada" name="cantidada" size="2">
                            Importe entre
                            <input type="text" id="formImportede" name="importede" size="2">
                            y 
                            <input type="text" id="formImportea" name="importea" size="2">
                            <input type="submit" value="Buscar" id="buscarVentas">
                            <input type="button" value="Exportar" id="exportar">
                        </div>
                    </form>
                    <form method="post"  target="_blank" action="datos/creaexcel.php" id="FormularioExportacion">
                        <input type="hidden" id="datos_a_enviar" name="datos_a_enviar" />
                    </form>
                    <div style="margin-bottom: 20px;">
                        <table id="existenciasDataGrid" align="left"></table>
                    </div>
                  </div>
                  </td>
                <td width="3%" align="right" valign="top" bgcolor="#FFFFFF">
                </td>
            </tr>
            <tr>
                <td colspan="3" bgcolor="#FFFFFF">
                    <div class="scroll" id="divtable">
                        <table width="1800px" border="0" id="Exportar_a_Excel">
                          <tr class="cabezera">
                            <td>Sucursal</td>
                            <td width="145px">Nombre Sucursal</td>
                            <td>Articulo</td>
                            <td>Codigo</td>
                            <td width="370px">Nombre Articulo</td>
                            <td>Venta Actual</td>
                            <td>Cantidad Actual</td>
                            <td>Importe Actual</td>
                            <td>Venta Mes Anterior</td>
                            <td>Cantidad  Mes Anterior</td>
                            <td>Importe  Mes Anterior</td>
                            <td>Venta Año Anterior</td>
                            <td>Cantidad Año Anterior</td>
                            <td>Importe Año Anterior</td>
                            <td width="170px">Fecha</td>
                          </tr>
                          <? 
                              
if(!empty($ventas1)){
                                  
$ventas1 json_decode($ventas1,true);
                                  
$cantidad count($ventas1);
                                  for (
$i=0$i $cantidad$i++) { 
                                      echo 
"<tr>";
                                        echo 
"<td>".$ventas1[$i]['sucursal']."</td>";
                                        echo 
"<td>".$ventas1[$i]['descripcion']."</td>";
                                        echo 
"<td>".$ventas1[$i]['articulo']."</td>";
                                        echo 
"<td>".$ventas1[$i]['codigo']."</td>";
                                        echo 
"<td>".$ventas1[$i]['nombre']."</td>";
                                        echo 
"<td>".$ventas1[$i]['venta']."</td>";
                                        echo 
"<td>".$ventas1[$i]['cantidad']."</td>";
                                        echo 
"<td>".$ventas1[$i]['importe']."</td>";
                                        echo 
"<td>".$ventas1[$i]['MaVenta']."</td>";
                                        echo 
"<td>".$ventas1[$i]['MaCantidad']."</td>";
                                        echo 
"<td>".$ventas1[$i]['MaImporte']."</td>";
                                        echo 
"<td>".$ventas1[$i]['AaVenta']."</td>";
                                        echo 
"<td>".$ventas1[$i]['AaCantidad']."</td>";
                                        echo 
"<td>".$ventas1[$i]['AaImporte']."</td>";
                                        echo 
"<td>".$_POST['fechade']." a ".$_POST['fechaa']."</td>";
                                    echo 
"</tr>";
                                  }
                              }
                          
?>
                        </table>
                    <div>
                </td>
            </tr>
          </table>
      <tr>
 
<?
    
include('include/footer.php');
?>
  #4 (permalink)  
Antiguo 02/09/2014, 10:16
 
Fecha de Ingreso: septiembre-2014
Mensajes: 3
Antigüedad: 9 años, 8 meses
Puntos: 0
Respuesta: Problema con php

D include esta header.php que tiene un funciones2.php que tiene getVentas que aqui lo pongo tambien:

Código PHP:
function getVentas($parametros){
        global 
$db;
        
$proveedor   =    $parametros['proveedor'];
        
$descripcion =    $parametros['descripcion'];
        
$fechade     =    $parametros['fechade'];
        
$fechaa      =    $parametros['fechaa'];
        
$sucursal    =    $parametros['sucursal'];
        
$codigo      =    $parametros['codigo'];
        
$cantidadde  =    $parametros['cantidadde'];
        
$cantidada   =    $parametros['cantidada'];
        
$importede   =    $parametros['importede'];
        
$importea    =    $parametros['importea'];
        
$tecla       =    $parametros['tecla'];

        
$fecha explode('-'$fechade);
        
$fecha1 $fecha[2].'-'.$fecha[1].'-'.$fecha[0];

        
$fecha explode('-'$fechaa);
        
$fecha2 $fecha[2].'-'.$fecha[1].'-'.$fecha[0];


        if(!empty(
$descripcion)){
            
$where1 .=" AND a.nombre LIKE '%$descripcion%'";
        }
        if(!empty(
$codigo)){
            
$where1 .=" AND a.codigo = $codigo";
        }
        if(!empty(
$tecla)){
            
$where1 .=" AND a.tecla = $tecla";
        }


        if(
$sucursal != 0){
            
$where .=" AND v.sucursal = $sucursal";
        }
        if(
$cantidadde!='') {
            if(
$cantidada!='') {
                
$having =" HAVING SUM(Cantidad) BETWEEN '$cantidadde' AND '$cantidada' ";
            } else {
                
$having =" HAVING SUM(Cantidad)>='$cantidada' ";
            }
        } elseif(
$cantidadde!='') {
            
$having =" HAVING SUM(Cantidad)<='$cantidada' ";
        }

        if(
$importede!='') {
            if(
$importea!='') {
                if(empty(
$having)){ 
                    
$having .= " HAVING SUM(Venta*Cantidad) BETWEEN $importede AND $importea "
                } else {  
$having .= " AND SUM(Venta*Cantidad) BETWEEN $importede AND $importea "
            }     
            } else {
                if(empty(
$having)){  
                    
$having .= " HAVING SUM(Venta*Cantidad)>=$importede "
                } else {  
                    
$having .= " AND SUM(Venta*Cantidad)>=$importede "
                }
            }
        } elseif(
$importea!='') {
            if(empty(
$having)){  
                
$having .=" HAVING SUM(Venta*Cantidad)<=$importea "
            } else {  
                
$having .= " AND SUM(Venta*Cantidad)>=$importede "
            }
        }
        
$query1 ="    CREATE TEMPORARY TABLE paso
                    SELECT     ap.proveedor,ap.articulo,a.nombre,a.tecla,a.codigo
                    FROM     arti_proveedor ap
                            INNER JOIN articulo a ON ap.articulo=a.articulo
                    WHERE     ap.proveedor=$proveedor
                    "
.$where1."
                "
;
        
$db->query($query1);

        
$query2 =" SELECT     v.sucursal, v.articulo,p.nombre,p.tecla,p.codigo,s.descripcion,
                            ROUND(SUM(Cantidad),2) AS cantidad,
                            ROUND(SUM(Venta*Cantidad)/SUM(Cantidad),2) AS venta,
                            ROUND(SUM(Venta*Cantidad),2) AS importe,
                            ROUND(SUM(MaVenta*MaCantidad)/SUM(MaCantidad),2) AS MaVenta,
                            ROUND(SUM(MaCantidad),2) AS MaCantidad,
                            ROUND(SUM(MaVenta*MaCantidad),2) AS MaImporte,
                            ROUND(SUM(AaVenta*AaCantidad)/SUM(AaCantidad),2) AS AaVenta,
                            ROUND(SUM(AaVenta*AaCantidad),2) AS AaImporte,
                            ROUND(SUM(AaCantidad),2) AS AaCantidad
                  FROM         ventas v
                            INNER JOIN paso p ON v.articulo=p.articulo
                            INNER JOIN sucursal s ON v.sucursal=s.sucursal
                  WHERE     fecha_transmision BETWEEN '$fecha1' AND '$fecha2' AND p.proveedor=$proveedor
                              AND v.sucursal NOT IN(95,96)
                              "
.$where.
                            GROUP BY v.sucursal,v.articulo
                            "
.$having."
                         "
;

        
$respuesta $db->get_results($query2);
        
$query3 "DROP TABLE paso";
        
$db->query($query3);
        return 
json_encode($respuesta);
    } 

Etiquetas: formulario, sql
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 06:37.