Formularelement in Interaktion mit MYSQL
- kratzer54847
- Mitglied
- Beiträge: 3065
- Registriert: 20.01.2003 16:34
- Wohnort: Düsseldorf/Hannover/Berlin
- Kontaktdaten:
Formularelement in Interaktion mit MYSQL
hoi hoi,
ich habe mir eine Liste gebaut,die mir alle Themen anzeigt,die ein User beobachtet.
So weit so gut,funktioniert auch alles.
Jetzt soll man aber bei jedem angezeigten Thema eine Checkbox auswählen können und dann per Klick auf einen entsprechenden Button die markierten Themen nicht mehr beobachten.
also es soll quasi in etwa solch eine Query zustande kommen :
$sql = "DELETE *
FROM phpbb_topics_watch
WHERE w.user_id = $userdata['user_id']
AND w.topic_id = $markedtopics";
wobei $markedtopics den zustand der jeweiligen zum Thema gehörenden Checkbox ausliest,wenn die Checkbox aktiviert ist soll das Thema natürlich aus der Tabelle phpbb_topics_watch entfernt werden sofern u.user_id gleich der ID des eingeloggten Users ist
ich habe mir eine Liste gebaut,die mir alle Themen anzeigt,die ein User beobachtet.
So weit so gut,funktioniert auch alles.
Jetzt soll man aber bei jedem angezeigten Thema eine Checkbox auswählen können und dann per Klick auf einen entsprechenden Button die markierten Themen nicht mehr beobachten.
also es soll quasi in etwa solch eine Query zustande kommen :
$sql = "DELETE *
FROM phpbb_topics_watch
WHERE w.user_id = $userdata['user_id']
AND w.topic_id = $markedtopics";
wobei $markedtopics den zustand der jeweiligen zum Thema gehörenden Checkbox ausliest,wenn die Checkbox aktiviert ist soll das Thema natürlich aus der Tabelle phpbb_topics_watch entfernt werden sofern u.user_id gleich der ID des eingeloggten Users ist
Knowledge Base | MOD Datenbank | Boardsuche | HTML | PHP
Durch die richtige Verwendung dieser Links können viele Fragen beantwortet werden
Durch die richtige Verwendung dieser Links können viele Fragen beantwortet werden

- kratzer54847
- Mitglied
- Beiträge: 3065
- Registriert: 20.01.2003 16:34
- Wohnort: Düsseldorf/Hannover/Berlin
- Kontaktdaten:
ich habe ja eine Liste gebaut,die dem User alle beobachteten Themen anzeigt. Dieser Liste möchte ich nun um die Funktion erweitern,dass der User per Checkbox einzelne Themen markieren und über einen Button löschen die Themen aus seiner Watched Topics List löschen kann,sodas diese nicht mehr beobachtet werden
Meine Frage lautet,wie ich erreichen kann,dass erfasst wird,welches Thema markiert ist und wie ich weiterhin realisieren kann,dass über den klick auf den Button "Unwatch marked" die markierten Themen für den jeweiligen User aus der Datenbanktabelle gelöscht werden.
mfg Johny
Meine Frage lautet,wie ich erreichen kann,dass erfasst wird,welches Thema markiert ist und wie ich weiterhin realisieren kann,dass über den klick auf den Button "Unwatch marked" die markierten Themen für den jeweiligen User aus der Datenbanktabelle gelöscht werden.
mfg Johny
Knowledge Base | MOD Datenbank | Boardsuche | HTML | PHP
Durch die richtige Verwendung dieser Links können viele Fragen beantwortet werden
Durch die richtige Verwendung dieser Links können viele Fragen beantwortet werden

Ah.. ok...
Also das Formular ruft ja eine Seite auf. Dieses muss eine PHP-Seitesein.
Hier hast Du dann in den Variablen die Werte. Also wenn die Checkbox "cb19" heißt, dann hasst Du nachher entweder in cb19 "checked" drinne oder nicht.
So mußt Du dann alle Variablen abfragen.
Du kannst auch zum Testen echo "cb19: ".ch19."<br>"; schreiben.
Wenn Fehler kommen, mache mal folgendes davor: (nur statt "mode" halt cb19 schreiben...
--
Dann kannst Du mit IF Abfragen die SQL-Anweisungen erstellen.
Grüße
Dennis
Also das Formular ruft ja eine Seite auf. Dieses muss eine PHP-Seitesein.
Hier hast Du dann in den Variablen die Werte. Also wenn die Checkbox "cb19" heißt, dann hasst Du nachher entweder in cb19 "checked" drinne oder nicht.
So mußt Du dann alle Variablen abfragen.
Du kannst auch zum Testen echo "cb19: ".ch19."<br>"; schreiben.
Wenn Fehler kommen, mache mal folgendes davor:
Code: Alles auswählen
$mode = ((isset($_POST["mode"])) ? $_POST["mode"] : ((isset($_GET["mode"])) ? $_GET["mode"] : ""));
--
Dann kannst Du mit IF Abfragen die SQL-Anweisungen erstellen.
Grüße
Dennis
- kratzer54847
- Mitglied
- Beiträge: 3065
- Registriert: 20.01.2003 16:34
- Wohnort: Düsseldorf/Hannover/Berlin
- Kontaktdaten:
hoi hoi,
wie meinst du das genau?
Angenommen ich schreibe in der tpl:
lautet dann der Code in der topics_unwatch.php(in meinem Fall) im Grundsatz so?
wie meinst du das genau?
Angenommen ich schreibe in der tpl:
Code: Alles auswählen
<input type="checkbox" name="unwatch">
Code: Alles auswählen
$unwatch = ((isset($_POST["unwatch"])) ? $_POST["unwatch"] : ((isset($_GET["unwatch"])) ? $_GET["unwatch"] : ""));
if ($unwatch)
{
$sql = "{Anweisung_zum_Löschen}"
}
else
{
exit;
}
Knowledge Base | MOD Datenbank | Boardsuche | HTML | PHP
Durch die richtige Verwendung dieser Links können viele Fragen beantwortet werden
Durch die richtige Verwendung dieser Links können viele Fragen beantwortet werden

- kratzer54847
- Mitglied
- Beiträge: 3065
- Registriert: 20.01.2003 16:34
- Wohnort: Düsseldorf/Hannover/Berlin
- Kontaktdaten:
hoi nochmal,
ich hab das jetzt mal versucht,es will aber nicht.
hier ist der Formularteil in der TPL:
die unwatch.php sieht folgendermaßen aus:
wenn ich das so mache,kommt im folgenden eine leere Seite mit der URL:
hm ich weiß nicht mehr weiter,wer weiß rat?
ich hab das jetzt mal versucht,es will aber nicht.
hier ist der Formularteil in der TPL:
Code: Alles auswählen
<form name="watchedtopics" action="unwatch.php">
<table width="100 %">
<tr><td colspan="2" class="row2"><span class="gensmall">Title</span></td><td class="row2"><span class="gensmall">Views</span></td><td class="row2"><span class="gensmall">Comments</span></td><td class="row2"><span class="gensmall">Forum</span></td><td class="row2"><span class="gensmall">Last Post</span></td><td class="row2"><span class="gensmall">Mark</span></td></tr>
<!-- BEGIN watched -->
<tr>
<td width="25"><img src="{watched.WTOPICFOLDER}"></td>
<td><span class="gensmall"><a href="viewtopic.php?t={watched.WTOPICID}" class="nav">{watched.WTOPICTITLE}</a></span></td>
<td><span class="gensmall">{watched.WTOPICVIEWS}</span></td>
<td><span class="gensmall">{watched.WTOPICREPLIES}</span></td>
<td><span class="gensmall"><a href="viewforum.php?f={watched.WTOPICFORUMID}" class="nav">{watched.WTOPICFORUM}</a></span></td>
<td><span class="gensmall"><a href="viewtopic.php?p={watched.WTOPICLASTPOSTID}"><img src="templates/subSilver/images/icon_latest_reply.gif" border="0"></a><a href="profile.php?mode=viewprofile&u={watched.WTOPICLASTPOSTAUTHORID}" class="gensmall"">{watched.WTOPICLASTPOSTAUTHOR}</a><br>{watched.WTOPICLASTPOSTTIME}</span></td>
<td><input type="checkbox" name="unwatch" value="unwatch"></td>
</tr>
<!-- END watched -->
<tr>
<td colspan="6" align="center"><input type="submit" name="unwatch" value="Unwatch Marked" /></td>
</tr>
</table>
</form>
Code: Alles auswählen
//
// Get Userdata
//
$userdata = session_pagestart($user_ip, PAGE_INDEX);
init_userprefs($userdata);
$option = ( isset($HTTP_POST_VARS['option']) ) ? ( ($HTTP_POST_VARS['option']) ? TRUE : 0 ) : 0;
if ( $option )
{
$sql = "DELETE *
FROM phpbb_topics_watch
WHERE user_id = $userdata['user_id']
AND $option = true";
mysql_query($sql);
}
Code: Alles auswählen
http://localhost/phpbb2/unwatch.php?unwatch=unwatch&unwatch=unwatch&unwatch=unwatch&unwatch=unwatch&unwatch=Unwatch+Marked
Knowledge Base | MOD Datenbank | Boardsuche | HTML | PHP
Durch die richtige Verwendung dieser Links können viele Fragen beantwortet werden
Durch die richtige Verwendung dieser Links können viele Fragen beantwortet werden

- kratzer54847
- Mitglied
- Beiträge: 3065
- Registriert: 20.01.2003 16:34
- Wohnort: Düsseldorf/Hannover/Berlin
- Kontaktdaten:
Hoi Dennis,
ich habe den Code nun so abgeändert:
geht aber nicht...die URL lautet jetzt:
ich habe den Code nun so abgeändert:
Code: Alles auswählen
$unwatch = ( isset($HTTP_POST_VARS['unwatch']) ) ? ( ($HTTP_POST_VARS['unwatch']) ? TRUE : 0 ) : 0;
if ( $unwatch == 'checked' )
{
$sql = "DELETE *
FROM phpbb_topics_watch
WHERE user_id = $userdata['user_id']
AND $unwatch = true";
mysql_query($sql);
}
else
{
// exit;
}
Code: Alles auswählen
http://localhost/phpbb2/unwatch.php?unwatch=unwatch&unwatch=Unwatch+Marked
Knowledge Base | MOD Datenbank | Boardsuche | HTML | PHP
Durch die richtige Verwendung dieser Links können viele Fragen beantwortet werden
Durch die richtige Verwendung dieser Links können viele Fragen beantwortet werden

Woher willst du denn wissen, welche Checkboxen angeklickt wurden, wenn diese alle nur den Wert "unwatch" haben? Am besten packst du da den Primärschlüssel der zu löschenden Tabelle rein. Und der Name sollte auf [] enden, dann macht PHP da automatisch ein Array draus. z.B:
(und dann mit [php:foreach] auswerten oder mit [php:implode] direkt ´ne WHERE id IN(...) SQL-Anweisung bauen.
Code: Alles auswählen
<input type="checkbox" name="unwatch[]" value="{watched.ID}">
- kratzer54847
- Mitglied
- Beiträge: 3065
- Registriert: 20.01.2003 16:34
- Wohnort: Düsseldorf/Hannover/Berlin
- Kontaktdaten:
hoi nochmal,
ich habe es jetzt mit deinem Codeteil versucht und möchte nun zum Test eine einfache Kontrollstruktur schreiben,die mit lediglich anzeigt,wie viele Checkboxen ausgewählt wurden(zum Test)
damit soll zunächst mal für jede ausgewählte Checkbox ein "Unwatched" angezeigt werdne oder verstehe ich die Funktion falsch?
ich habe es jetzt mit deinem Codeteil versucht und möchte nun zum Test eine einfache Kontrollstruktur schreiben,die mit lediglich anzeigt,wie viele Checkboxen ausgewählt wurden(zum Test)
Code: Alles auswählen
$unwatch = ( isset($HTTP_POST_VARS['unwatch']) ) ? ( ($HTTP_POST_VARS['unwatch']) ? TRUE : 0 ) : 0;
foreach ( $unwatch == true )
{
echo "Unwatched";
}
Knowledge Base | MOD Datenbank | Boardsuche | HTML | PHP
Durch die richtige Verwendung dieser Links können viele Fragen beantwortet werden
Durch die richtige Verwendung dieser Links können viele Fragen beantwortet werden
