mark: Script -> alle Mails löschen lassen

hab n Mailboxscript, das einzeln löscht:

function del(id,box)
{

var agree_del = confirm("<?=$lang_del_msg?>");
if(agree_del==true) { document.location.href="?form=" + box + "&del=" + id +

"&<?=session_name();?>=<?=session_id()?>"; }

}

Doch, wenn ich alle auf einmal löschen will, wirds wohl schwieriger..
was muss man da ändern?
-> Box steht für EINGANG, und die ID für die jeweilige ID in der Datenbank
Wie könnte man das hinkriegen? denn er muss irgendwie ja dann jede ID finden.. Damit allein klappts sicherlich net:

function del_all(id,box)
{

var agree_del = confirm("Willst du wirklich alle Messages löschen?");
if(agree_del==true) { document.location.href="?form=" + box + "&del=" + id +

"&<?=session_name();?>=<?=session_id()?>"; }

}

das ist dann, was die inbox.php dann ausführt:

if($del){
mysql_query("DELETE FROM $message\_table WHERE id='$del' AND nick='$nick_var' LIMIT 1") OR die("Es ist ein Fehler aufgetreten!");
echo "<bgsound src="sound/recycle.wav" loop="1">";
echo "<center>". $font ."". $lang_del_msg ."!</center>";
}

danke!!
mfg MArk

  1. hallo mark,

    hab n Mailboxscript, das einzeln löscht

    ahem, hust ... es gibt in der Forums-FAQ unter http://forum.de.selfhtml.org/faq/#Q-05 auch den Hinweis, weshalb ein posting ohne Anrede als _sehr_ unhöflich empfunden wird.

    function del(id,box)

    Nett. Aber wie kommst du darauf, daß damit irgendetwas gelöscht werden könnte? Mit Javascript kannst du nichts dauerhaft auf dem Server verändern  -  also weder löschen noch neu schreiben.

    var agree_del = confirm("<?=$lang_del_msg?>");
    if(agree_del==true) { document.location.href="?form=" + box + "&del=" + id +
    "&<?=session_name();?>=<?=session_id()?>"; }

    Das ist ziemlich verwirrend, falls du das ernst meinst. Du willst per Javascript etwas ganz anderes aufrufen. Ja, das _kann_ man machen. Es ist bloß  -  naja, sagen wir mal, es ist ungewöhnlich. Und nicht sehr sinnvoll. Und auf die Art, wie du es vorgestellt hast, nicht realisierbar. Um das aber abschließend beurteilen zu können, sagt der von dir preisgegebene Code nicht genug. Da hast du noch mehr von.

    Doch, wenn ich alle auf einmal löschen will, wirds wohl schwieriger..
    was muss man da ändern?

    Die Informationspolitik solltest du ändern. Es sieht sehr danach aus, als ob du deutlich mehr als ein bißchen Javascript in Bewegung setzen möchtest.

    Grüße aus Berlin

    Christoph S.

  2. Hi Christoph!
    Tut mir leid, hatte es vielleicht zu kurz erwähnt:
    das Ganze wird ja dann umgeschrieben auf:

    if($del){
    mysql_query("DELETE FROM $message\_table WHERE id='$del' AND nick='$nick_var' LIMIT 1") OR die("Es ist ein Fehler aufgetreten!");
    echo "<bgsound src="sound/recycle.wav" loop="1">";
    echo "<center>". $font ."". $lang_del_msg ."!</center>";
    }

    welches dann in der Datenbank entsprechende Einträge löscht.

    Wobei die Datenbank so aussieht, dass es durchaus mehrere Spalten gibt, die eben verteilt sind.

    ID  NICK  TITLE  MESSAGE  ABSENDER  NEW  DATE
    5   hallo fffj   ggjhjf   tschüss   0    19.02.2005
    ...
    ...
    99  hallo ffh    djdjdj   genau     0    22.02.2005
    ...
    ...

    also vielleicht ein Befehl, der zu jedem NICK=$nick_var
    die Zeile komplett löscht?

    was bedeutet denn das LIMIT 1 im DELETE FROM Teil?

    Vielen Dank, Mark

  3. Morgen,

    es gibt, wie so oft, mehrere Lösungsansätze, die abhängig von der Konfiguration des Systems zum einsatz kommen können:

    Methode GET:

    Der QUERY_STRING, den Du in Deinem Script mit
        document.location.href="?form=" + box + "&del=" + id [+ ...]
        erstellst, kann für die spätere Scriptvariable $_GET['del']
        mehrere Werte enthalten. Im simpelsten Fall, wenn das Zeich-
        en "_" (ASII 95) nicht vorkommt, nimm dieses als Trenner und
        erstelle den Wert für var id im JavaScript des Dokumentes
        mittels einer Schleife.
        Aus Serverseite kannst Du diesen dann wieder mit explode()
        auflösen und ebenso in einer Schleife zum Löschen abarbeiten.

    Diese Methode wird auf einem Server durch die maximale Länge
        der "HTTP-Anfragezeile" (also der ersten Zeile des Request-
        Headers) beschränkt. Sie ist beim Apachen bspw. standardmä-
        ßig auf 8190 Byte.

    Methode POST:

    Hierbei wird nicht der QUERY_STRING durch das JavaScript er-
        weitert, sondern es wird ein Formularfeld (type=hidden) in
        gleicher Art der -Methode GET- gefüllt. Dabei wird das von
        Dir verwendete confirm() gegenstandslos, bzw. ersetzt durch
        das Betätigen des "Sende-Buttens". Dabei beträgt die stan-
        dardmäßige Größe immerhin 8 MB, die ausreichen sollten.

    mysql_query("DELETE FROM $message\_table WHERE id='$del' AND nick='$nick_var' LIMIT 1")

    Anzumerken bleibt, daß Du bei Deinem Script hoffentlich auf $del=$_GET['del']; zurüchgreifst...

    Gruß aus Berlin!
    eddi

    1. Servus!

      Aus Serverseite kannst Du diesen dann wieder mit explode()
          auflösen und ebenso in einer Schleife zum Löschen abarbeiten.

      damit kenn ich mich net soo aus, was schleifen betrifft.

      das Betätigen des "Sende-Buttens". Dabei beträgt die stan-
          dardmäßige Größe immerhin 8 MB, die ausreichen sollten.

      Das sollte eigentlich reichen, denn es sind maximal 20 Mails, und damit max 20x 3stellige Nummern ;)

      mysql_query("DELETE FROM $message\_table WHERE id='$del' AND nick='$nick_var' LIMIT 1")

      Was bedeutet denn nochma das LIMIT?
      Und dann muss ja dann ne Schleife enstehen wie

      for each id..

      für id=xxx
      mysql_query("DELETE FROM $message\_table WHERE id='xxx' AND nick='$nick_var' LIMIT 1")

      für id=yyy
      etc

      mfg Mark