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

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
Candy
Mitglied
Beiträge: 314
Registriert: 09.11.2002 21:15

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

Beitrag 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
Benutzeravatar
Pyramide
Ehrenadmin
Beiträge: 12734
Registriert: 19.04.2001 02:00
Wohnort: Meschede

Beitrag 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
}
Candy
Mitglied
Beiträge: 314
Registriert: 09.11.2002 21:15

Beitrag 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
Benutzeravatar
Pyramide
Ehrenadmin
Beiträge: 12734
Registriert: 19.04.2001 02:00
Wohnort: Meschede

Beitrag 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>
Candy
Mitglied
Beiträge: 314
Registriert: 09.11.2002 21:15

Beitrag 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
Benutzeravatar
Pyramide
Ehrenadmin
Beiträge: 12734
Registriert: 19.04.2001 02:00
Wohnort: Meschede

Beitrag von Pyramide »

Wenn du in der foreach-Schleife mit message_die abbrichst, ist es kein Wunder daß nur ein Eintrag gelöscht wird...
Candy
Mitglied
Beiträge: 314
Registriert: 09.11.2002 21:15

Beitrag von Candy »

Hast recht habe foreach() jetzt vor message_die() geschlossen nu gehts :D

Vielen dank für deine Hilfe :)

Grüße Candy
Antworten

Zurück zu „Coding & Technik“