PHP - Problema con codigo PHP

   
Vista:

Problema con codigo PHP

Publicado por mario (33 intervenciones) el 01/10/2013 22:02:55
hola amigos estoy realizando un codigo de php dentro de un script para ejecutarlo por medio de una funcion.
esplico:
tengo un base de datos con una tabla activos que tiene valores como el valor el valoactual, depreciacion, tiempo de uso, porcentaje de depreciacion secuencia (numero llave), fechaactual que pueden ver en la consulta que hago en el codigo que pongo a continuacion. La idea es calcular la depreciacion y modificar los valores segun su depreciacion y actualizar la tabla activos con los nuevos valores...
para ello
1- realizo una consulta a la tabla activos y tomo los valores que hay hasta el momento
2- recalculo la depreciacion y rebajo los valores depreciados de los valores actuales
3- actualizo la tabla activos con los nuevos valores

el problema es que no hace nada jajajaj...

dejo aqui el codigo a ver si pueden ojearlo y decirme que estoy haciendo mal.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
mysql_select_db($database_conexionsara, $conexionsara);
$query_ConsultaActivos = "SELECT * FROM activos";
$ConsultaActivos = mysql_query($query_ConsultaActivos, $conexionsara) or die(mysql_error());
$row_ConsultaActivos = mysql_fetch_assoc($ConsultaActivos);
$totalRows_ConsultaActivos = mysql_num_rows($ConsultaActivos);
?>
<script>
function SepararFecha(){
<?php
date_default_timezone_set("America/Panama");
/*$Porcentaje = $_POST["Porc"];*/
/*$ValorActual = $_POST["ValorActual"];*/
do{
$Porcentaje =$row_ConsultaActivos['PORCDEP'];
$ValorActual =$row_ConsultaActivos['VALORACTUAL'];
$Secuencia = $row_ConsultaActivos['SECUENCIA'];
$ValorAgregado = $row_ConsultaActivos['VALORAGREGADO'];
$Valor = $row_ConsultaActivos['VALOR'];
if (($Porcentaje)> 0){
$date = strtotime(date("y-m-d"));
$date1 = date("y-m-d");
$AñoAct= date("Y", $date);
$MesAct= date("m", $date);
$DiaAct= date("d", $date);
 
$date7 = strtotime($row_ConsultaActivos['FECHAADQUISICION']);
$AñoAdq= date("Y", $date7);
$MesAdq= date("m", $date7);
$DiaAdq= date("d", $date7);
 
if(($DiaAct)< $DiaAdq){
$MesAct= $MesAct - 1;
$DiaAct = $DiaAct +30;
}
if(($MesAct)< $MesAdq){
$AñoAct= $AñoAct - 1;
$MesAct = $MesAct +12;
}
 
$Dia = $DiaAct - $DiaAdq;
$Mes = $MesAct - $MesAdq;
$Año = $AñoAct - $AñoAdq;
 
$TiempoDeUso = ( "En el inventario, El tiempo de uso es de: ". $Año ." años ".$Mes . " meses ". $Dia. " dias ");
$AñosEnDias = $Año * 365;
$MesesEnDias = $Mes * 30;
$TiempoDeUso = $AñosEnDias + $MesesEnDias + $fecha_C;
//==============================================
// SI EL VALOR ACTUAL ES MAYOR O IGUAL A 100
//==============================================
if (($ValorActual)>= 100) {
$depacum = $row_ConsultaActivos['TOTALDEPRECIADO'];
$DepAnual=(($ValorActual * $Porcentaje)/100)* $Año;
$DepMen = ((($ValorActual * $Porcentaje)/100)/12)* $Mes;
$DepDia = (((($ValorActual * $Porcentaje)/100)/12)/30)* $Dia;
$DepTotal = $DepAnual + $DepMen + $DepDia;
$ValorReal = $ValorActual - $DepTotal;
$NewVal= $ValorActual - $DepTotal;
if (($NewVal)<= 1){
$NewVal = 1;
$TotalDepreciado = $ValorActual - 1;
}else{
$TotalDepreciado = $DepTotal;
}
$RestaAcumulada = $depacum - $DepTotal;
//==============================================
// ACTUALIZACION LOS DATOS DE LA TABLA ACTIVOS
//==============================================
$updateSQL = sprintf("UPDATE activos SET DEPRECIACIONACUMULADA=%s, VALORREAL=%s, VALORDEPRECANUAL=%s, VALORDEPRECMENS=%s, VALORDEPRECDIARIO=%s FECHAACTUAL=%s, TOTALDEPRECIADO=%s, TIEMPOUSO=%s WHERE SECUENCIA=%s",
GetSQLValueString($DepTotal, "double"),
GetSQLValueString($NewVal, "double"),
GetSQLValueString($DepAnual, "double"),
GetSQLValueString($DepMen, "double"),
GetSQLValueString($DepDia, "double"),
GetSQLValueString($date, "date"),
GetSQLValueString($TotalDepreciado, "double"),
GetSQLValueString($TiempoDeUso, "text"),
GetSQLValueString($Secuencia, "text"));
mysql_select_db($database_conexionsara, $conexionsara);
mysql_query("SET NAMES 'utf-8'");
$Result1 = mysql_query($updateSQL, $conexionsara) or die(mysql_error());
if(($DepTotal)>$ValorAgregado){
$TotalDepreciado = ($Valor + $DepTotal)-1;
$updateSQL1 = sprintf("UPDATE activos SET TOTALDEPRECIADO=%s WHERE SECUENCIA=%s",
GetSQLValueString($TotalDepreciado, "double"),
GetSQLValueString($Secuencia, "text"));
mysql_select_db($database_conexionsara, $conexionsara);
mysql_query("SET NAMES 'utf-8'");
$Result1 = mysql_query($updateSQL1, $conexionsara) or die(mysql_error());
}
 
if (($RestaAcumulada)<> 0){
$DepreciacionAcumulada = $depacum + $DepDia;
$updateSQL2 = sprintf("UPDATE activos SET DEPRECIACIONACUMULADA=%s WHERE SECUENCIA=%s",
GetSQLValueString($DepreciacionAcumulada, "double"),
GetSQLValueString($Secuencia, "text"));
mysql_select_db($database_conexionsara, $conexionsara);
mysql_query("SET NAMES 'utf-8'");
$Result1 = mysql_query($updateSQL2, $conexionsara) or die(mysql_error());
}
//==============================================
// SI EL VALOR ACTUAL ES MENOR A 100
//==============================================
}
if (($ValorActual)< 100) {
$DepDia = $ValorActual / 365 ;
$DepTotal=$TiempoDeUso * $DepDia;
$NewVal = $ValorActual - $DepTotal;
if (($NewVal)<= 0){
$NewVal = 1;
$TotalDepreciado = $ValorActual - 1;
}else{
$TotalDepreciado = $DepTotal;
}
$updateSQL = sprintf("UPDATE activos SET TOTALDEPRECIADO=%s, VALORREAL=%s, VALORDEPRECDIARIO=%s, FECHAACTUAL=%s, TIEMPOUSO=%s WHERE SECUENCIA=%s",
GetSQLValueString($TotalDepreciado, "double"),
GetSQLValueString($NewVal, "double"),
GetSQLValueString($DepDia, "double"),
GetSQLValueString($date, "date"),
GetSQLValueString($TiempoDeUso, "text"),
GetSQLValueString($Secuencia, "text"));
mysql_select_db($database_conexionsara, $conexionsara);
mysql_query("SET NAMES 'utf-8'");
$Result1 = mysql_query($updateSQL, $conexionsara) or die(mysql_error());
}
}
} while ($row_ConsultaActivos = mysql_fetch_assoc($ConsultaActivos));
$rows = mysql_num_rows($ConsultaOrigen);
if($rows > 0) {
mysql_data_seek($ConsultaActivos, 0);
$row_ConsultaActivos = mysql_fetch_assoc($ConsultaActivos);
}
 
?>
}
</script>

gracias por la ayuda
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

Problema con codigo PHP

Publicado por Elier (92 intervenciones) el 02/10/2013 19:06:32
Lo primero que veo es que usas el tag <script> y supongo que tu codigo es 100% PHP, asi que tienes que eliminar el <script> function SepararFecha(){ al principio del codigo y } </script>

refactoriza el codigo para que te quede mas claro, ademas asi puedes probar cada parte del codigo para ver donde esta fallando.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
<?php
 
/ *conectar a la base de datos */
 
function conectar()
{
$config = array('host'=>'localhost', 'user'=>'root', 'pass'=>'', 'db_name'=>'');
 
$conn = new mysqli($config['host'], $config['user'], $config['pass'], $config['db_name']);
 
		if ($conn->connect_error) {
		    echo 'Error al conectar (' . $conn->connect_errno . ') '. $conn->connect_error;
			return NULL;
		}
 
		echo 'Conexion establecida';
 
return $conn;
}
 
/* obtener todos los activos en un arreglo */
 
function obtenerActivos()
{
$obtenerTodos = "SELECT * FROM activos";
 
$activos = array();
 
 $conn = conectar();
 
 if($conn)
 {
   $resultado = $conn->query($obtenerTodos);
 
   if ($resultado)
      {
         while($activo = $resultado->fetch_row())
         {
         $activos[]=$activo;
         }
      }
   else
      {
      echo "No se pudo ejecutar la consulta";
      }
   $resultado->close();
 
   $conn->close();
 }
 
 return $activos;
 
}
 
/* Actualizar la depreciacion */
 
function actualizarActivo($activo = NULL)
{
 
// Aqui va el codigo que actualiza la depreciacion de cada activo
 
return $activo;
 
}
 
function actualizarTodos($activos = NULL)
{
  $activos_actualizados = array();
 
  if (!empty($activos)
  {
     foreach($activos as $activo)
     {
        $activos_actualizados[] = actualizarActivo($activo);
     }
  }
  else
  {
   echo "El arreglo esta vacio";
   }
   return $activos_actualizados;
}
 
/* Generar SQL y ejecutar consulta a la DB*/
 
function salvarActivos ($activos = NULL)
{
 
// Aqui poner codigo que genera el SQL para actualizar cada activo en la BD
 
}
 
/* Ejecutar las funciones */
 
$activos = obtenerActivos();
 
$activos_actualizados = actualizarTodos($activos);
 
salvarActivos($activos_actualizados);
 
?>
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

Problema con codigo PHP

Publicado por manoat (33 intervenciones) el 02/10/2013 20:29:15
resuelto segui tu consejo y encontre los errores solo que al ejecutar el codigo me da este error

Fatal error: Maximum execution time of 30 seconds exceeded in C:\wamp\www\SARA_WEB\pruebafechas.php on line 122

esta es la linea122

$Result1 = mysql_query($updateSQL1, $conexionsara) or die(mysql_error());

actualiza solo una pequeña porcion de lo datos de la tabla
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
Imágen de perfil de xve

Problema con codigo PHP

Publicado por xve (5520 intervenciones) el 02/10/2013 21:48:23
Lo que te esta diciendo, es que la ejecución de la consulta sql tarda mas de 30 segundos en ejecutarse...
Yo te recomendaría optimizar si es posible la base de datos.

También puedes aumentar el timeout del php... aunque no te lo recomiendo.
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