TheOneAndOnly: Formularfeld über Schleife aufbauen

Also ich hab efolgendes Problem
Ich habe ein Nachrichtensystem geschaffen mit welchem man im Posteingang alle Mails angezeigt bekommt ... nun wollte ich per checkboxes noch die einzelnen Mails selektieren lassen und auf einmal löschen lassen

Das ganze funktioniert soweit ich die FORM komplett in der Schleife halte
da ich aber diesen ALLES LÖSCHEN Button jedoch nur einmal haben möchte muss ich sie nach der Schleife schließen
 egaal mehr dazu gleich ... hier erstmal der Code der die Tabelle aufbaut:

  
// Solange Mails im Array ... gib sie aus  
// Versteckte MailID Anzeigen Button LöschenButtpn Gelesen Von Betreff Sendedatum  
	while($mail = mysql_fetch_array($getMail)){  
?>  
		<form action="imail.php" method="post"> // hab versucht das vor der schleife auszugeben und die gesamte form danach zu schließen  
		<tr>  
			<input type="hidden" name="mail_id" value="<?php echo $mail['mail_id']; ?>" />  
			<td width="50" align="center"><input type="submit" name="mailAction" value="Anzeigen" /></td>  
			<td width="50" align="center"><input type="submit" name="mailAction" value="Loeschen" /></td>  
			<td width="60" style="padding-left: 5px"><?php echo $mail['status']; ?></td>  
			<td "style="padding-left: 5px"><?php echo $mail['UserFrom']; ?></td>  
			<td style="padding-left: 5px"><?php echo $mail['Subject']; ?></td>  
			<td style="padding-left: 5px"><?php echo $mail['SentDate']; ?></td>  
		</form>  
		<form action="imail.php" method="post">  
			<td align="center"><input type="checkbox" name="mailcheck[]" value="<?php echo $mail['mail_id']; ?>" /></td>  
			</tr>  
<?php  
	}  
?>  
	<tr style="border-top:1px solid black;">  
		<td></td><td></td><td></td><td></td><td></td><td></td>  
		<td align="center"><input type="submit" name="mailAction" value="Alle Loeschen"></td>  
	</tr>  
</form>  

Der erste Formblock war zuerst so formuliert das das öffnungs FORM vor der Schleife ausgegeben wurde und da /FORM danach,
mit dem Effekt das ich in dem HIDDEN INPUT immer nur die letzte ausgeführte $mail['mail_id'] übergeben bekommen hab
um das zu umgehen hab ich die FORMS einfach in die Schleife komplett mit eingebaut und mehre gleiche FORMS aufbauen lassen
womit das schonmal funktioniert hat

Jetzt wie gesagt will ich entweder wenn es irgendwie möglich is die CHECKBOXES in die alte Form integrieren sodass aber nur ein ALLES LÖSCHEN Button
ausgegeben wird Das habe ich nun vorerst so wie OBEN gelöst allerdings hab ich wieder das Problem nur die letzte $mail['mail_id'] übergeben zu bekommen und den ALLES LÖSCHEN BUTTON außerhalb der Form zu setzen funktioniert ja leider auch nicht

kann mir vielleicht einer helfen ... wär echt top THX schonmal
solange muss ich noch e bissel im Forum stöbern und einfach weiterprobieren

  1. Hi,

    	<form action="imail.php" method="post"> // hab versucht das vor der schleife auszugeben und die gesamte form danach zu schließen  
    
      <tr>
    
      
    Du erzeugst ungültigen HTML-Code - eine Tabelle darf kein FORM als Kindelement haben.  
      
    [Validiere](http://validator.w3.org/) deinen HTML-Code, den PHP erzeugt - und beseitige die Fehler.  
      
    MfG ChrisB  
      
    
    -- 
    RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
    
    1. Ja wo kann man das nachlesen wie und was ich an Codestruktur einzuhalten hab

      das mit dem Validator kenn ich ja ... mach ich sonst zum Schluss, wobei das
      jetzt mein erstes größeres Webprojekt werden soll

      Bin eher der Assembler, C++ Mensch und hab's erst seit ner Woche mit PHP und HTML

      1. Hello,

        Bin eher der Assembler, C++ Mensch und hab's erst seit ner Woche mit PHP und HTML

        Dann solltest Du ja daran gewöhnt sein, dass man manche Konventionen einhalten muss, andere einhalten sollte und die letzten selber für sich festlegen muss, damit man auch in zwanzig Jahren noch weiß, was man da gemeint hat...

        Liebe Grüße aus dem schönen Oberharz

        Tom vom Berg

        --
         ☻_
        /▌
        / \ Nur selber lernen macht schlau
        http://bergpost.annerschbarrich.de
        1. Ja ist klar, dennoch woher weiss ich das wenn ich das nirgends irgendwie zu hören bekomm,außer hier und in den ganzen Tutorials wird auch nicht wirklich auf sowas eingegangen!

      2. Sorry das Durcheinander hier ... schnall das eben erst mit dem Listen und Nested View ... hatte mich schon gewundert

        Also ne andere Variante kann ich das ganze mit der mail_id des hidden inputs versuchen so zu ersetzen

        <input type="submit" name="mailAction" id="<?php echo $mail['mail_id'] ?>" value="Anzeigen" /></td>

        und bei der Abfrage von $_POST['mailAction'] falls vorhanden
        $mail_id = $_POST['mailAction']['id'] zuweisen??
        Also vergesst die Formulierung der letzten Zeile ich hab grad kein Plan wie das ganze zu Formulieren wäre.

        Geht das ganze denn dann überhaupt da der name="mailAction" auch immer der gleiche wäre
        Oder müsste dann das ganze wieder als Array definiert werden name="mailAction[]"

        Ich bekomms gleich garnich mehr in den Kopf vielleicht hat ja einer von euch ne brauchbare Lösung für das ganze hier für mich!

        boa ... waasn Kram ich hätt mir doch en Buch kaufen sollen obwohl das am End auch net viel bringen würde

  2. Tach auch.

    [...]
    Jetzt wie gesagt will ich entweder wenn es irgendwie möglich is die CHECKBOXES in die alte Form integrieren sodass aber nur ein ALLES LÖSCHEN Button
    ausgegeben wird Das habe ich nun vorerst so wie OBEN gelöst allerdings hab ich wieder das Problem nur die letzte $mail['mail_id'] übergeben zu bekommen und den ALLES LÖSCHEN BUTTON außerhalb der Form zu setzen funktioniert ja leider auch nicht

    Ich schnall dein Problem nicht.
    In PHP bekommst du alle Parameter mit dem gleichen Namen als Array, wenn der Bezeichner im Formular mit '[]' endet (bzw. '[hier-ein-beliebiger-eindeutiger-index]'), also z.B. name='mail_id[]'. In $_GET/$_POST findest du dann den Eintrag $_GET['mail_id'] mit dem Typ array.

    Zum kaputten HTML wurde dir schon was gesagt.

    Bis die Tage,
    Matti

  3. So hab jetzt das Problem mit den Checkboxes über FIELDSET beseitigen können
    allerdings hab ich jetzt wieder das Problem wenn ich den BUTTON anzeigen oder den BUTTON löschen betätige zeigt er mir wieder nur den letzten Datensatz an obwohl ich ja bei dem HIDDEN INPUT auch eine mail_id als VALUE übergebe

    hier das neue Script

      
    <form action="imail.php" method="post">  
    <fieldset>  
    <?php  
    // Solange Mails im Array ... gib sie aus  
    // Versteckte MailID Anzeigen Button LöschenButtpn Gelesen Von Betreff Sendedatum  
    while($mail = mysql_fetch_array($getMail)){  
    ?>  
    	<tr>  
    		<input type="hidden" name="mail_id" value="<?php echo $mail['mail_id']; ?>" />  
    		<td width="50" align="center"><input type="submit" name="mailAction" value="Anzeigen" /></td>  
    		<td width="50" align="center"><input type="submit" name="mailAction" value="Loeschen" /></td>  
    		<td width="60" style="padding-left: 5px"><?php echo $mail['status']; ?></td>  
    		<td "style="padding-left: 5px"><?php echo $mail['UserFrom']; ?></td>  
    		<td style="padding-left: 5px"><?php echo $mail['Subject']; ?></td>  
    		<td style="padding-left: 5px"><?php echo $mail['SentDate']; ?></td>  
    		<td align="center"><input type="checkbox" name="mailcheck[]" value="<?php echo $mail['mail_id']; ?>" /></td>  
    	</tr>  
    <?php  
    }  
    ?>  
    <tr style="border-top:1px solid black;">  
    	<td></td><td></td><td></td><td></td><td></td><td></td>  
    	<td align="center"><input type="submit" name="mailAction" value="Alle Loeschen"></td>  
    </tr>  
    </fieldset>  
    </form>
    

    ich hole das ganze so:

    $mail_id = $_POST['mail_id'];  
    
    

    und hole mir den Datensatz dann einfach über ein MYSQL-Query
    Mir ist klar das ich wahrscheinlich irgendwie das gleiche machen muss wie bei meinen Checkboxes über ein mail_id[]-array
    oder muss ich das ganze wieder über ein FIELDSET Gruppieren???

    Ich versuchs mal weiter bis jemand was für mich hat!!!

    1. Hi,

      allerdings hab ich jetzt wieder das Problem wenn ich den BUTTON anzeigen oder den BUTTON löschen betätige zeigt er mir wieder nur den letzten Datensatz an obwohl ich ja bei dem HIDDEN INPUT auch eine mail_id als VALUE übergebe

      Das liegt daran, dass du immer den gleichen Namen verwendest - und PHP überschreibt gleichnamige Parameter, sofern man keine eckigen Klammern an den Namen anhängt - nur dann macht es ein Array mit allen übergebenen Werten daraus.

      Mir ist klar das ich wahrscheinlich irgendwie das gleiche machen muss wie bei meinen Checkboxes über ein mail_id[]-array

      Wenn du gleich über die Checkboxen die IDs als Value übergeben würdest, bräuchtest du gar keine hidden-Felder mehr. Mit letzteren hättest du sowieso das Problem, dass du *alle* Werte übergeben bekommst, unabhängig davon, ob der Nutzer das Feld zum Löschen auswählen wollte oder nicht.

      MfG ChrisB

      --
      RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
      1. Also ich hab das jetzt soweit geschnallt das ich dann im hidden input als array alle variablen übergeben bekommen würd, kann ich das ganze nun irgendwie auswerten so das ich weiss welcher id der zugehörige zu dem entsprechenden Submit button ist??

        Nochmal zur Verdeutlichung die Ausgabe Tabelle:

        Actions            Nachricht         checkbox
        -----------------------------------------------
        Ansehen Löschen    Nachricht1           []
        Ansehen Löschen    Nachricht2           []
        -----------------------------------------------
                                           Alle Löschen

        1. Hello,

          Also ich hab das jetzt soweit geschnallt das ich dann im hidden input als array alle variablen übergeben bekommen würd, kann ich das ganze nun irgendwie auswerten so das ich weiss welcher id der zugehörige zu dem entsprechenden Submit button ist??

          Nochmal zur Verdeutlichung die Ausgabe Tabelle:

          Actions            Nachricht         checkbox

          Ansehen Löschen    Nachricht1           []
          Ansehen Löschen    Nachricht2           []

          Alle Löschen

          Was für ein "hidden Input"?

          Liebe Grüße aus dem schönen Oberharz

          Tom vom Berg

          --
           ☻_
          /▌
          / \ Nur selber lernen macht schlau
          http://bergpost.annerschbarrich.de
          1. Nochmal zur Verdeutlichung die Ausgabe Tabelle komplett:

            mail_id(hidden)Actions            Nachricht         checkbox

            1          Ansehen Löschen    Nachricht1           []
               2          Ansehen Löschen    Nachricht2           []

            Alle Löschen

            wenn dann eine Zeile ein Formular ist funktioniert das mit dem Hidden Wert
            wenn ich ansehen oder löschen drücke

            Allerdings hab ich dann das Problem die checkboxes abzufragen
            da der Alle Löschen Button entweder ein neues Formular ist oder
            auf das vorherige zugreifen muss

            Ich könnte evtl 2 Tables aufbauen der eine mit dem ansehen und löschen
            in separaten Formularen Pro Zeile

            und den 2. table alle checkboxes und der Alle Löschen Button als formular

            ob ich das ganze dann auch noch aussehen lassen kann als wäre es 1 Formular bezweifel ich bei meinen beschränkten Kenntnissen

            1. Hello,

              Nochmal zur Verdeutlichung die Ausgabe Tabelle komplett:

              mail_id(hidden)Actions            Nachricht         checkbox

              1          Ansehen Löschen    Nachricht1           []
                 2          Ansehen Löschen    Nachricht2           []

              Alle Löschen

              wenn dann eine Zeile ein Formular ist funktioniert das mit dem Hidden Wert
              wenn ich ansehen oder löschen drücke

              Darum sollst Du ja auch keinen verwenden

              Lies Dir bitte https://forum.selfhtml.org/?t=200408&m=1350459 nochmal durch

              Liebe Grüße aus dem schönen Oberharz

              Tom vom Berg

              --
               ☻_
              /▌
              / \ Nur selber lernen macht schlau
              http://bergpost.annerschbarrich.de
        2. Moin!

          Den Hinweis zum "Alle Löschen"- Button habe ich hier gepostet.

          fehlen noch die Ansehen Löschen-Buttons

          Nochmal zur Verdeutlichung die Ausgabe Tabelle:

          Actions            Nachricht         checkbox

          Ansehen Löschen    Nachricht1           []
          Ansehen Löschen    Nachricht2           []

          Alle Löschen

          Verstecke die ID im Name des Submit-Bottons.

          <input type="submit" name="L_<?php echo $arMail['id']; ?>" value="Löschen">  
          <input type="submit" name="A_<?php echo $arMail['id']; ?>" value="Ansehen">
          

          Wenn Du dann den var_dump von $_REQUEST anschaust fällt Dir bestimmt was ein :)

          MFFG (Mit freundlich- friedfertigem Grinsen)

          fastix

    2. Hello,

      Matti Maekitalo hat eben schon "BAHNHOF" gesagt und ich hänge mich da mal ganz provokativ dran: "BAAAHNHOOOF".

      Bitte beschreibe in Deinen Worten

      • im Groben
        -- etwas feiner
        ---- detailliert

      was passieren soll.

      Ich nehme einfach mal an, dass Du aus einer Datenbanktabelle Daten ausliest.
      Diese Daten werden aufbereitet für die Anzeige im HTML-Browser.

      Wenn der User die Berechtigung für Änderungen der Anzeige oder der Daten hat, oder es mehrere Seiten gibt, wird diese Tabelle in ein Formular eingebunden, das passende Submit-Buttons für die gewünschte Aktion erhält.

      Wenn ein User die Berechtigung dazu hat, wird ihm zusätzlich eine Checkbox "Delete" pro Datensatz generiert und ein Butten "marktierte Sätze Löschen"

      Um dann beim Post zu wissen, welche Sätze gelöscht werden sollen, werden die Checkboxen als Array übertragen und sie erhalten die ID des Datensatzes als Value.

      <input type="checkbox" name="ctrl[delete][]" value="$id">

      Wenn jetzt ein Post am Server ankommt, kann das Script den User-Wunsch auswerten.

      if (isset($_POST['ctrl']['delete']) and is_array($_POST['ctrl']['delete']))
      {
          ## Arraywerte in Integers umwandeln (ID ist bei uns immer ein Int > 0)
          ## http://de3.php.net/manual/en/function.array-map.php
          $_POST['ctrl']['delete']) = array_map('intval', $_POST['ctrl']['delete']);

      ## Jetzt kontrollieren wir, ob wir dem User die DS mit den IDS überhaupt gesendet haben,
          ## sonst könnte der ja alles löschen, was ihm so einfällt.
          ## Dazu vergleichen wir ein Array in der Session mit den rückgesendeten IDs
          ## Das Array in der Session enthält nur die IDs der DS, die der User löschen darf.
          #####
          ## das solltest Du aber selber können
          #####

      ## nun bauen wir das Set für die MySQL-Abfrage auf
          ## <http://de3.php.net/manual/en/function.array-values.php)
          $delete_set = '(' . implode(',', $_POST['ctrl'>['delete']) .')';

      ## und nun können wird die Datenbankabfrage aan das Model übergeben

      $success = delete($varified_username, $table, $delete_set);
      }

      für mich hat!!!
      Liebe Grüße aus dem schönen Oberharz

      Tom vom Berg

      --
       ☻_
      /▌
      / \ Nur selber lernen macht schlau
      http://bergpost.annerschbarrich.de
  4. so das ganze hab ich jetzt mal soweit das ich ein fieldset drumrum setze und die form vor der schleife öffne und danach wieder schließe und ich bekomme das mit den checkboxes hin

    Allerdings geht dann das ganze mit den ansehen und löschen buttons nichtmehr
    da der input hidden dann immer nur die letzte mail_id enthält

    das formular verschachteln geht ja anscheinend nicht also müsste ich das ganze wieder so aussehen lassen das die while-schleife je ein separates formular erzeugt like
    while... {
     <form>
        ...
     </form>
    }

    allerdings besteht dann wieder das Problem das ich den einzelnen Button der unter der ganzen Tabelle stehen soll und deshalb nur einmal vorhanden sein soll sowie die Checkboxes auswerten soll nichtmehr funktioniert da ich selbst wenn ich ein neues Formular separat nach der schleife definiere die Werte der Checkboxes nichtmehr mitsende

    was kann man da bloß tuen????

    Hab jetzt glaub ich bald alle möglichkeiten genutzt ... und immer bekomm ich es soweit hin das entweder das eine funktioniert oder das andere

    Eine Möglichkeit wäre noch, wenn ich jetzt das input hidden feld als array setze wie bekomm ich dann heraus bei welcher Mail_ID aus dem array ansehen oder löschen gedrückt wurde???

    thx schonma im Vorraus

    1. Hello,

      allerdings besteht dann wieder das Problem [...]

      Das einzige Problem, das Du hier hast, lautet "kein Plan". :-)

      Also mach Dir einen Plan.
      Dazu habe ich Dich schon in https://forum.selfhtml.org/?t=200408&m=1350459 aufgefordert. Bitte empfinde die Aufforderung zum Ausformulieren deiner Anforderungen nicht als Kinderkram, sondern nimm den Rat bitte an.

      Als nächstes kannst Du Dir dann z.B. per Metachart (also mit kleinen bunten Kärtchen auf einer großen Wand) Übersicht über die unterschiedlichen Screens und die dazwischenliegenden Scripte machen.

      So wird nach und nach ein Programm im Webumfeld (Client-Server-Appliaktion) daraus.

      Liebe Grüße aus dem schönen Oberharz

      Tom vom Berg

      --
       ☻_
      /▌
      / \ Nur selber lernen macht schlau
      http://bergpost.annerschbarrich.de
    2. Moin!

      Eine Tabelle, ein Formular. Und eigentlich ist es ganz einfach.

      nehmen wir mal an, Du hast die Mails in einem Array $arMails mit je einem Hash. Die eindeutige Kennung ist im Hash mit dem Key 'id', das Subject im Hash mit der Kennung 'subject':

      $arMails sei also:
      [0]-> Array (id->1012; subject->'Kaufe Viagra!'
      [1]-> Array (id->1013; subject->'Aktie nur heute billig!'
      ...

      <form ...>  
      <table>  
      <tr><th>&nbsp;</th><th>Subjekt</th></tr>  
        
      <?php  
      $i= -1;  
      foreach  ($arMails as $arMail) { ?>  
      <tr>  
      <td><input type="checkbox" id="M<php ++$i; ?>" value="arMails['<php echo $arMail['id']; ?>']"></td>  
      <td><?php echo htmlentities($arMail['subject']); ?></td>  
      </tr>  
      <?php } #next arMails ?>  
        
      </table>  
        
      <input type='submit' name='aktion' value='Löschen' /><input type='submit' name='aktion' value='Spam' />  
      <input type="hidden" name="lastCheckbox" value="<?php echo $i; ?>" />  
      </form>
      

      Wird jetzt auf "Löschen" oder "Spam" geklickt, dann bekommst Du folgende Daten in $_REQUEST:

      1. das Array mit den IDs der ausgewählten Mails (als Values)
      2. mit dem Key action die auszuführende Aktion.

      Den Checkboxen habe ich eine fortlaufende ID verbraten, damit Du mittels dreier weiterer Buttons, Javascript und onclick schön durchhoppeln und alle Mails markieren, alle Markierungen aufheben oder alle Markierung toggeln lassen kannst.

      Der Code ist "hingerotzt". Erwarte nicht, das dieser fehlerfrei funktioniert oder valides html abliefert: Es geht um die Vorgehensweise.

      MFFG (Mit freundlich- friedfertigem Grinsen)

      fastix

  5. Hi!

    Also ich hab efolgendes Problem

    Eigentlich hast du ein Problem mit deinem HTML. Lass mal PHP und die Schleife zunächst außen vor und erstell eine statische Seite mit drei Mails. Du musst dir erst einmel im Klaren sein, dass eine Tabelle quasi eine festgelegte Struktur ist und nicht durch andere Elemente unterbrochen werden darf. Entweder sind diese außerhalb von <table>...</table> unterzubringen oder vollständig in einem der <td>...</td>.

    Da du deine zu einer Mail gehörigen Formularelemente in eigenen Zellen unterbringst, kann das Formular selbst nur außerhalb der Tabelle stehen und muss diese also im Ganzen einschließen. Das heißt nun, dass du nur ein einziges Formular hast, aber viele Mails behandeln willst, und du die zu einer Mail gehörigen Formularelemente nur über spezifische Eigenheiten in deren Namen wiedererkennen und damit voneinander unterscheiden kannst. Du brauchst ein Konzept, wie du die Namen so gestaltest, dass du daraus die Zugehörigkeit zu einer bestimmten Mail lesen kannst.

    Nur die Inputs ohne Tabellenzellen drumherum könnte das so aussehen:

    <input type="submit" name="anzeigen[23]" value="Anzeigen" />
      <input type="submit" name="loeschen[23]" value="Loeschen" />
      <input type="checkbox" name="markiert[23]" value="irgendwas" />

    eine andere Zeile

    <input type="submit" name="anzeigen[42]" value="Anzeigen" />
      <input type="submit" name="loeschen[42]" value="Loeschen" />
      <input type="checkbox" name="markiert[42]" value="irgendwas" />

    und zum Schluss noch

    <input type="submit" name="alle_loeschen" value="Alle Loeschen">

    Du vergibst also in Klammern die ID der Mail. Dann schaust du dir mal an, was bei PHP ankommt, einmal wenn einer der einzelnen Buttons betätigt wird, und einmal, wenn Checkboxen markiert sind und der alle_loeschen geklickt wurde. Du kannst das sehen, indem du das Formular an eine PHP-Datei schickst, die dir nur (vornan ein <pre> für die Übersichtlichkeit und) das Ergebnis von print_r($_POST) oder var_dump($_POST) anzeigt.

    Zu sehen sollte sein, dass $_POST['anzeigen'] oder $_POST['loeschen'] vorhanden ist und ein Array mit einem einzigen Element ist, dessen Key die Mail-ID ist. Und im anderen Versuch siehst du, dass $_POST['alle_loeschen'] vorhanden ist sowie $_POST['markiert'], welches ein Array ist, dessen Keys dich interessieren.

    Das ist erstmal ein Zwischenschritt: eine statische Seite und das genannte Ergebnis beim Absenden. Wenn du das soweit hinbekommen hast und auch der Validator nichts zu beanstanden hat, kannst du nun versuchen, die eigentliche Seite mit PHP und nach dem Vorbild der statischen zu erzeugen. Ist das entstandene HTML immer noch valide und das Ergebnis wie beschrieben? Wenn du nun noch nicht weißt, wie man die Keys bekommt, schau dir die Funktionen key() und array_keys() an.

    Lo!

    1. Ja super hat mir sehr geholfen ... ich hoffe ihr haltet mich hier nicht für zu
       schwachsinnig das ich solche Fragen stelle, wie gesagt hab's mit php erst ne Woche ... is noch net so ganz mein Ding

      Was anderes vielleicht weisst du wo ich irgendwie nachlesen kann wie ich die
      Codestruktur von html aufbauen muss damit das ganze valide ist???

      1. Mahlzeit TheOneAndOnly,

        Was anderes vielleicht weisst du wo ich irgendwie nachlesen kann wie ich die
        Codestruktur von html aufbauen muss damit das ganze valide ist???

        Grundlagen zu HTML und der entsprechenden Struktur findest Du bei http://de.selfhtml.org/html/allgemein/index.htm@title=SELFHTML. Überprüfen kannst Du Deinen Code mittels des Validators.

        MfG,
        EKKi

        --
        sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|