2017-09-19 3 views
0

Ich versuche, ein Mitarbeiter-Management-System zu erstellen, und im Moment habe ich es geschafft, eine Tabelle mit einigen Datenbank-Inhalten gefüllt.

Nun, was ich will, ist die ausgewählte Zeile mit einem Klick auf eine Schaltfläche am Ende jeder Zeile gelöscht werden. Um dies zu tun, versuche ich die Jquery $ .get-Methode, die eine Datei namens delete.php aufruft, die den Job erledigen wird, und animieren Sie dann und entfernen Sie die Zeile aus dem HTML.

Das Problem ist: Die Animation startet, aber die PHP-Datei entfernt den Datensatz nicht aus der Datenbank! Ich habe sogar versucht, um Fehler zu console.log, aber wie Sie im Screenshot unten sehen können, gibt es mir nur den HTML-Code der Seite anstelle eines Fehlercodes ...

screenshot

hier ist der Code ich benutzte die Tabelle zu generieren:

<?php 

      $sql = "SELECT * FROM dipendente"; 

      $result = $conn->query($sql); 

      if ($result->num_rows > 0) { 


      echo "<table class='table table-striped table-hover'>". 
         "<thead>". 
          "<tr>". 
           "<td>id</td>". 
           "<td>nome</td>". 
           "<td>cognome</td>". 
           "<td>impiego</td>". 
           "<td>permessi</td>". 
           "<td>contratto</td>". 
           "<td>inizio</td>". 
           "<td>fine</td>". 
           "<td>edit</td>". 
          "</tr>". 
         "</thead>"; 

       echo "<tbody>"; 

       // output data of each row 
       while($row = $result->fetch_assoc()) { 

        $id = $row["id"]; 

        echo "<tr id=".$row["id"].">". 
          "<td>" . "#". $row["id"]. "</td>" . 
          "<td contenteditable='false'>" . $row["nome"]. "</td>". 
          "<td contenteditable='false'>" . $row["cognome"] . "</td>". 
          "<td contenteditable='false'>" . $row["impiego"] . "</td>". 
          "<td contenteditable='false'>" . $row["permessi"] . "</td>". 
          "<td contenteditable='false'>" . $row["contratto"] . "</td>". 
          "<td contenteditable='false'>" . $row["inizio"] . "</td>". 
          "<td contenteditable='false'>" . $row["fine"] . "</td>". 
          "<td>" . 
           "<span class='glyphicon glyphicon-pencil' aria-hidden='true'></span>" . 
           "&nbsp;" . 
           "<span class='glyphicon glyphicon-remove-sign' aria-hidden='true'></span>" . 
           "<a href='#' id='$id' class='delete'><span class='glyphicon glyphicon-trash' aria-hidden='true'></span></a>". 
           "&nbsp;". 
           "<span class='glyphicon glyphicon-ok-sign' aria-hidden='true'></span>". 
          "</td>". 
         "</tr>"; 
       } 

       echo "</tbody>"; 

       echo "</table>"; 


      } else { 
       echo "0 results"; 
      } 

hier ist meine jQuery-Code:

$(".delete").click(function(){ 

    var del_id = $(this).attr("id"); 
    var tr = $(this).parent().parent(); 

    console.log(del_id); 
    console.log(tr); 


    $.get("php/delete.php", { id: del_id } , function(error){ 
     //console.log(error); 
     tr.fadeOut("1s",function(){ 
      $(this).remove(); 
     }); 

    }); 

}); 

und es ist mein delete.php Code:

<?php 

$id = $_GET['del_id']; 

$dbc = mysqli_connect('localhost', 'root', 'root', 'gestione_personale') or die('Connection error!'); 

$query = "DELETE FROM dipendente WHERE id = '$id'"; 

mysqli_query($dbc, $query) or die('Database error!'); 

header('location:../index.php'); 

Mache ich etwas falsch?

+1

Haben Sie versucht, Ihre '$ ID' zu wiederholen, wenn das PHP zu Ihnen übertragen wird oder nicht. – Sand

+0

Ich denke, das liegt an der letzten Zeile 'header ('location: ../ index.php');'. Und stellen Sie sicher, Konsole für Fehler zu überprüfen. – siva

+0

Sie müssen die ID als '$ ID = $ _GET [' ID '] sammeln; 'statt $ ID = $ _GET [' Del_ID '];' – siva

Antwort

0

Basierend auf was ich sehe, werde ich diese Antwort geben. Aber Sie müssen wirklich mit mysqli_* mit der Art, wie Sie es verwenden, aussteigen. Die Antwort, die ich Ihnen gebe, ist in Vorbereitung Aussage, die viel sicherer ist als die Art, wie Sie es verwenden.

$dbc = mysqli_connect('localhost', 'root', 'root', 'gestione_personale') or die('Connection error!'); 

$query = $dbc->prepare("DELETE FROM dipendente WHERE id = ?"); 
$query->bind_param("i", $_GET['id']); 

if($query->execute()){ 
    header('location:../index.php'); 
}else{ 
    die('Database error!') 
} 

Ich hoffe, das funktioniert für Sie.

+0

Ich weiß nicht, ye Sie wollen 'header ('location: ../ index.php');' Wenn es Ajax Anruf ist – siva

+0

Ich gab ihm nur ein Beispiel für seinen eigenen Code. Richtig ist, "Erfolg" in AJAX zu verwenden. – Sand

0

versuchen, Zugriff auf URL delete.php vorbei del_id wie arg, wie folgt aus: delete.php?del_id=1

Dann werden Sie sehen, ob der Datensatz gelöscht wird oder wenn Sie einige Fehler erhalten, auch überprüfen, ob PHP display_errors aktiviert ist.

Verwandte Themen