¿Cómo uso datos específicos de fila de tablas en post ajax

Estoy tratando de hacer clic en mi botón de pago para actualizar el pago a una empresa en particular. Abajo está mi UI enter image description here

haciendo clic en sueldo botón muestra esto enter image description here

Me gustaría mostrar el nombre de la empresa que el pago va a y también ser capaz de actualizar el pago en el Total Remit columna así como reducir la deuda.

He estado atrapado en esta página por mucho tiempo. Debajo está mi código hasta ahora: query

error_reporting( E_ALL );
try{

  $sql='select c.catid, c.`category`,
      ifnull(sum( s.`stock_in` * s.`stock_price` ),0) as `debt`, c.`remitted`
  from `tbl_category` c
      left outer join `tbl_stock_in` s on s.`category_name` = c.`category`
  group by c.`category` order by catid desc;';


  $stmt=$pdo->prepare( $sql );
  $stmt->execute();
  
}catch( PDOException $e ){
  echo $e->getMessage();
}

código para la tabla

    php
    
    while( $rs=$stmt-fetch(PDO::FETCH_OBJ ) ){
    
    echo'
    
    '.$rs->catid.'
    '.$rs->category.'
    
      '.number_format($rs->debt,2).'
    
    '.number_format($rs->remitted,2).'


    
  
    
    
    
    
   
    
    
    
    
  
    
    
     
     ';
    
}          
?> 

Aquí está mi ajax


código de envío. php*

php
    
    #stock-in.php
    /*
        If you are using sessions you need to start a session!
    */
    error_reporting( E_ALL );
    session_start();

    if( empty( $_SESSION['useremail'] ) OR empty( $_SESSION['role'] ) OR $_SESSION['role']=="Admin" ){
        exit( header('Location: index.php') );
    }

    /*
        Check that all fields that are required in the sql have been submitted
    */
    if( isset( 
            $_POST['rid'],
            $_POST['pay'],
            $_POST['currentDate'],
            $_POST['compnyName'],
            $_POST['old_remit']
        ) ){

        try{
            
            include_once 'connectdb.php';

            /*
                When inserting, updating multiple tables there is some sense in using a transaction
                so that if one part fails the db is not littered with orphan records
            */
            $pdo-setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
            $pdo->beginTransaction();

            $remitID            =   $_POST['rid'];
            $new_remit          =   (double)$_POST['pay'];
            $current_date       =   $_POST['currentDate'];
            $company            =   $_POST['compnyName'];
            $old_rem            =   (double)$_POST['old_remit'];

            $paid               =   $new_remit +  $old_rem;

            /*
                The sql command should use placeholders rather than embedded variables - the names are arbitrary
            */
            $sql='INSERT INTO `tbl_category_remits` ( `payment_date`, `category`, `remitted` ) 
                VALUES 
            ( :pay_date, :comp, :remit, :price, :cost, :current_times )';
            $stmt=$pdo->prepare( $sql );
            $args=array(
                ':pay_date'        =>  $current_date,
                ':comp'            =>  $company,
                ':remit'           =>  $new_remit

            );
            if( !$stmt->execute( $args )  )echo 'stmt#1 failed';
            
            
            
            $sql='UPDATE `tbl_category` SET `remitted` =:payment WHERE `catid`=:rid';
            $stmt=$pdo->prepare( $sql );
            $args=array(
                ':payment'    =>  $paid,
                ':rid'      =>  $remitID
            );
            if( !$stmt->execute( $args ) )echo 'stmt#2 failed';
            
            
            
            /*
                If it all went well, commit these statements to the db
            */
            if( !$pdo->commit() )echo 'commit failed';
            
            
        
        }catch( PDOException $e ){
            /*
                Any problems, rollback the transaction and report issues - 
                not necessarily with the full `getMessage()` ~ perhaps just
                'Error!' etc
            */
            $pdo->rollBack();
            
            echo $e->getMessage();
        }
    }
?>

Por favor, ¿cómo puedo buscar el nombre de la empresa y antiguo envío de la tabla cuando haga clic en el pago. ¡Necesito tu ayuda!

Pregunta hecha hace 3 años, 4 meses, 27 días - Por scriptsculptor52b5


4 Respuestas:

  • En cambio.

    $(document).ready(function() {
        $('.btnremit').click(function() {
          //var tdh = $(this);
          var id = $(this).attr("id");
        })
    })
    

    Usted podría utilizar la función donde puede pasar id, nombre etc.

    function yourFunction(id,companyName,oldRemit){
        swal("Enter Amount:", {
            buttons: true,
            closeModal: true,
            content: "input",
        })
        .then((amount) => {
            if (amount === "") {
                    swal("Oops!! You need to enter value.");
                return false
            }else{
                $.ajax({
                    type: 'POST', 
                    url: 'remit.php',
                    data:{
                        rid: id, 
                        pay: amount,
                        compnyName : companyName,
                        old_remit : oldRemit,
                      php 
                       echo 'currentDate : "'.$savedate.'"'
                      ?
                    },
                    success: function(data){
                         swal(`Paid: ${amount}`);
                    },
                    error: function(data){
                        swal(`Error remitting: ${amount}`);
                    }
                });
            }
        });
    }
    

    Y de su fila de mesa HTML llamar esta función como

    
      
        
    
    

    Respondida el Dec 19, 2020 a las 06:31 - por techscribe

    Votos positivos: 0 | Votos negativos: 0

  • puede enviar el nombre del país y el antiguo envío de php como objeto y por obj de jquery utilizarlos en el elemento correcto

    Respondida el Dec 19, 2020 a las 06:37 - por logiclinguist

    Votos positivos: 0 | Votos negativos: 0

  • Para obtener el nombre de la empresa y el antiguo remitido de la tabla cuando hagas clic en el botón de pago, necesitas modificar tu código de la siguiente manera:

    • En tu código de la tabla, agrega un atributo de datos para almacenar el nombre de la empresa y el valor remitido actual:
    php
    
    
    • En tu script de JavaScript, obtén el nombre de la empresa y el remitido actual del botón al que se hizo clic y envíalo en la solicitud AJAX:

    ```javascript $('.btnremit').click(function() { var id = $(this).attr("id"); var companyName = $(this).data("company"); var oldRemit = $(this).data("remitted");

    swal("Enter Amount:", { buttons: true, closeModal: true, content: "input", }) .then((amount) => { if (amount === "") { swal("Oops!! You need to enter value."); return false; } else { $.ajax({ type: 'POST', url: 'remit.php', data: { rid: id, pay: amount, currentDate: "", compnyName: companyName, old_remit: oldRemit }, success: function(data) { swal(Paid: ${amount}); }, error: function(data) { swal(Error remitting: ${amount}); } }); } }); }); ```

    Con estos cambios, al hacer clic en el botón de pago, tu script JavaScript capturará el nombre de la empresa y el remitido actual del botón y los enviará en la solicitud AJAX al archivo remit.php. Luego, podrás utilizar estos valores en tu script de PHP para realizar las acciones necesarias en la base de datos.

    Espero que esto te ayude a mostrar el nombre de la empresa y actualizar el pago en la columna "Total Remit" y reducir la deuda. ¡Buena suerte!

    Respondida el Dec 20, 2020 a las 06:34 - por Gpt

    Votos positivos: 0 | Votos negativos: 0

  • Para buscar el nombre de la empresa y el envío anterior de la tabla en el evento click del botón de pago, puede utilizar el siguiente código jQuery AJAX:

    Código jQuery AJAX:

    ```javascript $(document).ready(function() { $('.btnremit').click(function() { // Obtener el ID de la fila actual var id = $(this).attr("id");

        // Realizar una solicitud AJAX para obtener los datos de la fila
        $.ajax({
            type: 'POST',
            url: 'get_company_and_old_remit.php',
            data: {
                id: id
            },
            success: function(data) {
                // Manejar los datos devueltos del servidor
                if (data.status == 'success') {
                    // Obtener el nombre de la empresa y el envío anterior de los datos
                    var companyName = data.data.company_name;
                    var oldRemit = data.data.old_remit;
    
                    // Mostrar el nombre de la empresa y el envío anterior en un modal o cuadro de diálogo
                    swal({
                        title: 'Company Details',
                        html: `
                            <p>Company Name: ${companyName}</p>
                            <p>Old Remit: ${oldRemit}</p>
                        `
                    });
                } else {
                    // Mostrar un mensaje de error
                    swal('Error', 'No se pudo obtener los datos de la empresa y el envío anterior.');
                }
            },
            error: function() {
                // Mostrar un mensaje de error
                swal('Error', 'No se pudo obtener los datos de la empresa y el envío anterior.');
            }
        });
    });
    

    });

    
    
    Código PHP del servidor (get_company_and_old_remit.php):
    
    
    php

    // Conectarse a la base de datos $servername = "localhost"; $username = "usuario"; $password = "contraseña"; $dbname = "nombrebasedatos";

    $conn = new mysqli($servername, $username, $password, $dbname);

    // Comprobar conexión if ($conn->connecterror) { die("Falló la conexión a la base de datos: " . $conn->connecterror); }

    // Obtener el ID de la fila de la solicitud $id = $_POST['id'];

    // Preparar una consulta para obtener el nombre de la empresa y el envío anterior $sql = "SELECT companyname, oldremit FROM tabla WHERE id = ?"; $stmt = $conn->prepare($sql); $stmt->bind_param("i", $id); $stmt->execute();

    // Obtener los resultados de la consulta $result = $stmt->getresult(); $data = $result->fetchassoc();

    // Cerrar la conexión de la base de datos $stmt->close(); $conn->close();

    // Devolver los datos al cliente header('Content-Type: application/json'); echo json_encode(['status' => 'success', 'data' => $data]); ```

    Este código primero obtiene el ID de la fila actual en la que se hizo clic. Luego realiza una solicitud AJAX a un archivo PHP del lado del servidor (getcompanyandoldremit.php). Este archivo PHP se conecta a la base de datos, obtiene el nombre de la empresa y el envío anterior para ese ID en particular y luego los envía de vuelta al cliente en formato JSON. El código jQuery AJAX luego maneja estos datos y los muestra en un modal o cuadro de diálogo.

    Respondida el Dec 20, 2020 a las 06:43 - por Gemini

    Votos positivos: 0 | Votos negativos: 0