Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Conseguir el valor de una variable, en un fichero si en otro no

Estas en el tema de Conseguir el valor de una variable, en un fichero si en otro no en el foro de PHP en Foros del Web. Hola. Saludos! Hace 4 días estoy con esto y no lo puedo resolver (Principiante). No puedo conseguir el valor de una variable e insertarla en ...
  #1 (permalink)  
Antiguo 04/07/2016, 18:49
 
Fecha de Ingreso: febrero-2012
Ubicación: Cancun
Mensajes: 79
Antigüedad: 12 años, 2 meses
Puntos: 0
Conseguir el valor de una variable, en un fichero si en otro no

Hola. Saludos! Hace 4 días estoy con esto y no lo puedo resolver (Principiante).

No puedo conseguir el valor de una variable e insertarla en la BD. Como es esto?

El programa cuenta con una función:

Código Javascript:
Ver original
  1. function confirmarCierreCaja() {
  2.     var resp = confirm("¿Está seguro que desea Cerrar la Caja?");
  3.     if(resp) {
  4.         $.ajax({
  5.             type: 'post',
  6.             url: localIP+'data/caja.save.php',
  7.             dataType: "json"
  8.         }).done(function( json ) {
  9.             if(parseInt(json.transaction_id)>0) {
  10.                 jsonZ.caja_hora_cierre = json.caja_hora;
  11.                 jsonZ.caja_fecha_cierre = json.caja_fecha;
  12.  
  13.                 $.post(printerIP+"kiosk.z.php", jsonZ)
  14.                 .done(function( data ) {
  15.                     alert("El cierre de caja se realizo con exito");
  16.                     exitPos();
  17.                 });
  18.                 $('#mGeneralModal').modal('hide');
  19.  
  20.                 saveTransToRemoteDB();
  21.             } else {
  22.                 alert("Ocurrió un error al cerrar la caja");
  23.             }
  24.         }).error(function(){
  25.            
  26.         });
  27.     }
  28. }

Código PHP:
// caja.save.php
<?php
    header
('Access-Control-Allow-Origin: *');  
    
header('Content-type: text/json');
    
header('Content-type: application/json');

    
ini_set("display_errors"0);
    
//error_reporting(0);

    
include "dblocal.php";

    
$sql "update 
                `users_transactions` 
            set 
                `close_session`='"
.time()."',
                `sync_update`='0'
                
            
            where (
                `transaction_id`='"
.$_SESSION["user"]->transaction_id."'
                AND transaction_user_id = '"
.$_SESSION["user"]->user_id."'
            )"
;

    
$dblocal->query($sql);

    
$arr = array(
        
"transaction_id"=>$_SESSION["user"]->transaction_id,
        
"caja_hora"=>date("H:i:s"),
        
"caja_fecha"=>date("d-m-Y")
    );

    echo 
json_encode($arr); 
?>
Código PHP:
//kiosk.z.php
<?php
header
('Access-Control-Allow-Origin: *'); 

require_once(
"kiosk.conf.php");

$PAPER_FULL_CUT  '\x1d\x56\x00' ;// Full cut paper
$PAPER_PART_CUT  '\x1d\x56\x01' ;//# Partial cut paper

for($i=0$i<2$i++) {
    if((
$handle = @fopen(PORT"w")) === FALSE){
        die(
'No se puedo Imprimir, Verifique su conexion con el Terminal');
    }

fwrite($handle,"TOTAL: $"$_POST["caja_amount"]);

}



?>

En el archivo caja.save.php realiza un update, y en el kiosk.z.php realiza la impresión (No puse todo lo que imprime, solo lo que me interesa conseguir).

El programa es de ventas, y al cerrar caja realiza un update en la bd actualizando el campo cierre de caja e imprime entre otras cosas el total de las ventas.

Ahora el problema, quiero agregar en la sentencia update que el importe total que consigo en la impresion tambien se me guarde en la bd. Pero no lo consigo:

Código PHP:
<?php
    header
('Access-Control-Allow-Origin: *');  
    
header('Content-type: text/json');
    
header('Content-type: application/json');

    
ini_set("display_errors"0);
    
//error_reporting(0);

    
include "dblocal.php";

    
$monto_total $_POST["caja_amount"];

    
$sql "update 
                `users_transactions` 
            set 
                `close_session`='"
.time()."',
                `sync_update`='0',
                `transaction_amount` = '$monto_total' 

                
            
            where (
                `transaction_id`='"
.$_SESSION["user"]->transaction_id."'
                AND transaction_user_id = '"
.$_SESSION["user"]->user_id."'
            )"
;

    
$dblocal->query($sql);

    
$arr = array(
        
"transaction_id"=>$_SESSION["user"]->transaction_id,
        
"caja_hora"=>date("H:i:s"),
        
"caja_fecha"=>date("d-m-Y")
    );

    echo 
json_encode($arr); 
?>
Porque en la impresión (kiosk.z.php) si puedo conseguir el valor de $_POST["caja_amount"] y en caja.save.php no? Hay algo que me estoy perdiendo. El programa es largo y tiene muchos ficheros, tal vez no estoy viendo algo?

Cualquier ayuda sera agradecida.

Saludos y gracias por tomarse el tiempo para ayudar!
  #2 (permalink)  
Antiguo 05/07/2016, 00:53
 
Fecha de Ingreso: julio-2008
Ubicación: Barcelona
Mensajes: 2.100
Antigüedad: 15 años, 9 meses
Puntos: 165
Respuesta: Conseguir el valor de una variable, en un fichero si en otro no ¿?

¿Porque no envías las mismas variables?

A todo esto... el código es poco legible, revisa buenas prácticas para refactorizarlo
__________________
Gracias por el Karma :D

empleo ofertas de trabajo
  #3 (permalink)  
Antiguo 05/07/2016, 02:39
 
Fecha de Ingreso: noviembre-2003
Ubicación: Zaragoza, España
Mensajes: 1.257
Antigüedad: 20 años, 5 meses
Puntos: 154
Respuesta: Conseguir el valor de una variable, en un fichero si en otro no ¿?

Hola agustinpak,

Yo lo que haría es debuguear a ver si se recibe la variable:

Código PHP:
Ver original
  1. include "dblocal.php";
  2.  
  3.     $monto_total = $_POST["caja_amount"];
  4.     var_dump($monto_total);
  5.  
  6.     $sql = "...

Si la recibes, como supongo que es un int, deberías quitarle las comillas ' en la construcción de la query.

Espero que te sirva.
  #4 (permalink)  
Antiguo 05/07/2016, 09:55
 
Fecha de Ingreso: julio-2010
Ubicación: La Ciudad Blanca, Mérida-Yucatán
Mensajes: 375
Antigüedad: 13 años, 9 meses
Puntos: 7
Respuesta: Conseguir el valor de una variable, en un fichero si en otro no ¿?

Hola que tal primero como dice rbczgz verfica que te trae la variable, Igual te aconsejo que le quites la comilla simple a la variable dentro de tu update.
Algo asi
Código PHP:
Ver original
  1. include "dblocal.php";
  2.  
  3.     $monto_total = $_POST["caja_amount"];
  4.  
  5.     $sql = "update
  6.                `users_transactions`
  7.            set
  8.                `close_session`='".time()."',
  9.                `sync_update`='0',
  10.                `transaction_amount` = $monto_total
  11.  
  12.                
  13.            
  14.            where (
  15.                `transaction_id`='".$_SESSION["user"]->transaction_id."'
  16.                AND transaction_user_id = '".$_SESSION["user"]->user_id."'
  17.            )";
__________________
--No todos aprendemos de la misma forma, ni a la misma velocidad---
  #5 (permalink)  
Antiguo 05/07/2016, 12:49
 
Fecha de Ingreso: febrero-2012
Ubicación: Cancun
Mensajes: 79
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: Conseguir el valor de una variable, en un fichero si en otro no ¿?

Hola! Muchas gracias por responder y ayudar.

Efectivamente no trae el valor de la variable, me figura como NULL.

Lo que no entiendo es como la trae en el otro script y no en este. Me confunde un poco porque tengo entendido que $_POST recibe la variable desde un formulario, y no hay ningún formulario.

Aclaro que el programa no lo hice yo, y lo que entiendo es muy poco. Por eso trate de usar la logica pero no me funciono. No se bien que mostrarles para que lo entiendan con mas facilidad.

Lo que puedo mostrarle si es que es de ayuda, el script en donde se realiza esta variable, disculpas si muestro cosas innecesarias:

Código PHP:
<?php
  header
('Access-Control-Allow-Origin: *'); 
  
header('Content-type: text/json');
  
header('Content-type: application/json');

  include 
"dblocal.php";

  
$areport = array();
  
$aitems = array();
  
$monto 0.00;

  
$caja_id $_SESSION["user"]->transaction_id;
  
$user_id $_SESSION["user"]->user_id;

  if(isset(
$_GET["box_id"]) && isset($_GET["user_id"])) {
    
$user_id $_GET["user_id"];//$dblocal->get_var("SELECT user_id FROM `users` WHERE `dni` = '$_GET[dni]' ");
    
$caja_id $_GET["box_id"];
  }

  
$sql "SELECT group_id, group_name FROM transactions_types_groups ORDER BY group_id ASC";
  
$groups $dblocal->get_results($sql);

  foreach(
$groups as $group) {
    
$sql "SELECT
              Sum(transacciones.tarifa) AS monto,
              Sum(transacciones.qty) AS qtys,
              transacciones.tipo_ticket_id,
              transactions_types.type,
              transactions_types.operation
            FROM
              transacciones
              INNER JOIN transactions_types ON transacciones.tipo_ticket_id = transactions_types.type_id
            WHERE
              transacciones.user_id = '"
.$user_id."' AND
              transacciones.user_transaction_id = '"
.$caja_id."' AND
              transactions_types.group_id = '"
.$group->group_id."' 
              AND (transacciones.canje_status <> 1 OR isnull(canje_status))

            GROUP BY
              transacciones.tipo_ticket_id,
              transactions_types.type"
;

    
$movs $dblocal->get_results($sql);

    
$amovs = array();

    if(
is_array($movs)) {
      
$amovs null;
      foreach(
$movs as $mov) {
        
$amovs[] = array(
          
"descripcion"=>$mov->type " ("$mov->qtys .")",
          
"monto"=> $mov->operation.$mov->monto 
        
);

        if(
$mov->operation == "+") {
          
$monto += ($mov->monto);
        }

        if(
$mov->operation == "-") {
          
$monto -= ($mov->monto);
        }
      }
    }

    
$aitems[] = array(
      
"tipo_mov"=> $group->group_name,
      
"detalle" => $amovs
    
);
  }

  
$areport = array(
    
"user_id" => $user_id,
    
"user_name" => $_SESSION["user"]->firstname " " $_SESSION["user"]->lastname,
    
"user_transaction_id" => $caja_id,
    
"caja_amount" => number_format($monto,2),
    
"caja_fecha" => date("d-m-Y"),
    
"caja_hora" => date("H:i:s"),
    
"boleteria_id" => $_SESSION["user"]->terminal_id,
    
"boleteria_name" => $_SESSION["user"]->terminal,
    
"items" => $aitems
  
);

  
/*
    "caja_open" => 
    "caja_close" =>
  */

  
echo json_encode($areport);

?>
  #6 (permalink)  
Antiguo 05/07/2016, 16:58
Avatar de Synkronice  
Fecha de Ingreso: octubre-2007
Ubicación: Madrid
Mensajes: 831
Antigüedad: 16 años, 6 meses
Puntos: 48
Información Respuesta: Conseguir el valor de una variable, en un fichero si en otro no

Hola agustinpak,

el problema es que en la primera peticion Ajax no estas enviando los datos POST, tan solo agrega esto y ya te funcionara:

Agrega lo que te puse en rojo a tu codigo javascript...

-----------------------------
$.ajax({
type: 'post',
url: localIP+'data/caja.save.php',
dataType: "json",
data: jsonZ
-----------------------------

Codigo javascript completo.

Código:
function confirmarCierreCaja() {
    var resp = confirm("¿Está seguro que desea Cerrar la Caja?");
    if(resp) {
        $.ajax({
            type: 'post',
            url: localIP+'data/caja.save.php',
            dataType: "json",
            data: jsonZ
        }).done(function( json ) {
            if(parseInt(json.transaction_id)>0) {
                jsonZ.caja_hora_cierre = json.caja_hora;
                jsonZ.caja_fecha_cierre = json.caja_fecha;
 
                $.post(printerIP+"kiosk.z.php", jsonZ)
                .done(function( data ) {
                    alert("El cierre de caja se realizo con exito");
                    exitPos();
                });
                $('#mGeneralModal').modal('hide');
 
                saveTransToRemoteDB();
            } else {
                alert("Ocurrió un error al cerrar la caja");
            }
        }).error(function(){
            
        });
    }
}
__________________
El problema de nuestra época consiste en que sus hombres no quieren ser útiles sino importantes.

Winston Churchill
  #7 (permalink)  
Antiguo 06/07/2016, 11:28
 
Fecha de Ingreso: febrero-2012
Ubicación: Cancun
Mensajes: 79
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: Conseguir el valor de una variable, en un fichero si en otro no

Hola Synkronice

Muchísimas gracias! Ese era el problema.



Ya lo modifique y funciona correctamente.

Gracias de nuevo a todos por la ayuda. Estoy aprendiendo día a día y este foro me ayuda mucho.

Saludos

Etiquetas: javascript, post, variable
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:40.