2016-06-07 3 views
0

메뉴 페이지에서 선택한 레코드를 삭제하려고 할 때 문제가 있습니다. 삭제를 클릭하면 헤더가 레코드가 삭제되었음을 보여줍니다. 잘 메시지 = 삭제, 보여줍니다하지만 여전히 레코드를 내 메뉴 페이지에 나타납니다 및 또한 phpmyadmin 확인하고 또한 여전히 존재합니다, 내가 삭제 페이지에서 선택한 레코드에 도달하지 않는 것 같아 여기, 지금까지 내 코드 : delete.phpPDO, 선택한 레코드를 삭제할 수 없습니다.

<?php 
    include('koneksi.php'); 
    $page_number = $_GET['page']; 
    <?php 
include('koneksi.php'); 
$page_number = $_GET['page']; 
        $dbdit = new PDO('mysql:host=localhost;dbname=laundry','root',''); 
        $results = $dbdit->prepare("SELECT COUNT(*) FROM konsumen"); 
        $results->execute(); 
        $get_total_rows = $results->fetch(); 
        $results = $dbdit->prepare("DELETE FROM konsumen ORDER BY kode_pemesanan ASC LIMIT :page_number"); 
        $results->bindValue(':page_number',$page_number); 
        $results->execute(); 
        if($results){ 
         header('location:menu.php?message=deleted&&?page=1'); 
        } 

menu.php

if($typeuser == 'admin'){ 
         $item_per_page = 1; 
         $dbcon = new PDO('mysql:host=localhost;dbname=laundry','root',''); 
         $results = $dbcon->prepare("SELECT COUNT(*) FROM konsumen"); 
         $results->execute(); 
         $get_total_rows = $results->fetch(); 

         //breaking total records into pages 
         $pages = ceil($get_total_rows[0]/$item_per_page); 

         if(isset($_GET["page"])){ 
         $page_number = filter_var($_GET["page"], FILTER_SANITIZE_NUMBER_INT, FILTER_FLAG_STRIP_HIGH); 

          if(!is_numeric($page_number)){die('Invalid page number!<a href="?page=1"> Back! </a>');} //incase of invalid page number 
         }else{ 
         $page_number = 1; 
         } 

         $position = (($page_number-1) * $item_per_page); 

         $results = $dbcon->prepare("SELECT * FROM konsumen ORDER BY kode_pemesanan ASC LIMIT $position, $item_per_page"); 
         $results->execute(); 
         while($row = $results->fetch()){ 
          print_r ("<table> 
           <tr> 
           <td>Kode Pemesanan</td><td>:</td><td>".$row['kode_pemesanan']."</td></tr> 
           <tr><td>Atas Nama</td><td>:</td><td>".$row['atas_nama']."</td></tr> 
           <tr><td>Jumlah Baju</td><td>:</td><td>".$row['jmlhbaju']."</td></tr> 
           <tr><td>Jumlah Celana</td><td>:</td><td>".$row['jmlhcelana']."</td></tr> 
           <tr><td>Jumlah Jaket</td><td>:</td><td>".$row['jmlhjaket']."</td></tr> 
           <tr><td>Jumlah Jas</td><td>:</td><td>".$row['jmlhjas']."</td></tr> 
           <tr><td>Jumlah Dress</td><td>:</td><td>".$row['jmlhdress']."</td></tr> 
           <tr><td>Pengurus Pesanan</td><td>:</td><td>".$row['penguruspesanan']."</td></tr> 
           <tr><td>Status Pesanan</td><td>:</td><td>".$row['statuspesanan']."</td></tr> 
           <tr><td>Total Pesanan</td><td>:</td><td>".$row['totalpesanan']."</td> 
           </tr></table> 
           <br> 
           ");  
         } 
         $min = 1; 
         if(isset($_GET["page"]) && $_GET["page"] > $min){ 
         $previous = $page_number - 1; 
         echo "<a href='?page=$previous'>&larr;Previous</a>&nbsp;&nbsp;"; 
        } else echo "<a href='?page=1'>&larr;Previous</a>&nbsp;&nbsp;"; 

        echo "<a href='edit.php?page=$page_number'>Edit</a>&nbsp;&nbsp;"; 
        echo "<a href='delete.php?page=$page_number'>Delete</a>&nbsp;&nbsp;"; 

              if(isset($_GET["page"]) && $_GET["page"] < $pages){ 
         $next = $page_number + 1; 
         echo "<a href='?page=$next'>Next&rarr;</a>"; 
        } else echo "<a href='?page=$pages'>Next&rarr;</a>"; 
             } 



       } 
+0

받은 답변이 왜 그렇게 나쁜지 설명하는 많은 것들이 여기에 있습니다! 적어도 기본 키를 포함하는'konsumen' 테이블 정의를 제공해주십시오. –

+0

미안하지만, konsumen 테이블 kode_pemesanan 기본 키, atas_nama, jmlhbaju.jmlhcelana, jmlhjaket, jmlhjas, jmlhdress, penguruspesanan, statuspesanan 및 totalpesanan 열, 나는 menu.php에서 페이지 매김을 사용하여 konsumen 테이블을 표시하고 보여줍니다 좋아, 그것은 단지 선택한 레코드를 삭제할 수 없습니다, 나는 내가 선택한 레코드에 도달 할 수 없다고 생각합니다. – roger

답변

0

가이 많은 문제가 있지만 주된 하나는 실행하려는 쿼리가 전혀 의미하지 않습니다 것입니다 :

DELETE FROM konsumen ORDER BY kode_pemesanan ASC LIMIT :page_number 

은 삭제 기록을 지정하지 않음을 DELETE 검색어는 ORDER BYLIMITSELECT 검색어와 유사합니다.

귀하의 echo "<a href='delete.php?page=$page_number'>Delete</a>&nbsp;&nbsp;"; 링크는 가져 루프 내부에와 키가 아닌 페이지 번호를 사용해야합니다 :

echo "<a href='delete.php?key={$row['kode_pemesanan']}'>Delete</a>&nbsp;&nbsp;"; 

물론 해당 키를 사용하도록 delete.php를 해결해야 할 것

.

대신 $page_number = $_GET['page'];

, 당신은 을 넣어, 이상적으로 기본적인 검증을 한 다음 PDO의 질의 정정 수 :
$results = $dbdit->prepare("DELETE FROM konsumen WHERE kode_pemesanan = :kode_pemesanan"); 
$results->bindValue(':kode_pemesanan', $key, PDO::PARAM_INT); 

if($results->execute()){ 
    header('location:menu.php?message=deleted&&?page=1'); 
} 
else { // you can do better than this but it's just to show how to properly deal with returned values 
    die('error in delete query'); 
} 

다른 문제가있을 수 있지만, 내가 그들을 찾기 위해 사이트에이를 테스트 할 수 있습니다.

+0

기본 키를 선택한 레코드로 사용하기 위해 코드를 편집하지만 여전히 작동합니다 .. 여전히 레코드는 menu.php에 표시되고 phpmyadmin – roger

+0

메시지를 편집하려고했는데 '. $ key.'= 삭제되었습니다. $ key 값을 표시하지 않습니다. php? = deleted &&? page = 1 – roger

+0

정확한 코드를 제공했습니다. 용도. –

-1

delete 쿼리 문 다음에 $results->execute();에 다시 전화 해보십시오.

$results = $dbdit->prepare("DELETE FROM konsumen ORDER BY kode_pemesanan ASC LIMIT :page_number"); 
$results->bindValue(':page_number',$page_number); 
$results->execute(); 
if($results){ 
    header('location:menu.php?message=deleted&&?page=1'); 
} 
+0

이 게시물에 답장을 보내 주셔서 감사합니다. 그러나 여전히 작동하지 않습니다. – roger

관련 문제