Problem bei PHP Gästebuch Delete Funktion

sakanoue

Grünschnabel
Hi Leute,

ich arbeite mich gerade in PHP ein mit dem php.quakenet Tutorial.

Bei dem Gästebuch möchte ich nun eine Delete Funktion einfügen.
Jeder Eintrag hat eine Checkbox. Wenn diese checked ist und man unten auf submit drückt, soll er die ausgewählten Einträge aus der SQL Datenbank löschen.

Das alles kann natürlich nur ein Admin durch die Funktion gotSomeRights.

Hier der Code:

guestbook.tpl
PHP:
<?php

        if ($result->num_rows) {
            while ($row = $result->fetch_assoc()) {
            echo '<form action="index.php?section=guestbook&amp;action=del" method="post">';
                echo '<div id="beitrag">'."\n";
                echo '<img src="http://www.tutorials.de/forum/images/gbentry.png" alt="gb" /><span id="autor">'.htmlspecialchars($row['Autor'])."</span>\n";
                echo '    <br /><span id="datum"> schrieb am '.$row['Datum']."</span>\n";
                echo "    <p>\n";
                echo nl2br(htmlspecialchars(preg_replace('~\S{30}~', '\0 ', $row['Inhalt'])));
                echo "    </p>\n";
                    if (gotSomeRights($db)) {
                    	echo "    <p>\n";
                       	echo '<div id="del">'.htmlspecialchars($row['Autor']).' '.$row['ID'].' Eintrag löschen? 
								<input type="checkbox" name="delete[]" value="'.$row['ID'].'" />
                                </div>';
						echo "    </p>\n";
                    }
                echo "</div>\n";
                echo "<br />\n";
                echo "<br />\n";
                }
                if (gotSomeRights($db)) {
                    echo'<input type="submit" name="check" value="Löschen" />';
                    echo'</form>';
                }
        } else {
            echo '<p class="info">Es sind keine Gästebucheinträge vorhanden</p>';
        } 
?>

guestbook_del.php
PHP:
<?php

echo "meineseite";
// if (gotSomeRights($db) {
    if(isset($_POST["delete"])) {
                $sql = 'DELETE FROM
            				mkhw_Guestbook
        				WHERE
							ID = '.$ID.' ';
				if (!$stmt = $db->prepare($sql)) {
    				return $db->error;
				}
        return showInfo('Nachricht wurde gelöscht');
    }
//}
?>

guestbook.php
PHP:
<?php

$ret = array();
$ret['filename'] = 'guestbook.tpl';
$ret['data'] = array();

    $sql = 'SELECT
				ID,
				Autor,
				Datum,
				Inhalt
			FROM
				mkhw_Guestbook
			ORDER BY
				Datum DESC';
    $result = $db->query($sql);
    if (!$result) {
        die('Der Query konnte nicht ausgeführt werden: '.$db->error);
	}
return $ret;
?>

Mein Problem liegt irgendwo in der .tpl denke ich. Er übergibt die Parameter des submit auf die _del.php datei, jedoch passiert dann nichts.

Ich komme nicht weiter, bitte um Hilfe :)

Hinzu soll noch eine Blätterfunktion kommen.
 
Er übergibt die Parameter des submit auf die _del.php datei
Naja:

Code:
form action="index.php?section=guestbook&amp;action=del"

nicht so ganz, oder? Wird die _del.php nachträglich eingebunden?

PHP:
if(isset($_POST["delete"])) {
                $sql = 'DELETE FROM
                            mkhw_Guestbook
                        WHERE
                            ID = '.$ID.' ';
                if (!$stmt = $db->prepare($sql)) {
                    return $db->error;
                }
        return showInfo('Nachricht wurde gelöscht');
    }
Du fragst hier zwar die Existenz der Superglobalen $_POST["delete"] ab, nutzt dann aber $ID. Du könntest eine foreach-Schleife verwenden:

PHP:
foreach ($_POST["delete"] as $ID) {
  // $ID verwenden
}

Und:
Code:
' '
bei:
Code:
ID = '.$ID.' ';
ist irgendwie überflüssig, oder? ;)

Gruß
 
Zuletzt bearbeitet:
Zurück