2015-07-08 6 views
5

Ich habe versucht, einen Datensatz in meiner Datenbank zu löschen. Also habe ich im Grunde eine Tabelle erstellt, die alle meine Datensätze enthält. Nun, was ich tun muss, ist, wenn ich auf den "DELETE" -Link klicke, würde es die ausgewählte Datensatzzeile löschen.DELETE Datensatz in einer Zeile in PHP

Hier ist, wie es aussieht:

Also im Grunde hier habe ich 3 Seiten.
1. page.php
2. add.php
3. delete.php

Hier ist meine page.php Datei:

<table border="1"> 
    <thead> 
     <th>email</th> 
     <th>date</th> 
     <th>delete</th> 
    </thead> 

    <tbody> 
     <tr> 
     <?php 
      foreach($emails as $mail){ ?> 
      <td><?php echo $mail['email']; ?></td> 
      <td><?php echo $mail['date']; ?></td> 
      <td><?php echo "<a href='delete.php?id=". $mail['id']. "'>DELETE</a>"; ?></td> 
     </tr> 
      <?php } ?> 


    </tbody> 
</table> 

Hier ist meine add.php Datei:

<?php 
    require("new-connection.php"); 

    session_start(); 

    $email = $_POST['email']; 
    if(empty($_POST['email']) AND (filter_var($email, FILTER_VALIDATE_EMAIL) === false)) 
    { 
      $_SESSION['message'] = "email cannot be blank"; 
    }else{ 
     $query = "INSERT INTO email_tbl (email, date) 
       VALUES('$email', NOW())";  

    $insertEmail = run_mysql_query($query); 


    if(run_mysql_query($query)) 
    { 
     $_SESSION['message'] .= "New RECORD has been added correctly!"; 
    } 
    else 
    { 
     $_SESSION['message'] .= "Failed to add new Interest"; 
    } 

    } 


    header('Location: email.php'); 




?> 

Hier ist meine delete.php Datei so weit:

<?php 
    require("new-connection.php"); 

    session_start(); 


    $query = "DELETE FROM email_tbl 
      WHERE id={id} LIMIT 1";  

    $deleteEmail = run_mysql_query($query); 


    if(run_mysql_query($query)) 
    { 
     $_SESSION['message'] .= "RECORD has been DELETED correctly!"; 
    } 
    else 
    { 
     $_SESSION['message'] .= "Failed to DELETE RECORD"; 
    } 



    header('Location: email.php'); 




?> 

Also jetzt, wenn ich auf den Link zum Löschen klicken muss er die Schaltfläche in Echtzeit löschen. Irgendeine Idee?

+0

eine Schaltfläche statt und wickeln jeweils in einer Form mit einem versteckten Feld für die ID, oder Sie können einen Iframe und die $ _GET oder Ajax sogar verwenden. Auf keinen Fall funktioniert diese ID = {id}. – ArtisticPhoenix

+0

Was meinst du in Echtzeit, ohne die Seite neu zu laden? – ArtisticPhoenix

+0

was ist das? run_mysql_query() – ArtisticPhoenix

Antwort

6

Ändern Sie bitte Ihre delete.php den URL-Parameter abzurufen:

<?php 
    require("new-connection.php"); 
    session_start(); 

    $id = $_GET['id']; 

    $query = "DELETE FROM email_tbl 
      WHERE id='$id' LIMIT 1";  

    $deleteEmail = run_mysql_query($query); 


    if($deleteEmail) 
    { 
     $_SESSION['message'] .= "RECORD has been DELETED correctly!"; 
    } 
    else 
    { 
     $_SESSION['message'] .= "Failed to DELETE RECORD"; 
    } 

    header('Location: email.php'); 
?> 

Was Ihre add.php, verwenden Sie diese:

$insertEmail = run_mysql_query($query); 

    if(run_mysql_query($query)) 

Sie sollten sie dies ändern:

$insertEmail = run_mysql_query($query); 


    if($insertEmail) 

Was Sie gerade tun, ist, dass Sie die Abfrage zweimal ausführen, indem Sie run_mysql_query zweimal aufrufen. Dies sollte es

+0

Wow danke! @MatchesMalone. Irgendeine Idee, warum mein INSERT-Code 2 Datensatz zur gleichen Zeit zurückgibt? Grundsätzlich, wenn ich die E-Mail auf die Eingabe und klicken Sie auf Senden fügen Sie automatisch zwei Zeilen mit dem gleichen Datensatz und Duplizieren, was ich einfügen ????? Irgendeine Idee, was das verursacht ???? –

+0

Vielleicht liegt es daran, dass Sie 2 mal run_mysql_query – jmattheis

+0

aufrufen Ich beziehe mich auf die add.php btw. :) Es wurden zwei Datensätze eingefügt. –

1
$query = "DELETE FROM email_tbl WHERE id=".$_GET['id']." LIMIT 1"; 
1

Aktualisieren, um die delete.php Datei beheben:

$id = $_GET['id']; 

$query = "DELETE FROM email_tbl WHERE id='$id' LIMIT 1"; 

und prüfen Sie auch den Abschnitt unten: Sie führen die Abfrage zweimal. Es ist also offensichtlich, dass derselbe Datensatz zweimal hinzugefügt wird.

$insertEmail = run_mysql_query($query); 

if(run_mysql_query($query)) 
{ 
    $_SESSION['message'] .= "New RECORD has been added correctly!"; 
} 

Ändern Sie Code, um die run_mysql_query nur einmal zu verwenden.

Verwandte Themen