Ankündigung

Einklappen
Keine Ankündigung bisher.

Formularelement Checkbox in Interaktion mit MYSQL

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Formularelement Checkbox in Interaktion mit MYSQL

    Hoi @ all,

    hoi hoi,

    ich habe mir eine Liste für mein Forum 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 :

    Code:
    $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

    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.

    ich habe mir dazu zunächst ein Formular gebaut,das beim Absenden eine Datei unwatch.php aufruft.

    Wie kann ich dieser unwatch.php eine Funktion beifügen,die erkennt,welche Ckeckboxen aktiviert wurden?

    Mein erster Ansatz ist,dass ich über einen Array arbeite:

    Code:
    <td><input type="checkbox" name="unwatch[]" value="{watched.WTOPICID}"></td>
    und dann in der unwatch.php folgendes festlege:

    Code:
    $unwatch = ( isset($HTTP_POST_VARS['unwatch']) ) ? ( ($HTTP_POST_VARS['unwatch']) ? TRUE : 0 ) : 0;
    
    foreach ( $unwatch = true )
    {
    echo "Unwatched";
    }
    sodass ich überhaupt erstmal testweise über die Ausgabe von "Unwatched" sehe,ob die Formulareingaben überhaupt erfasst werden.

    Werden sie aber nicht. Wo liegt der Fehler?


  • #2
    Gib doch einfach mal die Variablen mit
    Code:
    var_dump($_POST);
    aus, statt mit einer falschen foreach-Schleife (http://de.php.net/manual/de/control-...es.foreach.php). Dann wirst du sehen, dass nur diejenigen checkboxen übergeben werden, die selektiert wurden.
    Gruss
    L

    Kommentar


    • #3
      das Problem ist,dass ja beim submitten des Formulars eine weitere PHP-Seite aufgerufen wird. Irgendwie scheint das aber nicht zusammenzuarbeiten:

      hier ist einmal das Formular:

      Code:
      <form name="watchedtopics" action="ucp/ucp_watch.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>
       
      <tr> 
      <td width="25">[img]{watched.WTOPICFOLDER}[/img]</td> 
      <td><span class="gensmall">{watched.WTOPICTITLE}</span></td> 
      <td><span class="gensmall">{watched.WTOPICVIEWS}</span></td> 
      <td><span class="gensmall">{watched.WTOPICREPLIES}</span></td> 
      <td><span class="gensmall">{watched.WTOPICFORUM}</span></td> 
      <td><span class="gensmall">[img]templates/subSilver/images/icon_latest_reply.gif[/img]{watched.WTOPICLASTPOSTAUTHOR}
      {watched.WTOPICLASTPOSTTIME}</span></td> 
      <td><input type="checkbox" name="unwatch[]" value="{watched.WTOPICID}"></td>
      </tr>
      
      <tr>
      <td colspan="6" align="center"><input type="submit" name="unwatch" value="Unwatch Marked" /></td>
      </tr>
      </table>
      </form>
      und hier die ucp_unwatch.php

      Code:
      var_dump($_POST);
      beim Absenden gibt er mit folgene Seite aus:

      http://localhost/phpbb2/ucp/ucp_unwa...Unwatch+Marked

      dazu Error 500

      Kommentar


      • #4
        Wenn du deine Daten mit "GET" übermittelst, kannst du natürlich nicht auf "$_POST" abfragen, sondern auf "$_GET" (oder "$_REQUEST" für alle). Ausserdem sehe ich, dass dein Submit-Button und die Checkbox den gleichen Namen haben. Und dann weiss ich nicht, warum du für eine einzelene Checkbox einen Array als Name angibst. Aber das nur so nebenbei.
        Gruss
        L

        Kommentar


        • #5
          es handelt sich hierbei insgesamt um eine Liste.
          das mit dme gleichen Namen habe ich mal korrigiert

          Kommentar

          Lädt...
          X