2016-11-04 11 views
4

Ich versuche, eine dynamische Tabelle mit Ajax/Jquery zu machen.Löschen Funktion in PHP mit Ajax

andere Funktionen wie Hinzufügen, Update funktionieren, aber meine Löschfunktion scheint nicht zu funktionieren. Ich gehe auf dieses Problem ein, aber ohne Ergebnis.

Unten ist das Snippet, das Daten aus der Datenbank holt und eine Tabelle bildet. Jede Zeile verfügt über Schaltflächen zum Aktualisieren/Löschen, die zu entsprechenden Funktionen führen.

if(mysqli_num_rows($result) > 0) 
 
    { 
 
     $number = 1; 
 
     while($row = mysqli_fetch_assoc($result)) 
 
     { 
 
      $data .= '<tr> 
 
       <td>'.$number.'</td> 
 
       <td>'.$row['Surname'].'</td> 
 
       <td>'.$row['Name'].'</td> 
 
       <td>'.$row['Address'].'</td> 
 
       <td>'.$row['Telephone'].'</td> 
 
       <td>'.$row['PurchaseDate'].'</td> 
 
       <td>'.$row['Model'].'</td> 
 
       <td>'.$row['SerialNumber'].'</td> 
 
       <td>'.$row['Notes'].'</td> 
 
       <td> 
 
        <button onclick="GetUserDetails('.$row['id'].')" class="btn btn-warning">Update</button> 
 
       </td> 
 
       <td> 
 
        <button onclick="DeleteUser('.$row['id'].')" class="btn btn-danger">Delete</button> 
 
       </td> 
 
      </tr>'; 
 
      $number++; 
 
     } 
 
    }

hier ist meine Löschfunktion es die ID der Reihe von der anderen PHP erhält, wo sie Tabelle aus der Datenbank laden.

Delete Funktion Skript

function DeleteUser(id) { 
 
    var conf = confirm("Are you sure, do you really want to delete User?"); 
 
    if (conf == true) { 
 
     $.post("ajax/deleteUser.php", { 
 
       id: id 
 
      }, 
 
      function (data, status) { 
 
       // reload Users by using readRecords(); 
 
       readRecords(); 
 
      } 
 
     ); 
 
    } 
 
}

deletefunction php

<?php 
 
// check request 
 
if(isset($_POST['id']) && isset($_POST['id']) != "") 
 
{ 
 
    // include Database connection file 
 
    include("db_connection.php"); 
 

 
    // get user id 
 
    $client_id = $_POST['id']; 
 

 
    // delete User 
 
    $query = "DELETE FROM Clients WHERE id = '$client_id'"; 
 
    if (!$result = mysqli_query($query)) { 
 
     exit(mysqli_error($result)); 
 
    } 
 
} 
 
?>

ich auch habe versucht, in mysql statt in mysqli zu gehen, und es hat irgendwie funktioniert. Ich nehme an, dass mysqli eine andere Funktion als mysql hat? Nun, ich habe gehört, mysql ist veraltet, aber es scheint, ich mache etwas falsch hier ...

Ich bin nicht gut in der Programmierung, ich lerne, wie es mein neues Hobby wurde. Irgendwelche Tipps wären dankbar.

+1

Try 'if (isset ($ _ POST [ 'id']) && isset ($ _ POST [ 'id'])! = "") Zu ändern' auf 'if (isset ($ _POST ['id'])) ' –

+0

@RazibAlMamun Versuchte das zuvor, nicht funktioniert. Danke trotzdem für die Tipps – Woonghee

+0

Also die Anfrage macht es 'deletefunction.php' aber die' mysql' Abfrage schlägt fehl? Sie haben Recht, benutzen Sie nicht mysql_ * '-Funktionen. Dies ist derzeit für SQL-Injektionen verfügbar. – chris85

Antwort

3

mysqli_* ist mehr objektorientierte und verbesserte Version von MySQL.

Sie müssen Verbindung ID mysqli_query()

gemischte mysqli_query (mysqli $ link, string $ query [, int $ resultmode = MYSQLI_STORE_RESULT])

So wird der korrigierte Code übergeben:

if (!$result = mysqli_query($conn, $query)) { 
// Where $conn is the connection identifier. 

Documentation

0

Diese Abfrage funktionierte für mich endlich.

// delete User 
 
    $query = "DELETE FROM Clients WHERE id = '$client_id'"; 
 
    if (!$result = mysqli_query($GLOBALS["___mysqli_ston"], $query)) { 
 
     exit(((is_object($GLOBALS["___mysqli_ston"])) ? mysqli_error($GLOBALS["___mysqli_ston"]) : (($___mysqli_res = mysqli_connect_error()) ? $___mysqli_res : false))); 
 
    }