2016-07-05 2 views
0

PHP 쿼리로 채워진 테이블에서 변수를 전달하려고합니다.테이블에서 JavaScript 함수에 PHP 변수 전달하기

테이블의 각 행에는 세 개의 버튼이 있습니다. 하나는 삭제 버튼입니다.이 버튼을 클릭하면 JavaScript 경고가 실행되어 다른 PHP 페이지로 변수를 전달하여 데이터베이스에서 삭제됩니다. 문제는 버튼을 클릭 할 때 전달 된 변수가 항상 테이블의 마지막 행에있는 변수라는 것입니다. 클릭 한 행이 아닙니다.

코드 :

<table class="table table-bordered table-striped js-dataTable-full-pagination"> 
<?php while($row = mysqli_fetch_assoc($result)) { ?> 
    <tr> 
     <td class="text-center"><a href="/record.php?report=<?php echo $row['recordnumber']; ?>"><?php echo $row['recordnumber']; ?></a></td> 
     <td class="font-w600"><?php echo $row["description"];?></td> 
     <td class="hidden-xs"><?php echo $row["type"];?></td> 
     <td class="hidden-xs"><?php echo $row["user"];?></td> 
     <td class="hidden-xs"><?php echo $row["edate"];?></td> 
     <td class="text-center"> 
      <a class="btn btn-xs btn-primary" href="/updaterecordform.php?id=<?php echo $row["recordnumber"];?>" data-toggle="tooltip" title="Edit Record"><i class="fa fa-pencil"></i></a> 
      <a class="btn btn-xs btn-danger" onclick="myFunction()" data-toggle="tooltip" title="Delete Prefix"><i class="fa fa-close"></i><script> 
       function myFunction() { 
        swal({ 
         title: 'Are you sure?', 
         text: 'You will not be able to recover this Record!', 
         type: 'warning', 
         showCancelButton: true, 
         confirmButtonColor: '#d26a5c', 
         confirmButtonText: 'Yes, delete it!', 
         closeOnConfirm: false, 
         html: false 
        }, function() { 
         window.location.href = 'deleterecord.php?id=<?php echo $row['recordnumber']; ?>' 
        }); 
       } 
       </script></a> 
      <a class="btn btn-xs btn-primary" href="/record.php?id=<?php echo $row["recordnumber"];?>" data-toggle="tooltip" title="View Details"><i class="fa fa-list-ul"></i></a> 
     </td> 
    </tr> 
<?php } ?> 
</table> 
+0

jQuery를 사용하는 경우 '데이터'필드를 채우고 버튼에서 해당 링크를 사용하여 특수 링크를 트리거 할 수 있습니다. 일반적으로 버튼 당 스크립트를 작성하는 것보다 관리가 훨씬 쉽습니다. – tadman

+0

onclick = "myFunction ()"함수에서 값을 가져 와서 js 자체 함수 myFunction (recordnum) { –

+0

을 얻었습니까? @Lawrence Pepper –

답변

2

while($row = mysqli_fetch_assoc($result)) 루프는 자바 스크립트 함수 myFunction 동일한 이름 횟수 모두를 선언한다. 이와 같이

<?php while($row = mysqli_fetch_assoc($result)) { ?> 
    <script> 
    function myFunction() {} // this function name is repeated in the while loop 
    <script> 
<?php } ?> 

함수에는 동일한 이름을 사용할 수 없습니다. 가장 간단한 해결책은 다른 이름을 사용하는 것입니다.

<td class="text-center"> 
    <a class="btn btn-xs btn-primary" href="/updaterecordform.php?id=<?php echo $row["recordnumber"];?>" data-toggle="tooltip" title="Edit Record"><i class="fa fa-pencil"></i></a> 
    <a 
     class="btn btn-xs btn-danger" 
     onclick="myFunction<?php echo $row["recordnumber"];?>()" // <-- edited line 
     data-toggle="tooltip" title="Delete Prefix" 
    > 
    <i class="fa fa-close"></i> 
     <script> 
      function myFunction<?php echo $row["recordnumber"];?>() { // <-- edited line 
       swal({ 
        title: 'Are you sure?', 
        text: 'You will not be able to recover this Record!', 
        type: 'warning', 
        showCancelButton: true, 
        confirmButtonColor: '#d26a5c', 
        confirmButtonText: 'Yes, delete it!', 
        closeOnConfirm: false, 
        html: false 
       }, function() { 
        window.location.href = 'deleterecord.php?id=<?php echo $row['recordnumber']; ?>' 
       }); 
      } 
     </script></a> 
    <a class="btn btn-xs btn-primary" href="/record.php?id=<?php echo $row["recordnumber"];?>" data-toggle="tooltip" title="View Details"><i class="fa fa-list-ul"></i></a> 
</td> 

더 나은 또한 간단한 해결책은 함수 매개 변수로 recordnumber을 사용하는 것입니다 그것이 반복되지 않도록 당신이 while 루프 외부에서 자바 스크립트 함수를 넣어

<td class="text-center"> 
    <a class="btn btn-xs btn-primary" href="/updaterecordform.php?id=<?php echo $row["recordnumber"];?>" data-toggle="tooltip" title="Edit Record"><i class="fa fa-pencil"></i></a> 
    <a 
     class="btn btn-xs btn-danger" 
     onclick="myFunction(<?php echo $row["recordnumber"];?>)" 
     data-toggle="tooltip" title="Delete Prefix" 
    > 
    <i class="fa fa-close"></i> 
    <a class="btn btn-xs btn-primary" href="/record.php?id=<?php echo $row["recordnumber"];?>" data-toggle="tooltip" title="View Details"><i class="fa fa-list-ul"></i></a> 
</td> 

<script> 
function myFunction(recordnumber) { 
    swal({ 
     title: 'Are you sure?', 
     text: 'You will not be able to recover this Record!', 
     type: 'warning', 
     showCancelButton: true, 
     confirmButtonColor: '#d26a5c', 
     confirmButtonText: 'Yes, delete it!', 
     closeOnConfirm: false, 
     html: false 
    }, function() { 
     window.location.href = 'deleterecord.php?id=recordnumber'; 
    }); 
} 
</script></a> 
+0

예! 고마워요! –

0

대답은 간단합니다. 테이블의 모든 요소에 대해 myFunction() 함수를 호출합니다.

그런 다음 myFunction()을 호출하면 어느 것이 실행되어야합니까? Javascript가 마지막 것을 실행하기로 결정했습니다.

각 요소에서 data-id를 사용하여이 코드를 리팩터링하고이 ID를 사용하는 하나의 함수 만 호출해야합니다.