PHP - Problema con function al actualizar datos

 
Vista:
sin imagen de perfil
Val: 7
Ha aumentado su posición en 23 puestos en PHP (en relación al último mes)
Gráfica de PHP

Problema con function al actualizar datos

Publicado por Alejandro (5 intervenciones) el 28/10/2018 09:43:22
hola gente necesito mucho de su ayuda ya que estoy tratando de adaptar un codigo pero ,soy muy novato en esto de la programación y necesito que me ayuden a comprenderlo y quiza a darme una solucion si no es mucho molestia.
es problema es que tengo en el archivo php donde se selecciona para actualizar cuentas y subcuentas.
y contiene estos 2 hrfy
1
2
<a href="actualiza.php?q=subcuentas"><li class="list-group-item">Actualizar saldos de las subcuentas</li></a>
      <a href="actualiza.php?q=cuentas"><li class="list-group-item">Actualizar saldos de las cuentas</li></a>

luego tengo el archivo actualiza.php
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
<?php
error_reporting(E_ALL ^ E_NOTICE);
 
if(!isset($conexion))
{
	include("conexion.php");
}
 
include("funciones.php");
$q = $_GET["q"];
 
if($q=="subcuentas")
{
	$sql = "SELECT * FROM subcuentas";
	$ejecutar_consulta = $conexion->query($sql);
 
	while($regs = $ejecutar_consulta->fetch_assoc())
	{
		actualizarCuentas($conexion, $regs["codigo_subcuenta"]);
	}
	$mensaje="Se actualizaron los saldos de todas las subcuentas.";
	header("Location: actualizar.php?mensaje=$mensaje");
 
} else if($q=="cuentas")
{
	$sql = "SELECT * FROM cuentas";
	$ejecutar_consulta = $conexion->query($sql);
	while($regs = $ejecutar_consulta->fetch_assoc())
	{
		actualizarCuentas($conexion, $regs["codigo_cuenta"]);
		saldosCuentas($conexion, $regs["codigo_cuenta"]);
	}
	$mensaje="Se actualizaron los saldos de todas las cuentas.";
	header("Location: actualizar.php?mensaje=$mensaje");
}
?>

Pero resulta que ese codigo de actualiza.php no funciona correctamente ya que solo funciona la opcion "subcuentas" ya que captura los datos que estan relacionados en la tabla "registros"..la opcion de cuentas solo devuelve la suma de los datos relacionados que están en la tabla "subcuentas" ,cuando tambien tendria que capturar y registrar en la tabla cuentas, los registros de debe y haber que se encuentran en la tabla registros (en caso de que la cuenta no tenga subcuenta)


ahora el codigo funciones.php
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
function actualizarCuentas($conexion, $cuenta){
		$c = explode('.', $cuenta);
		if(isset($c[4])){
			//$sql = "SELECT SUM(debe) sumadebe, SUM(haber) sumahaber FROM registro WHERE cuenta='$cuenta'";
			$sql = "SELECT IFNULL((SELECT SUM(debe) FROM registro WHERE cuenta='$cuenta'),0) sumadebe, IFNULL((SELECT SUM(haber) FROM registro WHERE cuenta='$cuenta'),0 ) sumahaber";
			$ejecutar_consulta = $conexion->query($sql);
			while($regs = $ejecutar_consulta->fetch_assoc()){
				$saldo_debe = $regs["sumadebe"];
				$saldo_haber = $regs["sumahaber"];
 
				$update = "UPDATE subcuentas SET saldo_debe=$saldo_debe, saldo_haber=$saldo_haber WHERE codigo_subcuenta='$cuenta'";
				$ex_query = $conexion->query($update);
				if($ex_query){
					//echo "OK. <br>";
				}
			}
		}
 
		if(!isset($c[4])){
			//$sql = "SELECT SUM(debe) sumadebe, SUM(haber) sumahaber FROM registro WHERE cuenta='$cuenta'";
			$sql = "SELECT IFNULL((SELECT SUM(debe) FROM registro WHERE cuenta='$cuenta'),0) sumadebe, IFNULL((SELECT SUM(haber) FROM registro WHERE cuenta='$cuenta'),0 ) sumahaber";
			$ejecutar_consulta = $conexion->query($sql);
			if($ejecutar_consulta){
				while($regs = $ejecutar_consulta->fetch_assoc()){
					$saldo_debe = $regs["sumadebe"];
					$saldo_haber = $regs["sumahaber"];
 
					$update = "UPDATE cuentas SET saldo_debe=$saldo_debe, saldo_haber=$saldo_haber WHERE codigo_cuenta='$cuenta'";
					$ex_query = $conexion->query($update);
					if($ex_query){
						//echo "OK. <br>";
					}
				}
			}
		}
	}
 
 
 
	function saldosCuentas($conexion, $cuentas){
		$sql = "SELECT IFNULL((SELECT SUM(saldo_debe) FROM subcuentas WHERE cuenta = '$cuentas'),0) sumadebe, IFNULL((SELECT SUM(saldo_haber) FROM subcuentas WHERE cuenta='$cuentas'),0) sumahaber;";
		$ejecutar_consulta = $conexion->query($sql);
		if($ejecutar_consulta->num_rows > 0 ){
			while ($regs = $ejecutar_consulta->fetch_assoc()) {
				$saldo_debe = $regs["sumadebe"];
				$saldo_haber = $regs["sumahaber"];
				//$cuenta = $regs["cuenta"];
				$consulta = "UPDATE cuentas SET saldo_debe=$saldo_debe, saldo_haber=$saldo_haber WHERE codigo_cuenta='$cuentas'";
				$ejecutar = $conexion->query($consulta);
				if($ejecutar_consulta){
					//echo "OK. <br>";
				}
			}
		}
	}
note que el proceso de actualizar las cuentas funciona correctamente cuando ,primero actualizo las subcuentas en el archivo actualizar.php y luego abro una pagina donde se hace aparece la funciona

esta es la parte del codigo

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
<body>
    <!-- Barra de navegación -->
    <?php include("nav.php"); ?>
    <?php include("funciones.php"); ?>
    <?php
    if(!isset($conexion)){ include("conexion.php");}
    $sql = "SELECT * FROM cuentas";
    $ejecutar_consulta = $conexion->query($sql);
    while($regs = $ejecutar_consulta->fetch_assoc()){
        actualizarCuentas($conexion, $regs["codigo_cuenta"]);
        saldosCuentas($conexion, $regs["codigo_cuenta"]);
    }
    ?>
 
    <!-- Contenido de la página -->
    <div class="container" id="contenido">
        <div class="row row-offcanvas row-offcanvas-right">
            <div class="col-xs-12 col-sm-9">
                <div class="page-header">
                    <h3></h3>
                </div>
                <div class="row">
                    <div class="col-lg-12 well">
                        <h2 class="text-primary"><span class="glyphicon glyphicon-info-sign"></span> Libro Mayor General</h2>
                        <p align="justify" class="text-info">
 
                        </p>
                    </div>
                    <hr>
 
                    <div class="col-lg-12">
                        <table class="table table-condensed table-bordered table-striped">
                            <thead>
                                <tr>
                                    <th>Cuenta</th>
                                    <th width="100">Debe</th>
                                    <th width="100">Haber</th>
                                </tr>
                            </thead>
                            <tbody>
                                <?php
                                if(!isset($conexion)){
                                    include("conexion.php");
                                }
                                $sql = "SELECT DISTINCTROW(cuenta) cuentas FROM registro";
                                $ejecutar_consulta = $conexion->query($sql);
                                while($registro = $ejecutar_consulta->fetch_assoc()){
                                    actualizarCuentas($conexion, $registro["cuentas"]);
                                }

se que es muy extenso ,pero espero que puedan ayudarme a entender el funcionamiento y el problema
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