2017-08-22 1 views
-4

Ich habe seit 3 ​​Wochen gekämpft, um eine Lösung für dieses Problem zu finden, habe ich eine HTML-Tabelle mit Daten durch MySQL-Abfrage gefüllt, und ich aktualisiere die Datenbank durch jquery ajax post-Methode, es gibt kein Problem während der anfänglichen Belastung der Seite, ich kann alle eindeutigen ID erhalten und validieren sie durch ein Bootstrap-modal, jedoch ist das Problem nach der ersten post-Methode, wenn es zurück in die Tabelle umleiten, Alle eindeutigen IDs werden auf die ID umgestellt, die zuerst gepostet wurde..so alle extrahierten Daten basieren auf dieser ID. Es sollte nicht so sein, da ich eine eindeutige ID durch den 'Click to Pay Cash Advance' erreichen möchte 'Button..kann mir jemand helfen, wo der Fehler ist?Jquery bekommt nicht die eindeutige ID nach einer Ajax-Anforderung

hier ist der Code für meine HTML-Tabelle ist

$cashAdvances = array(); $x = 0; 
    $department = $_POST['department']; 
    $fromStart = $_POST['fromStartDepartment']; 
    $toEnd = $_POST['toEndDepartment']; 

<div id="tableDepartment"> 

    <table class="table table-bordered table-condensed" id="<?= 
    'departmentTable'; ?>" > 
    <tr bgcolor = "#2c3e50"> 
      <th><font color="white"> Company Id</th> 
      <th><font color="white">Department</th> 
      <th><font color="white">Name</th> 
      <th><font color="white">Date Covered</th> 
      <th><font color="white">Cash Advance</th> 
      </tr> 
     <?php $data = array(); 
       $dateCovered = $fromStart.'to'.$toEnd; 
      ?> 
      <?php while($result = 
      mysqli_fetch_array($resultQueryDepartment)): ?> 




       <?php $cashAdvances[] += $result['company_id']; 
        $data[] = array('id'=> $result['company_id'], 
            'department'=>$result['department'], 
            'name'=>$result['name'], 
            'dateCovered' =>$dateCovered, 
         'cashAdvanceCredit' => 
      $resultAttendancePayroll['salary'], 
         'duration' => 'Weekly' 

        ); 
        $json_data = json_encode($data); 
        $myDir = 'JSON'; 

        if(!file_exists($myDir)){ 
         $oldmask = umask(0);//helpful when used in linux 
         mkdir($myDir, 0777); 
        } 



     file_put_contents($myDir.'/resultsCashIssuanceDepartment.json', 
     $json_data); 
      ?> 
    <?php while($result = mysqli_fetch_array($resultQueryDepartment)): ?> 
    <tr></tr> 
    <td></td> 
    <td></td> 
    <td></td> 
    <td></td> 
    <td> 
    <a data-stateName="<?= $result['company_id']; ?>" id="susubukan"><button 
    type="button" id="modalIndividualOnDepartment" value="<?= 
    $result['company_id']; ?>" class="btn btn-primary edit_data" data- 
    toggle="modal" data-target="#modalIndividualDepartment" 
       <?php 
       if(($resultCashAdvanceByIndividualOnDepartment) || 
    ($resultFullyPaidIndividualOnDepartment == '0')){ 
        echo 'disabled'; 
       }else{ 
        echo ''; 
       } 
        ?> 
       >Click to Pay Cash Advance</button></a> 
    </td></tr> 
<?php endwhile; ?> 
</table> 
</div> 

Hier ist die modale für

Validierung
<div class="modal fade" id="modalIndividualDepartment" tabindex="-1" 
role="dialog"> 
<div class="modal-dialog" role="document"> 
<div class="modal-content"> 
    <div class="modal-header"> 
    <button type="button" class="close" data-dismiss="modal" aria- 
label="Close"><span aria-hidden="true">&times;</span></button> 
    <h4 class="modal-title">Individual Payment</h4> 
    </div> 
    <div class="modal-body" id="dataOnDepartment"> 

    </div> 
    <div class="modal-footer"> 



     </div> 
    </div> 
    </div> 
</div> 

Hier wird die JavaScript, um die Daten auf modal

$('a[data-stateName]').on('click', function(){ 
var ID = ""; 
ID = $(this).attr("data-stateName"); 
//console.log(ID); 

$('#modalIndividualDepartment').on('show.bs.modal', function() { 
//var cashAdvanceCredit = $("#cashAdvanceCredit").attr("value"); 
//console.log(cashAdvanceCredit); 
       $.getJSON('JSON/resultsCashIssuanceDepartment.json', 
function(data){ 


       //var ID = checkID; 

       var output = '<table class="table table-bordered table- 
           condensed"><tr>'; 
       output +='<th id="highlight"><font color="white"> 
          <center>Employee ID</center></font></th><th 
          id="highlight"><font 
          color="white"><center>Name</center></font></th> 
          </tr>'; 
       output += '<tr>'; 
          $.each(data, function(key, val){ 
          if(val.id == ID){ 
       output += '<td><center>' + idier(val.id)+val.id + 
          '</center></td>'; 
       output += '<td><center>' + val.name + '</center></td>'; 
          var department = val.department; 
          var dateCovered = val.dateCovered; 
          var explodeDateCovered = dateCovered.split("to"); 
          var name = val.name; 
          var duration = val.duration; 
          var fromStart = explodeDateCovered[0]; 
          var toEnd = explodeDateCovered[1]; 
          var cashAdvanceCredit = val.cashAdvanceCredit; 


       output += '</tr></table>'; 
       output += '<form method="post" 
          id="formSubmitDepartmentIndividual"><div 
          class="form-group row"><div 
          class="col-xs-3"></div><div class="col-xs-6"> 
          <input type="text" 
          name="cashAdvanceDepartmentOneTimeModal" 
          id="cashAdvanceModalDepartment" 
          class="form-control" placeholder = "less than '+ 
          cashAdvanceCredit +'"> 
          </div></div>'; 
       output += '<div class="form-group row"><div class="col- 
          xs-3"></div><div class="col-xs-6"><input 
          type="date" 
          name="datecashAdvanceAllOneTimeModal" 
          id="modalDepartmentDate" class="form- 
          control" value = "'+today+'" readonly></div> 
          </div>'; 
       output += '<div class="form-group row"><div class="col- 
          xs-3"></div><div class="col-xs-6"><input 
          type="hidden" name="function" 
          class="form-control" value = "" ></div></div>'; 
       output += '<div class="form-group row"><div class="col- 
          xs-3"></div><div class="col-xs-6"><input 
          type="hidden" name="employeeID" 
          class="form-control" value = "'+ ID +'" ></div> 
          </div>'; 
       output += '<div class="form-group row"><div class="col- 
          xs-3"></div><div class="col-xs-6"><input 
          type="hidden" name="type" 
          class="form-control" value = 
          "cashAdvanceIndivualDepartment" ></div></div>'; 
       output += '<div class="form-group row"><div class="col- 
          xs-3"></div><div class="col-xs-6"><input 
          type="hidden" name="department" 
          class="form-control" value = "'+department+'" > 
          </div></div>'; 
       output += '<div class="form-group row"><div class="col- 
          xs-3"></div><div class="col-xs-6"><input 
          type="hidden" name="fromStart" 
          class="form-control" value = "'+fromStart+'" > 
          </div></div>'; 
       output += '<div class="form-group row"><div class="col- 
          xs-3"></div><div class="col-xs-6"><input 
          type="hidden" name="toEnd" 
          class="form-control" value = "'+toEnd+'" ></div> 
          </div>'; 
       output += '<div class="form-group row"><div class="col- 
          xs-3"></div><div class="col-xs-6"><input 
          type="hidden" name="name" 
          class="form-control" value = "'+name+'" ></div> 
          </div>'; 
       output += '<div class="form-group row"><div class="col- 
          xs-3"></div><div class="col-xs-6"><input 
          type="hidden" name="duration" 
          class="form-control" value = "'+duration+'" > 
          </div></div>'; 
       output += '<div class="form-group row"><div class="col- 
          xs-3"></div><div class="col-xs-6"><button 
          type="button" class="btn btn- 
          default" data- 
          dismiss="modal">Close</button>&nbsp<input 
          type="submit" 
          value="submit" 
          id="submitModalDepartmentIndividual" 
          name="btnSubmit" 
          class="btn btn-primary"></div></div></form>'; 

        var x = cashAdvanceCredit; 
        $('#dataOnDepartment').html(output); 
        var value = $('#cashAdvanceModalDepartment').val(); 
        console.log(value); 
        //disable submit button if cash advance is empty 
        $('#submitModalDepartmentIndividual').prop("disabled", 
        true); 
        $('#cashAdvanceModalDepartment').keyup(function(event){ 
        var input = $('#cashAdvanceModalDepartment').val(); 
        var Exp = new RegExp(input); 

        if(event.which != 8 && 
        isNaN(String.fromCharCode(event.which))){ 

        $('#submitModalDepartmentIndividual').prop("disabled", 
        true); 
        }else if(($('#cashAdvanceModalDepartment').val() == '') 
        || (Number($('#cashAdvanceModalDepartment').val()) > 
        Number(cashAdvanceCredit)) || 

       (/^\s*$/.test($('#cashAdvanceModalDepartment').val().trim()))) 
     { 


      $('#submitModalDepartmentIndividual').prop("disabled", true); 
         } 
        else 
     if(($("#cashAdvanceModalDepartment").val().replace(/ /g,'').length 
     != 0)){ 


       $('#submitModalDepartmentIndividual').prop("disabled",false); 

        } 
        else{ 

     $('#submitModalDepartmentIndividual').prop("disabled",false); 
        } 
        console.log(cashAdvanceCredit); 
        console.log($('#cashAdvanceModalDepartment').val()); 
        }); 

        } 
       }); 
       //marker 

     $('#formSubmitDepartmentIndividual').on('submit',function(event){ 
        event.preventDefault(); 
        $.ajax({ 
          url:"ajaxPaymentProcessor.php", 
          method:"POST", 

     data:$('#formSubmitDepartmentIndividual').serialize(), 
          success: function(data){ 
          //$('#modalIndividualDepartment').hide(); 
          $('#formSubmitDepartmentIndividual')[0].reset(); 

     $('#modalIndividualDepartment').modal('hide'); 
           $('#tableDepartment').html(data); 
           //$(".objects-list").html(data["html"]); 
          } 
         }); 

        });  

      }); 

      }); 
      }); 

Hier bearbeiten ist die Zielseite, die den Ajax-Anruf

verarbeitet
$type= $_POST['type']; 
$cashAdvances = array(); $x = 0; 
$employeeID = $_POST['employeeID']; 
$prettyEmployeeID = idier($_POST['employeeID']).$_POST['employeeID']; 
$duration = $_POST['duration']; 

<?php if($type == 'cashAdvanceIndivualDepartment'): ?> 

      <?php 
      //scope variable 
      $date = $_POST['datecashAdvanceAllOneTimeModal']; 

      $department = $_POST['department']; 
      $name = $_POST['name']; 
      $fromStart = $_POST['fromStart']; 
      $toEnd = $_POST['toEnd']; 

      $cashAdvanceCredit = 
$_POST['cashAdvanceDepartmentOneTimeModal']; 
      //------end scope variable------// 



      if($queryCashAdvanceResult){ 

      $output = '<h4><center>Cash Advance of <b><font 
         color="red">'.$cashAdvance.' PHP</font></b> was made 
         for <b><font color="red">'.$employee['first_name'].' 
        '.$employee['last_name'].'</font></b></center> </h4>'; 
      $output .= '<table class="table table-bordered table-condensed" 
         id="departmentTable"> 
         <tr bgcolor = "#2c3e50"> 
         <th><font color="white"> Company Id</th> 
         <th><font color="white">Department</th> 
         <th><font color="white">Name</th> 
         <th><font color="white">Date Covered</th> 
         <th><font color="white">Cash Advance</th> 
         </tr>'; 
      $data = array(); 




      while($result = mysqli_fetch_array($resultQueryDepartment)){ 




       $cashAdvances[] += $result['company_id']; 
       $data[] = array('id'=> $result['company_id'], 
        'department'=>$result['department'], 
        'name'=>$result['name'], 
        'dateCovered' =>$dateCovered, 
        'cashAdvanceCredit' => 
        $resultAttendancePayroll['salary'], 
        'duration' => 'Weekly' 
       ); 
       $json_data = json_encode($data); 
       $myDir = 'JSON'; 

       if(!file_exists($myDir)){ 
        $oldmask = umask(0); // helpful when used in linux 
        server 
        mkdir($myDir, 0777); 
       } 

      file_put_contents($myDir.'/resultsCashIssuanceDepartment.json', 
      $json_data); 



       $output .='<tr> 
          <td><p 
    id="subukanUlit">'.idier($result['company_id']).$result['company_id']. 
       '</p></td> 
        <td>'. $result['department'].'</td> 
        <td>'.$result['name'].'</td> 
        <td>'.prettydate($fromStart)." to 
        ".prettydate($toEnd).'</td> 
         <td> 
         <a data-stateName="'.$result['company_id'].'"> 
       <button type="button" id="modalIndividualOnDepartment" 
       value="'.$result['company_id'].'" class="btn btn-primary 
      edit_data" data-toggle="modal" data- 
      target="#modalIndividualDepartment" 
          '. 
     ((($resultCashAdvanceByIndividualOnDepartment) || 
     ($resultFullyPaidIndividualOnDepartment == 
      '0'))?'disabled':'').'>Click to Pay Cash Advance</button></a> 
          </td> 
       </tr>'; 
       $x++; 
      } 
      $output .='</table></div>'; 
      echo $output; 
      ?> 

      <?php }?> 

      <?php else: ?> 
       <?php if($type == 'cashAdvanceDepartmentOneTime'): ?> 
       <?php 
          $department = $_POST['department']; 
          $duration = $_POST['duration']; 
          $fromStart = $_POST['fromStartDepartment']; 
          $toEnd = $_POST['toEndDepartment']; 
          $cashAdvance = 
          $_POST['cashAdvanceDepartmentOneTime']; 
          $employeeID = $_POST['employeeID']; 
          $employeeID = 
          unserialize(base64_decode($employeeID)); 
          $dateOfPayment = 
     $_POST['dateCashAdvanceDepartment']; 
          $counter = sizeof($employeeID) - 1; 
          $starter = ''; 
          for($starter = 0 ; $counter >= $starter ; 
      $starter++){ 
           $id = $employeeID[$starter]; 
           $id = idier($employeeID[$starter]).$id; 
           $idNotProcessed = $employeeID[$starter]; 
           //select from employee_profile 
           $queryName = "SELECT * FROM 
     employee_profile WHERE company_id = '$idNotProcessed' ORDER BY 
               id DESC LIMIT 1"; 
           $resulQueryName = $db->query($queryName); 
           $resultName = 
     mysqli_fetch_array($resulQueryName); 
           $name = $resultName['first_name']." 
     ".$resultName['last_name']; 
           //end select from employee profile 
           //select department 
            $queryDepartmentCashAdvance = "SELECT 
     employee_profile.id, employee_profile.company_id, 
     company_profile.department 
                    FROM 
     employee_profile INNER JOIN company_profile WHERE 
     employee_profile.company_id = company_profile.company_id 
                    AND 
      employee_profile.company_id ='$idNotProcessed' "; 
            $resultQueryDepartmentCashAdvance = $db- 
      >query($queryDepartmentCashAdvance); 
            $resultDepartmentCashAdvance = 
      mysqli_fetch_array($resultQueryDepartmentCashAdvance); 
            $department = 
      $resultDepartmentCashAdvance['department']; 
           //end select department 
           //CHECK FOR EXISTING RECORD 
           $queryExistingRecord = "SELECT * FROM 
      cash_advance WHERE company_id = '$id' AND date >= '$fromStart' 
                 AND date <= 
      '$toEnd'"; 
           $resultExistingRecord = $db- 
      >query($queryExistingRecord); 
           $existingRecord = 
     mysqli_fetch_array($resultExistingRecord); 

           if(empty($existingRecord)){ 
            //INSERT INTO CASH ADVANCE ONE TIME 
            $queryCashAdvanceDepartment = "INSERT 
     INTO cash_advance(company_id, name, department,advance_payment, 
     date, duration) 
            VALUES('$id', '$name', 
     '$department','$cashAdvance', '$dateOfPayment', '$duration')"; 
            $resultQueryCashAdvanceDepartment = 
     $db->query($queryCashAdvanceDepartment); 
            //END INSERT INTO CASH ADVANCE ONE TIME 
           } 
           //END CHECKING FOR EXISTING RECORD 

          } 
          //------query department-------// 
          $queryDepartment = "SELECT 
     attendance_payroll.company_id, attendance_payroll.name, 
     attendance_payroll.date_identifier, company_profile.department 
          FROM attendance_payroll INNER JOIN 
     company_profile ON company_profile.company_id = 
     attendance_payroll.company_id 
          WHERE company_profile.department = 
     '$department' AND attendance_payroll.date_identifier >='$fromStart' 
     AND attendance_payroll.date_identifier <= '$toEnd' 
          GROUP BY attendance_payroll.company_id ORDER BY 
     attendance_payroll.company_id "; 
          $resultQueryDepartment = $db- 
     >query($queryDepartment); 
          //-----end query department----// 
          $output = '<h4><center>Cash Advance of <b><font 
    color="red">'.$cashAdvance.' PHP</font></b> was made for <b><font 
    color="red">ALL</font></b></center> </h4>'; 
          $output .= '<table class="table table-bordered 
    table-condensed" id="departmentTable"> 
     <tr bgcolor = "#2c3e50"> 
      <th><font color="white"> Company Id</th> 
      <th><font color="white">Department</th> 
      <th><font color="white">Name</th> 
      <th><font color="white">Date Covered</th> 
      <th><font color="white">Cash Advance</th> 
      </tr>'; 
          //$data = array(); 
          //$dateCovered = $fromStart.'to'.$toEnd; 

          while($result = 
       mysqli_fetch_array($resultQueryDepartment)){ 
      //check cash advance per individual if already existing 
           $employeeID = 
       idier($result['company_id']).$result['company_id']; 
           $queryCashAdvanceByIndividualOnDepartment = 
      "SELECT * FROM cash_advance WHERE duration = 'Weekly' 
           AND company_id = '$employeeID' AND date >= 
      '$fromStart' 
           AND date <= '$toEnd'"; 

     $resultQueryCashAdvanceByIndividualOnDepartment = $db- 
     >query($queryCashAdvanceByIndividualOnDepartment); 
     $resultCashAdvanceByIndividualOnDepartment = 
     mysqli_fetch_array($resultQueryCashAdvanceByIndividualOnDepartment); 
           //end checking 
    //check if already fully paid and not be qualified for cash advance 
     $queryFullyPaidIndividualOndepartment = "SELECT * FROM 
     attendance_payroll WHERE company_id = '$employeeID' 
           AND date_identifier >='$fromStart' AND 
     date_identifier <='$toEnd' 
           AND payment_status = '1'"; 
           $resultQueryFullyPaidIndividualOnDepartment 
      = $db->query($queryFullyPaidIndividualOndepartment); 
           $resultFullyPaidIndividualOnDepartment = 
      mysqli_num_rows($resultQueryFullyPaidIndividualOnDepartment); 
           //end checking 
           $output .='<tr> 
          <td><p 


id="subukanUlit">'.idier($result['company_id']).$result['company_id'].'</p> 
    </td> 
          <td>'. $result['department'].'</td> 
          <td>'.$result['name'].'</td> 
          <td>'.prettydate($fromStart)." to 
".prettydate($toEnd).'</td> 
          <td> 
          <a data-stateName="'.$result['company_id'].'"> 
    <button type="button" id="modalIndividualOnDepartment" 
    value="'.$result['company_id'].'" class="btn btn-primary edit_data" 
    data-toggle="modal" data-target="#modalIndividualDepartment" 
          '. 
    ((($resultCashAdvanceByIndividualOnDepartment) || 
    ($resultFullyPaidIndividualOnDepartment == '0'))?'disabled':'').'>Click to 
    Pay Cash Advance</button></a> 
          </td> 
       </tr>'; 
           $x++; 
          } 
          $output .='</table></div>'; 
          echo $output; 
          ?> 
           <!-- VALIDITY OF PAY BUTTON FOR ALL --> 
            <?php 
              $queryAttendancePayrollCompare = 
    "SELECT attendance_payroll.id, attendance_payroll.company_id, 
    attendance_payroll.name, company_profile.department 

    FROM attendance_payroll INNER JOIN company_profile WHERE 
    attendance_payroll.company_id = company_profile.company_id 

    AND date_identifier >= '$fromStart' AND date_identifier <= '$toEnd' AND 
    company_profile.department = '$department' 

    GROUP BY attendance_payroll.company_id ORDER BY 
    attendance_payroll.company_id"; 
    $resultAttendancePayrollCompare = $db- 
    >query($queryAttendancePayrollCompare); 

    $resultAttendancePayrollCompareCount = 
    mysqli_num_rows($resultAttendancePayrollCompare); 

    $queryCashAdvanceCompare = "SELECT * FROM cash_advance WHERE duration = 
    'Weekly' AND department = '$department' 
                     AND 
    date >= '$fromStart' AND date <='$toEnd' GROUP BY company_id ORDER BY 
    company_id"; 
              $resultQueryCashAdvanceCompare = 
    $db->query($queryCashAdvanceCompare); 
              $resultCashAdvanceCompareCount = 
    mysqli_num_rows($resultQueryCashAdvanceCompare); 

             ?> 
          <!-- END VALIDITY OF PAYMENT BUTTON FOR ALL --> 
          <?php 

         ?> 
       <?php endif; ?> 

Bitte helfen und vielen Dank :)

+2

Warum schreist du? – Satpal

+5

Zu viel Code, schränken das Problem etwas ein. –

Antwort

0

die Antwort Leute gefunden,

ich brauche, weil alle die Funktion auch die versteckten modal auf der Zielseite zu schließen, sobald sie aktualisiert wurde, was es war zu lesen war mehr statt nicht auf der gleichen Seite, die Daten auf der Zielseite ..

Danke trotzdem :)