2016-08-28 6 views
3

프로세스 종업원 휴가 기록을 위해 PHP 응용 프로그램을 작성하고 있습니다. 이 응용 프로그램에서는 기본 화면에 데이터베이스 레코드와 작업 버튼이 채워집니다. 사용자가 작업 버튼을 클릭하면 데이터베이스 ID를 테이블에서 가져 와서 다른 파일로 이동하여 해당 레코드를 삭제 한 다음 다시 같은 페이지로 리디렉션합니다. 이 메커니즘은 HTML _GET 메서드를 사용하여 구현되었습니다. 누군가가 URL 피드의 행 ID를 볼 수 있고 누군가 다른 행 ID로이 URL을 요청하면 PHP 파일은 다른 보안 조치가 일어나지 않도록 레코드를 삭제하므로 해당 레코드를 방지 할 수 있습니다. 또한이 응용 프로그램은 어떤 종류의 세션도 사용하지 않습니다.게시자가 동일한 PHP 페이지에서 데이터베이스 삭제 조치를 처리합니다.

이것은 위에서 언급 한 작업에 대한 href 코드입니다.

echo "<a href='rejectone.php?id=$lvid' class='btn btn-danger btn-xs m-r-1em'>Cancal</a>"; 

이 내가 다른 PHP로 리디렉션하지 않고 동일한 PHP 파일 내부의 rejectone 작업을 실행할 수있는 방법은 두 가지 질문

1.

)가 내 rejectone.php 코드

<?php 
$lid =$_GET['id']; 
include 'database.php'; 
$accval = "Accept"; 
try { 
    $query = "UPDATE leavesrecords SET leavestatus = 'Reject' WHERE lvid = '$lid'"; 
    $stmt = $con->prepare($query); 
    $stmt->bindParam(1, $id); 
    $stmt->execute(); 
} 

catch(PDOException $exception){ 
    die('ERROR: ' . $exception->getMessage()); 
} 
header("refresh:0;url=bs.php");   
?> 

입니다 파일

2.) jejectone.php 파일을 계속 사용하는 경우 get 메소드 대신 HTML _POST 메소드를 사용하여 데이터를 전송하는 방법

감사합니다. 모든

답변

0

먼저 귀하의 라인 변경 :

echo "<a href='rejectone.php?id=$lvid' class='btn btn-danger btn-xs m-r-1em'>Cancal</a>"; 

사이트에 jQuery를 포함하지 않은 경우

echo '<a href="javascript:;" class="btn btn-danger btn-xs m-r-1em delete-item" primary-key="'.$lvid.'">Cancal</a>'; 

에를, 당신은, 당신의 페이지에이 스크립트를 추가하여 작업을 수행 할 수 있습니다 </head> 태그

<script type="text/javascript" src="https://code.jquery.com/jquery-3.1.0.min.js"></script> 

닫기 전에하면이 자바 스크립트 파일 t 추가 페이지의 하단 O를, 단지 </body>

<script type="text/javascript"> 

$(document).ready(function(){ 
    $(document).on('click', '.delete-item', function(e){ 

     e.preventDefault(); 
     if(!confirm('Are you sure you want to delete this item?')) return false; 

     $.post('bs.php', {'id': t.attr('primary-key'), 'delete_item': 1}, function(e){ 
      window.location = 'bs.php'; 
     }) 

    }) 
}) 

</script> 

을 닫기 전에 이러한 변화를 bs.php 당신의 rejectone.php을 복사하지만합니다 그것을

if(isset($_POST['delete_item'])) 
{ 
    $lid = (int)$_POST['id']; 
    include 'database.php'; 
    $accval = "Accept"; 
    try { 
     $query = "UPDATE leavesrecords SET leavestatus = 'Reject' WHERE lvid = :lid "; 
     $stmt = $con->prepare($query); 
     $stmt->bindParam(':lid', $lid); 
     $stmt->execute(); 
    } 

    catch(PDOException $exception){ 
     die('ERROR: ' . $exception->getMessage()); 
    } 

} 

즉.

+0

전체 답변 감사드립니다. 하지만 어떻게 든이 작동하지 않습니다. 버튼 웹 페이지를 클릭하면 자바 스크립트 확인이 표시되지만 행을 업데이트하지 않았습니다. –

+0

PDO'bindParam'을 업데이트 했으므로 이제 작동합니다. –

+0

내가 이것을 실행하면 "ReferenceError : t는 정의되지 않았습니다"라는 콘솔 창에서 발생합니다. –

-2

아약스 게시 방법을 사용하십시오. 자세한 내용은 샘플 코드로 허용되는 전체 솔루션 예제를 참조하십시오. Delete MySQLi record without showing the id in the URL 그런 다음 jquery를 사용하면 페이지에서 해당 UI 레코드를 제거하여보다 우수한 UI 경험을 얻을 수 있습니다.

+0

답변과 함께 예제를 제공해주십시오. [다른 곳에서 실제로 링크가 포함 된 답변은 "좋은 답변"입니까?] (http://meta.stackexchange.com/questions/8231/are-answers-that-just-contain-links-elsewhere-really-good-answers) – Novocaine

+0

나는 중복 된 것을 피할 수 있도록 허용 된 솔루션 URL로 주석을 업데이트했습니다. 말이 돼 ? – Senthil