Seite 1 von 1

Datensätze nach "aktivierter" checkbox löschen?

Verfasst: 27.02.2003 19:04
von Candy
Hi,
ich habe mir ein kleines Script gebastelt das den Usern meines Boards all ihre Abonnierten Themen anzeigt sie können die Abos für die themen auch löschen das habe ich so realisiert das neben jedem Topic ein link ist www.domain.de/abonnements.php?mode=delete&topic_id=89

Der Code in der abonnements.php sieht so aus:

Code: Alles auswählen

case 'delete':

$sql = "DELETE
        FROM " . TOPICS_WATCH_TABLE . "
					WHERE topic_id = $topic_id
					AND user_id = " . $userdata['user_id'];
			if ( !($result = $db->sql_query($sql)) )
			{
				message_die(GENERAL_ERROR, "Could not delete topic watch information", '', __LINE__, __FILE__, $sql);
			}

                $message = 'Abonnement gelöscht';

                $template->assign_vars(array(
                        'META' => $meta)
                );

                message_die(GENERAL_MESSAGE, $message);

break;
Das läuft auch ganz gut nur hätte ich es gerne so das statt des Links eine checkbox angezeigt wird (so wie im modcp) und die User so mehrere Abos auf einmal löschen können.Leider habe ich keinen schimmer wie/wo ich anfangen soll um das zu realisieren :oops:

Ich wäre dankbar wenn mir da jemand weiterhelfen könnte :)

Grüße Candy

Verfasst: 27.02.2003 20:52
von Pyramide

Code: Alles auswählen

<input type="checkbox" name="topic_id[]" value="id_des_topics">
Das anstatt der Links für jeden Datensatz ausgeben lassen, ein Formular drum und das an die Stelle wo das Formular hingeschickt wird:

Code: Alles auswählen

foreach($_POST['topic_id'] as $id)
{
    //lösche $id
}

Verfasst: 27.02.2003 21:32
von Candy
Hi,
so ganz verstanden habe ich nicht wie du das meinst (Habe noch nicht mit formularen gearbeitet) ich habe es jetzt mal so gemacht:

PHP-Datei: abonnements.php

TPL-Datei: abonnements.tpl

Ist das so korrekt?Weil Funzen tuts net :(

Grüße Candy

Verfasst: 27.02.2003 21:52
von Pyramide
  • Das Formular benötigt keinen Namen
  • Bei action nur den Dateinamen angeben
  • <input type="hidden" name="mode" value="delete"> einfügen
  • Auf richtige Verschachtelung achten. Wenn du <form> vor <table> aufmachst, musst du es auch erst hinter </table> wieder schliessen
  • der Submit-Button darf nicht den namen topix_id[] haben, denn sonst wird der Text des Buttons auch mitgesendet und versucht aus der Datenbank zu löschen
Dieser Code funktioniert bei mir:

Code: Alles auswählen

<html>
<head><title>Checkbox</title></head>
<body>
<form action="<?=$PHP_SELF?>" METHOD="POST">
<?
for($i=0; $i<20; $i++)
{
	echo "$i: <input type=\"checkbox\" name=\"topic_id[]\" value=\"$i\">\n<br>";
}
?>
<input type="submit">
</form>
<hr>
<?
foreach($_POST['topic_id'] as $id)
{
	echo $id.', ';
}
?>
</body>
</html>

Verfasst: 27.02.2003 22:02
von Candy
Habe jetzt alles was du geschrieben hast (soweit ichs verstanden habe) berücksichtigt jetzt funzt es zwar aber ich kann immer nur einen eintrag löschen wenn ich z.b. 4 auswähle wird immer nur der 4 gelöscht die anderen drei bleiben :-?

Hier nochmal die aktuellen dateien:

PHP-Datei: abonnements.php

TPL-Datei: abonnements.tpl

Ist das so jetzt richtig?

Grüße Candy

Verfasst: 28.02.2003 11:10
von Pyramide
Wenn du in der foreach-Schleife mit message_die abbrichst, ist es kein Wunder daß nur ein Eintrag gelöscht wird...

Verfasst: 28.02.2003 15:40
von Candy
Hast recht habe foreach() jetzt vor message_die() geschlossen nu gehts :D

Vielen dank für deine Hilfe :)

Grüße Candy