PHP - navegar en la misma pagina sin perder datos de formulario

 
Vista:
Imágen de perfil de Maria del Rosario

navegar en la misma pagina sin perder datos de formulario

Publicado por Maria del Rosario (6 intervenciones) el 20/10/2017 00:53:21
Hola!!! Buenas Tardes!!!

Tengo un problema, estoy empezando a desarrollar en PHP (MVC) y estoy modificando una pagina web ya creada, lo que quiero es que un usuario pueda navegar en las diferentes pestañas de la pagina, para consultar algún dato que se le haya olvidado, pero al momento de regresar a la pestaña donde agrega algún cobro, no se pierdan los datos que ya a introducido.

Tengo una Vista, un modelo, un controlador y un JavaScript (donde agrego o elimino filas de registros), a continuacion les pongo parte del codigo donde hago las operaciones principales


VISTA

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<table class="table table-bordered table-striped"    id="carrito">
    <thead>
    <th>Factura</th>
    <th>Cuenta</th>
    <th>Orden</th>
    <th>Cliente</th>
    <th>Relación de pago</th>
    <th>Banco</th>
    <th>Fecha</th>
    <th>Numero</th>
    <th>Importe</th>
    <th></th>
    <thead>
 
    <tbody>
        <tr>
 
            <td colspan=10><center>No Hay Relaciones Agregadas</center></td>
 
        </tr>
    </tbody>

CONTROLADOR

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
public function addcarrito() {
 
    session_start();
    $url = "http://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
    $this->seguridad_model->SessionActivo($url);
    $CarritoOrdenCompra = json_decode($this->input->post('MiCarrito'));
 
    if (isset($_SESSION['CarritoOrdencompra' . $CarritoOrdenCompra->IdSession])) {
        $carrito_orderventa = $_SESSION['CarritoOrdencompra' . $CarritoOrdenCompra->IdSession];
        if (isset($CarritoOrdenCompra->Codigo)) {
            $txtCodigo = $CarritoOrdenCompra->Codigo;
            $precio = $CarritoOrdenCompra->Pcompra;
            $cantidad = $CarritoOrdenCompra->Cantidad;
            $descripcio = $CarritoOrdenCompra->Descripcion;
            $Proveedor = $CarritoOrdenCompra->Proveedor;
            $Costo = $CarritoOrdenCompra->Costo;
            $Existencia = $CarritoOrdenCompra->Existencia;
            $Banco = $CarritoOrdenCompra->Banco;
            $Fecha = $CarritoOrdenCompra->Fecha;
            $Numero = $CarritoOrdenCompra->Numero;
//sobreescribe todos los datos de una misma factura con la misma forma de pago
 
            $donde = -1;
            for ($i = 0; $i <= count($carrito_orderventa) - 1; $i ++) {
                if ($txtCodigo == $carrito_orderventa[$i]['txtCodigo']) {
                    $donde = $i;
                }
            }
//                   GUARDA EN CARRITO
            if ($donde != -1) {
 
            $cuanto = $carrito_orderventa[$donde]['cantidad'] + $cantidad;
            $carrito_orderventa[$donde] = array("txtCodigo" => $txtCodigo, "precio" => $precio, "cantidad" => $cuanto, "descripcion" => $descripcio, "proveedor" => $Proveedor, "costo" => $Costo, "existencia" => $Existencia, "banco" => $Banco, "fecha" => $Fecha, "numero" => $Numero);
 
            } else {
                $carrito_orderventa[] = array("txtCodigo" => $txtCodigo, "precio" => $precio, "cantidad" => $cantidad, "descripcion" => $descripcio, "proveedor" => $Proveedor, "costo" => $Costo, "existencia" => $Existencia, "banco" => $Banco, "fecha" => $Fecha, "numero" => $Numero);
            }
        }
    } else {
        //guarda enl primer registro
        $txtCodigo = $CarritoOrdenCompra->Codigo;
        $precio = $CarritoOrdenCompra->Pcompra;
        $cantidad = $CarritoOrdenCompra->Cantidad;
        $descripcio = $CarritoOrdenCompra->Descripcion;
        $Proveedor = $CarritoOrdenCompra->Proveedor;
        $Costo = $CarritoOrdenCompra->Costo;
        $Existencia = $CarritoOrdenCompra->Existencia;
        $Banco = $CarritoOrdenCompra->Banco;
        $Fecha = $CarritoOrdenCompra->Fecha;
        $Numero = $CarritoOrdenCompra->Numero;
        $carrito_orderventa[] = array("txtCodigo" => $txtCodigo, "precio" => $precio, "cantidad" => $cantidad, "descripcion" => $descripcio, "proveedor" => $Proveedor, "costo" => $Costo, "existencia" => $Existencia, "banco" => $Banco, "fecha" => $Fecha, "numero" => $Numero);
    }
 
    $_SESSION['CarritoOrdencompra' . $CarritoOrdenCompra->IdSession] = $carrito_orderventa;
    echo json_encode($_SESSION['CarritoOrdencompra' . $CarritoOrdenCompra->IdSession]);
}

JAVASCRIPT

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
$("#carrito tbody").html("");
        var Subtotal = 0;
        var total = 0;
 
        $.each(data, function (i, item) {
            var cantsincero = item.cantidad;
            cantsincero = parseInt(cantsincero);
 
            if (cantsincero!=0) {
 
                Subtotal = parseFloat(Subtotal) + parseFloat(item.cantidad);
                total = parseFloat(Subtotal);
                var nuevaFila =
                        "<tr>"
                        + "<td>" + item.txtCodigo + "</td>"
                        + "<td>" + item.descripcion + "</td>"
                        + "<td>" + item.proveedor + "</td>"
                        + "<td> " + item.precio + "</td>"
                        + "<td>" + item.existencia + "</td>"
                        + "<td> " + item.banco + "</td>"
                        + "<td>" + item.fecha + "</td>"
                        + "<td>" + item.numero + "</td>"
                        + "<td>$ " + item.cantidad + "</td>"
                        + "<td><div align='center'>"
                        + '<img onclick="EliminarItem('
                        + "'" + item.txtCodigo + "',"
                        + "'" + item.descripcion + "',"
                        + "'-" + item.cantidad + "',"
                        + "'" + item.proveedor + "',"
                        + "'" + idses + "',"
                        + "'" + item.precio + "',"
                        + "'" + item.existencia + "',"
                        + "'" + item.banco + "',"
                        + "'" + item.fecha + "',"
                        + "'" + item.numero + "',"
                        + "'" + item.costo + "',"
                        + ')"'
                        + " src='img/delete.png' width='20'/></div></td>"
                        + "</tr>";
                $(nuevaFila).appendTo("#carrito tbody");
                $("#lbltotal").text("$ " + total);
                $("#txtTotal").val(total);
            }
 
        });
        LimpiarTexto();
    },
    "json"
    );
    return false;
}
});



Sin-titulo
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
Imágen de perfil de Alejandro

navegar en la misma pagina sin perder datos de formulario

Publicado por Alejandro (55 intervenciones) el 20/10/2017 13:16:11
Que tal María,

Podrías hacer uso de las variables de sesión en PHP,

http://php.net/manual/es/session.examples.basic.php

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

navegar en la misma pagina sin perder datos de formulario

Publicado por Maria del Rosario (6 intervenciones) el 20/10/2017 15:25:09
Ya estuve investigando sobre eso, pero el problema es que no se en que parte colocar el codigo, en el controlador???, en el JavaScript???, o en ambos??? Agradecería cualquier ayuda!!! :)
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 Alejandro

navegar en la misma pagina sin perder datos de formulario

Publicado por Alejandro (55 intervenciones) el 20/10/2017 15:34:28
Maria,

De acuerdo al modelo MVC que estas usando, los datos pasan por el controlador, por lo tanto deberías cargar tus variables de session.
por ejemplo, si tienes en la pestaña uno un formulario y el usuario debe enviar la información, al momento de ejecutar esa acción, que supongo la haces en tu controller, en ese controlador cargas tus variables, luego desde cualquier otro controlador o vista puedes volver mostrar esa información.

Saludos.
Desde Chile.
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

navegar en la misma pagina sin perder datos de formulario

Publicado por Maria del Rosario (6 intervenciones) el 20/10/2017 16:26:41
Muchas gracias!!!
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