2016-06-07 13 views
0

Ich habe ein Problem, wenn ich versuche, den Datensatz zu löschen, den ich in meiner Menüseite auswähle, nachdem ich auf Löschen geklickt habe, zeigt mir die Kopfzeile an, dass der Datensatz gelöscht wurde Nun, es zeigt mir die Nachricht = gelöscht, aber ich merke, dass der Datensatz immer noch auf meiner Menüseite angezeigt wird, und ich habe auch die phpmyadmin überprüft und es existiert auch noch, ich denke, ich bin nicht den ausgewählten Datensatz auf der Löschseite erreichen, hier ist so weit mein Code: delete.phpPDO, kann den ausgewählten Datensatz nicht löschen

<?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

Es sind so viele Dinge falsch, die erklären, warum die Antworten so schlecht sind! Bitte geben Sie uns zumindest die Tabellendefinition 'konsumen' mit dem Primärschlüssel an. –

+0

Entschuldigung meine Mängel, so hat die konsumen Tabelle Kode_pemesanan als Primärschlüssel, atas_nama, jmlhbaju.jmlhcelana, jmlhjaket, jmlhjas, jmlhdress, penguruspesanan, statuspesanan und totalpesanan Spalten, ich zeige die konsumen Tabelle mit Seitenumbruch in menu.php und es zeigt Gut, es kann nur den ausgewählten Datensatz nicht löschen, ich denke, ich kann den ausgewählten Datensatz nicht erreichen. – roger

Antwort

0

Es gibt viele Probleme mit diesem aber der Hauptgrund ist, dass die Abfrage versucht man, macht keinen Sinn, überhaupt zu laufen:

DELETE FROM konsumen ORDER BY kode_pemesanan ASC LIMIT :page_number 

Nicht nur sind Sie keinen Datensatz Angabe löschen aber Ihre DELETE Abfrage sieht eher aus wie eine SELECT Abfrage mit ORDER BY und LIMIT.

Ihr echo "<a href='delete.php?page=$page_number'>Delete</a>&nbsp;&nbsp;"; Link müsste innerhalb der Abrufschleife und verwenden Sie den Schlüssel sein, nicht die Seitenzahl:

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

Und natürlich würden Sie die delete.php korrigieren müssen, um diesen Schlüssel zu verwenden.

Statt $page_number = $_GET['page'];, könnten Sie setzen, idealerweise grundlegende Validierung tun und dann PDO anfragende korrigieren:

$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'); 
} 

kann es andere Probleme, aber ich kann das, sie zu finden auf Ihrer Website nicht testen.

+0

ich bearbeite meinen Code, für die Verwendung der Primärschlüssel als ausgewählter Datensatz, aber immer noch funktioniert .. der Datensatz immer noch in der menu.php und auch in meinem phpmyadmin – roger

+0

ich habe versucht, die Nachricht zu bearbeiten = gelöscht in '. $ key.' = gelöscht und es zeigt mir nicht den $ Schlüsselwert, es zeigt mir Menü, php? = gelöscht &&? page = 1 – roger

+0

Ich gab Ihnen den genauen Code zu benutzen. –

-1

Versuchen Sie, die $results->execute(); erneut nach PREPARING Ihre delete Abfrageanweisung aufzurufen.

$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

danke für die Antwort auf diesen Beitrag, aber es funktioniert immer noch nicht .. – roger

Verwandte Themen