• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Richtigen Post löschen

T4k3C4r3

Mitglied
Guten Morgen ;D

Ich habe zu meinem MeberNewsScript einen LöschButton hinzugefügt, aber egal bei welche Post ich auf Löschen drücke (Sei es der 1. , 2., ..)

Wird immer der unterste sprich der Erste Post gelöscht hat jemand eine Idee ?

Hier der Script:
PHP:
    $query = mysql_query("SELECT * FROM post_players WHERE author='$profil_username' ORDER BY id DESC") OR die(mysql_error());

    while($row = mysql_fetch_assoc($query))
    {    
        $postid = $row['id'];
        $hl = $row['headline'];
        $text = nl2br($row['text']);
        $from = $row['author'];
        $date = $row['date'];
        
        if($username == $profil_username)
        {
            $post_loeschen = "<div align='right' style='margin-right:20px' >
                              <form action='index.php?page=user&&uid=" . $uid . "' method='POST'>
                              <input type='hidden' name='" . $postid . "' value='" . $postid . "' /> //Bin mir nicht ganz sicher ob das nötig ist
                              <input type='submit' value='L&ouml;schen' name='delete' class='button' />
                              </form></div>";
        }
    
        echo"<br />
            <br />
            <div style='padding-bottom:20px;padding-right:20px;background-color:#EBEBEB;-moz-box-shadow:inset 0 0 10px #000000;-webkit-box-shadow:inset 0 0 10px #000000;box-shadow:inset 0 0 10px #000000;' class='two-third margin60 left'>
            <div style='margin-left: 20px;margin-top:20px;margin-bottom:20px;margin-right:20px;'>
            <h2>{$hl}</h2>
            <div>Author: <a class='link' href='index.php?page=user&&uid=" . $uid . "'>{$from}</a></div>
            <div class='two-third last margin20'>
            <p>{$text}</p>
            <div>" . relativeTime($date) . "</div>
            ";
            if(isset($post_loeschen)) { echo $post_loeschen; }
            echo"
            </div>
            </div>
            </div>
            ";
        
    }
    
    //Ausführen der FORMs
    if(isset($_POST['delete']))
    {
        echo "Der Post wurde gelöscht!";
        //Script zum löschen...

    }
 
PHP:
    //Ausführen der FORMs
    if(isset($_POST['delete']))
    {
        echo "Der Post wurde gelöscht!";
        //Script zum löschen...

    }

Der relevante Teil fehlt.

PHP:
//Ausführen der FORMs
if(isset($_POST['delete']))
{
   mysql_query("DELETE FROM post_players WHERE postid=$postid");
   //....
}
 
Das ist mir schon klar den hab ich rausgelöscht und stattdessen einen Platzhalter hingegeben, da ich sonst immer einen neuen datenbankeintrag machen muss, wenn ich es austesten will.

Mein Problem ist das sich der Löschbutton auf den falschen Post bezieht :(
 
Ah ich versteh jetzt was ihr meint. Ihr hab schon recht! Nur ich hab das so "ausprobiert".

Ich hab nach den Kontrolle, ob der Löschbutton gedrückt wurde eine Ausgabe gesetzt.

Weil ich dachte, dass oben durch das versteckte Feld schon definiert wird WERLCHER Post gelöscht werden soll.

Ich habe dies als einzige Möglichkeit gesehn, aber dabei ganz vergessen, dass es viel leichter ginge, den Post
mit
mysql_query("DELETE FROM post_players WHERE postid=$postid");
zu definieren.

Jetzt hab ich den letzten abschnitt so geändert:

PHP:
//Ausführen der FORMs
    if(isset($_POST['delete']))
    {
        echo"<span style='color:#008000' >Dein Post wurde gelöscht!</span>";
        mysql_query("DELETE FROM post_players WHERE id=$postid");
    }

Aber er löscht noch immer, immer den Ersten Post.
 
Du prüfst an keiner Stelle, welche postid genau gelöscht werden soll. Also pass das folgende an:

Vorher:
PHP:
<input type='hidden' name='" . $postid . "' value='" . $postid . "' /> //Bin mir nicht ganz sicher ob das nötig ist

Nachher:
PHP:
<input type='hidden' name='postid' value='" . $postid . "' /> //Bin mir nicht ganz sicher ob das nötig ist

Und:

Vorher:
PHP:
//Ausführen der FORMs
if(isset($_POST['delete']))
{
   mysql_query("DELETE FROM post_players WHERE postid=$postid");
   //....
}

Nachher:
PHP:
//Ausführen der FORMs
if(isset($_POST['delete']) && isset($_POST["postid"]) && $_POST["postid"] == $postid)
{
   mysql_query("DELETE FROM post_players WHERE postid=".mysql_escape_string($postid));
   //....
}
 
Das ist es, bis auf das, dass er leider nicht das was in der IF anweisung steht ausführt..

Ich habe herumprobiert und bin auf den Entschluss gekommen das:

$_POST["postid"] != $postid

Weil wenn ich dies so mache wie es oben steht funktioniert es wieder aber er löscht den falschen Post

Aber das war was ich gesucht habe! JEtzt muss ich es nur noch funktionstüchtig schaffen :)

PHP:
    if(isset($_POST['delete']) && isset($_POST["postid"]) && $_POST["postid"] == $postid)
    {
        echo"<span style='color:#008000' >Dein Post wurde gelöscht!</span>";
        mysql_query("DELETE FROM post_players WHERE id=".mysql_escape_string($postid));
        //....
    }
 
Zurück
Oben