backbone: mehrer checkbox´s "verarbeiten"

alloa he leutz,

mal ne frage zu php.

also in bin gerade bei ein messagesystem zu proggen. nun wollte ich das so machen das die nachrichten aufgelistet werden und am ende der liste eine checkbox (je nachricht eine). wenn man zum bsp nicht alle löschen möchte sondern nur 3 stück dann markiert man diese (häckchen in die checkbox) und klickt auf delet. nun mein problem: wie verarbeite ich die checkboxes. also jede checkbox hat als variable die message-id. nur hab ich keinen blassen schimmer wie ich die verarbeiten soll.

die nachrichten stehen in ner mysql-db und löschen wollte ich das so:

$delete_befehl = "DELETE from nachrict WHERE magid='$msgid'";
$message_delete = mysql_query($delete_befehle);

plz help me

  1. wie verarbeite ich die checkboxes. also jede checkbox hat als variable die message-id. nur hab ich keinen blassen schimmer wie ich die verarbeiten soll.

    Ruf in der Zielseite des Formulars die Funktion phpinfo(INFO_VARIABLES); auf. Da sind alle <input>-Elemente aufgelistet mit Namen und Wert aufgelistet; die weitere Verarbeitung sollte daraus ersichtlich sein.

    Gruß,
      soenk.e

    1. okay, hab das gemacht was du gesagt hast und dann steht da: _POST
      ["del"] | on. aber ich hab alle 3 nachrichten angeklickt. wie mach
      ich das jetzt das ich sehe welche msgid´s makiert sind un welche
      nicht?

      1. okay, hab das gemacht was du gesagt hast und dann steht da: _POST
        ["del"] | on. aber ich hab alle 3 nachrichten angeklickt.

        Wenn Du alle drei angeklickt hast und in $_POST keines auftaucht, dann hast Du irgendetwas im HTML-Code falsch gemacht. Hast Du den Elementen Namen gegeben? Das Attribut value alleine reicht nicht! Alle checkbox-Elemente können auch den gleichen Namen erhalten, wenn er auf [] endet, siehe Tobias' Hinweis.

        Setze eventuell nochmal Deinen HTML-Code hier rein.

        Gruß,
          soenk.e

        1. okay, ich bekomme das von selfhtml nich umgeschrieben. also kommt jetzt hier mal der code der ganzen datei wo ich versucht hab das umzuschreiben.

          <?php

          include('db_connect.php');
          include('over.inc.php');

          if (isset($uName) && isset($uPwd)) {

          $nachrichten_anz = mysql_num_rows($message_get);
          if( $nachrichten_anz == 0){echo"<p>keine nachrichten</p>";}else{

          if ($delete == 'yes') {

          $sent     = $_GET['sent'];
              $msgid_mysql   = $_GET['msgid_t'];

          mysql_query("DELETE from nachrict WHERE '$msgid_mysql'"); echo"gelöscht";

          }else{

          echo"
          <html>
          <head>
          <title>Hauptmenü</title>
          </head>
          <body>
          <form action="$PHP_SELF">
          <table border="1";>
          <tr><td><p><b>Message-ID</b></p></td><td><b>Erstellt von</b></td><td><p><b>Betreff</b></p></td><td><p><b>Nachricht vom:</b></p></td><td><p>Löschen</p></tr>
          <input type="hidden" name="delete" value="yes">";

          while($message_array  = mysql_fetch_array($message_get)){

          echo"<tr><td><p>$message_array[msgid]</p></td><td><p>$message_array[edit_by]</p></td><td><a href="show.phtml?msgid=$message_array[msgid]">$message_array[betreff]</a></td><td align="center"><p>$message_array[edit_date]</p></td></td><td><input type="checkbox" name="msgid_t[]" values="msgid=$message_array[msgid]"></tr>";
          }

          echo"
          <tr><td><input type="submit" value="nachrichten löschen"></td></tr>
          </table>
          </form>
          </body>
          </html>
          ";}}}

          else {echo "<html><head><title>log off</title></head><body><p>nicht eingelogt</p></body></html>";}

          ?>

          1. Hallo backbone,

            if (isset($uName) && isset($uPwd)) {

            was machst du wenn $uName und $uPwd nur gesetzt sind, aber keinen Inhalt haben? (ob register_globals bei dir auf off steht weiß ich nicht)

            $msgid_mysql   = $_GET['msgid_t'];

            damit ist $msgid_mysql ein Array

            mysql_query("DELETE from nachrict WHERE '$msgid_mysql'");

            schreib das "DELETE from..."-Zeug mal in eine Variable, und binde die dann in die Funktion ein, dann kannst du nämlich dir die Variable mal ausgeben lassen, um zu sehen, was da eigentlich drinsteht.

            echo"gelöscht";

            woher willst du wissen, dass die Aktion erfolgreich war?

            <form action="$PHP_SELF">

            besser $_SERVER["PHP_SELF"]

            <input type="checkbox" name="msgid_t[]" values="msgid=$message_array[msgid]">

            hiermit erhälst du für values (es heißt übrigends value ohne 's') "msgid=1" (wobei die 1 für eine beliebige Zahl steht) ich vermute aber mal, dass als value nur die msgid brauchst.

            für dein WHERE brauchst du also etwa sowas:
            $ids = implode("OR msgid=",$_GET["msgid_t"]);
            $ids .= "msgid=".$ids;
            $dbloeschanfrage = "...WHERE $ids"
            wobei msgid die Spalte ist, in der die msgids stehen (wer hätte es gedacht :-)) und $dbloeschanfrage die Variable, die dann an mysql_query() übergeben wird. Allerdings weiß ich nicht, ob das funktioniert (am besten solltest du dir das ganze mal ausgeben lassen, um zu sehen, wie es aussieht - aussehen sollte es etwa so: "WHERE msgid=1 OR msgid=2 OR msgid=3"). aus dem value="" der checkbox musst du natürlich das "msgid=" rauswerfen.
            Wobei du auch das drinlassen kannst, und einfach
            $dbloeschanfrage = implode(" OR ",$_GET["msgid_t"])
            schreiben (das ist mir gerade eingefallen, als ich das ganze andere schon geschrieben hatte :-))

            ";}}}

            du solltest dir vielleicht angewöhnen, deinen Code je nach verschachtelungstiefe einzurücken, dann bleibt er besser lesbar.

            Grüße aus dem verschneiten Nürnberg
            Tobias [der hofft, dass das ganze jetzt nicht zu verwirrend ist :-)]

  2. Hallo backbone,

    wenn man zum bsp nicht alle löschen möchte sondern nur 3 stück dann markiert man diese (häckchen in die checkbox) und klickt auf delet. nun mein problem: wie verarbeite ich die checkboxes. also jede checkbox hat als variable die message-id.

    ich glaube, da könnte dir http://aktuell.de.selfhtml.org/tippstricks/php/checkboxen/index.htm helfen. Wenn du es nicht hinbekommst frag halt noch mal.

    Grüße aus dem verschneiten Nürnberg
    Tobias

  3. Hallo!

    nur hab ich keinen blassen schimmer wie ich die verarbeiten soll.

    Dann lies am besten mal folgendes Kapitel in php-faq.de:

    10.10. Wie kann man Checkboxen verarbeiten?
    http://www.dclp-faq.de/q/q-formular-checkbox.html

    Grüße
    Andreas