bulldoge: PHP und JAVASCRIPT Formular

Hallo,

sicherlich kennt Ihr das Skript von Patrick Canterino, womit man Formmails versenden kann.

http://aktuell.de.selfhtml.org/artikel/php/form-mail/

meine Frage ist nun, ob man damit auch eine gesamte Zeile, so wie sie in der Tabelle erscheint auch versenden.

Kurz gesagt: die Email soll genau das gleiche Tabellenlayout enhalten (alles schön nebeneinander und untereinander).

Bzw. kann man den gesamten Inhalt eines div-container versenden?

Viele Grüße
bulldoge

  1. hi,

    sicherlich kennt Ihr das Skript von Patrick Canterino, womit man Formmails versenden kann.

    Joa.

    meine Frage ist nun, ob man damit auch eine gesamte Zeile, so wie sie in der Tabelle erscheint auch versenden.

    Was hast du versucht oder besser, hast du es überhaupt schon ausprobiert?

    Bzw. kann man den gesamten Inhalt eines div-container versenden?

    Klar, nur in diesem Fall heißt „div-container“ „textarea“.

    Was hast du bisher unternommen? Ein bisschen Code wäre hier hilfreich.

    mfg

    1. Hallo,

      naja ich habe das Skript so für mich weiterbearbeitet und eine tabelle hinzugefügt. den einzelnen elementen (sei es textfelder oder checkboxen) habe ich name's zugeordnet und damit eine abfrage gestartet ob die pflichtfelder ausgefüllt sind oder nicht, wenn ja wurde es an mich versendet.

      dann habe ich in der email festgestellt, dass die einträge untereinander sind. daraufhin kam mir die idee das ich in die zeilen der tabelle das attribut name="zeileeins" usw. hinzufüge, weil ich halt dachte, dass mir die tabelle in dem layout gesendet wird wie es auf der seite ist. aber es war nicht der fall.

      der code ist ja der gleiche wie hier:

      http://aktuell.de.selfhtml.org/artikel/php/form-mail/

      nur das ich, wie oben beschrieben ist die zeilen so da stehen hatte:

      <td name="zeileeins">

      Achso:

      Klar, nur in diesem Fall heißt „div-container“ „textarea“.

      ich weiß nicht ob es mit textarea klappen würde. da ich schon gerne die tabellenform beibehalten möchte.

      viele grüße
      bulldoge

      1. hi,

        dann habe ich in der email festgestellt, dass die einträge untereinander sind. daraufhin kam mir die idee das ich in die zeilen der tabelle das attribut name="zeileeins" usw. hinzufüge, weil ich halt dachte, dass mir die tabelle in dem layout gesendet wird wie es auf der seite ist. aber es war nicht der fall.

        Das verstehe ich jetzt nicht, was meinst du mit untereinander? Ich hab mir gerade eine Mail geschickt, geöffnet in Outlook Express, Ergebnis:

        IP: **.***.***.*** | Browser: Bundestrojaner_1.4
        Name: Malcolm
        Nachname: Beck`s
        Email: d***_***@d*-***.de
        Unternehmen: Bonze
        Radiotest: nein
        Strasse: Selfstr.
        Hausnummer: 999
        Postleitzahl: 45321
        Stadt: Lüdinghausen
        Telefon: 123
        Telefax: 456
        Mobil: 789
        Betreff: Test
        Anliegen: Sonstiges
        Nachricht: Teste Formmailer

        So kommen die Mails bei mir an, (default -- Eingaben werden der reihe nach abgearbeitet), wie soll dass von dir gewünschte Resultat aussehen?

        nur das ich, wie oben beschrieben ist die zeilen so da stehen hatte:
        <td name="zeileeins">

        Das wird dir nichts bringen, die Tabelle hat mit dem Mail-versand nichts zutun, wenn, dann müsstest du die $_POST array vor dem versand in eine Tabelle packen.

        Also in dem verlinkten Code an der Stelle:

        if($_POST)// ... ganz Grob geschnitzt  
         $strMailtext = '<table>';  
          {  
            $strMailtext .= '<th>'.$strName.'</th><td>'.$strDelimiter.$value_array."</td>\n";  
           }  
          }  
          else  
          {  
           $strMailtext .= '<th>'.$strName.'</th><td>'.$strDelimiter.$value_array."</td>\n";  
          
        $strMailtext .= '</table>';  
        // ...  
        mailsenden();  
        }
        

        ich weiß nicht ob es mit textarea klappen würde. da ich schon gerne die tabellenform beibehalten möchte.

        Was soll dass denn für ein Formular werden? Irgendwo muss doch der Text herkommen, also <input type="text"> oder <textarea>, wie funktioniert das mit einem div?

        mfg

        1. Hallo,

          tut mir leid, das ich dir verwirrt habe.

          IP: **.***.***.*** | Browser: Bundestrojaner_1.4
          Name: Malcolm
          Nachname: Beck`s
          Email: d***_***@d*-***.de
          Unternehmen: Bonze
          Radiotest: nein
          Strasse: Selfstr.
          Hausnummer: 999
          Postleitzahl: 45321
          Stadt: Lüdinghausen
          Telefon: 123
          Telefax: 456
          Mobil: 789
          Betreff: Test
          Anliegen: Sonstiges
          Nachricht: Teste Formmailer

          genau, so werden die Emails bei mir auch versendet, aber das was ich will ist folgendens:

          Name:           Nachname:            Email:              Strasse:
          -----------------------------------------------------------------
          XYZ             ZYYYY                email@email.de      irgendeinestrasse
          AAA             BBB                  CCC                 DDD
          ASS             ASDSAD               ASDFDDASF           ASDASD

          naja, ich hoffe du verstehst damit was ich meine.

          viele grüße
          bulldoge

          1. hi,

            tut mir leid, das ich dir verwirrt habe.

            Ach, kein Problem, dass passiert mir auch immer wieder, eine Problembeschreibung will gelernt sein.

            aber das was ich will ist folgendens:

            Name:           Nachname:            Email:              Strasse:

            XYZ             ZYYYY                email@email.de      irgendeinestrasse
            AAA             BBB                  CCC                 DDD
            ASS             ASDSAD               ASDFDDASF           ASDASD

            Dann musst du ja jede E-Mail irgendwo speichern, hier würde sich eine Datenbank eignen, aber wofür?
            Dein Mail-Client speichert deine ankommenden Mails ja bereits.

            Lass uns doch erstmal klären, was dass Ziel des Formulares ist, was soll es machen? Dient es nur der Kontaktaufnahme oder steckt da mehr dahinter?

            Generell kannst du den Inhalt der E-Mail ja wie bereits erwähnt vor dem absenden zusammenbauen:

              
             /* $strMailtext beinhaltet den Inhalt der Mail */  
             $strMailtext .= '<th>'.$strName.'</th><td>'.$value_array.'</td>';  
            
            

            Um jetzt das zu erreichen, was du möchtest, müsstest du das $_POST-Array selber abarbeiten, in dem verlinkten Artikel wird es ja in einer Schleife automatisiert erledigt.
            Ich weiss nicht wie Fit du in der Hinsicht bist.

            mfg

            1. Hallo Malcom,

              sehr nett, dass du dir zeit nimmst.

              ja, es steckt bisschen mehr dahinter. undzwar wenn du es genauer wissen willst:

              www.csw-gmbh.de/dunnwaldbestellen.php

              Die Email, die bei mir ankommt, sollte dann auch so aussehen wie die Tabelle, also:

              Art-Nr.:         Artikelbeschreibung        Menge     EUR/St.       Preis
              -------------------------------------------------------------------------
              000-0001         blabla                     100       9,90         990,00
              blabla           blabla                     blabla    blabla       blabla
              blabla           blabla                     blabla    blabla       blabla
              blabla           blabla                     blabla    blabla       blabla

              ist etwas übersichtlicher als die sachen alle untereinander zu erhalten.
              ich hoffe du weißt mir weiterzuhelfen. Du kannst Dir auch den Code gerne dazu angucken, vielleicht kannst du mir ein tip geben, wie ich es besser machen soll.

              Achso, nicht das du denkst, dass ich es kommerziell mache, es ist für mein chef, er hatte mir mal vor 4 wochen oder so den auftrag gegeben dass ich mal unsere homepage erneuere, vorher hatten wir sowas nicht und sah auch echt schlecht aus. jetzt sieht es zwar bisschen besser aus, aber siehst ja, dass es nicht professionell gemacht wurde. habe ja nur bisschen kenntnisse in html, css und etwas javascript.

              noch eine frage, würde folgendes gehen:

                
              $strMailtext .= '<tr><td>'Artikel-Nr'</td><td>'Artikelbesch'</td></tr>';  
              $strMailtext .= '<tr><td>'$stran1'</td><td>'strab1'</td></tr>';  
              
              

              viele grüße
              bulldoge

              1. hi bulldoge,

                www.csw-gmbh.de/dunnwaldbestellen.php

                Die Email, die bei mir ankommt, sollte dann auch so aussehen wie die Tabelle, also:
                Art-Nr.:         Artikelbeschreibung        Menge     EUR/St.       Preis

                000-0001         blabla                     100       9,90         990,00
                blabla           blabla                     blabla    blabla       blabla
                blabla           blabla                     blabla    blabla       blabla
                blabla           blabla                     blabla    blabla       blabla

                ist etwas übersichtlicher als die sachen alle untereinander zu erhalten.
                ich hoffe du weißt mir weiterzuhelfen.

                Ja, hier wird es kompliziert. Du möchtest dir ein Warenkorbsystem basteln, dass geht über mein können hinaus, Sorry.
                So mit nebenbei mal eben machen wird das nichts, hier muss Programmiert werden, viel Programmiert werden, Sauber Programmiert werden.

                Mach es dir nicht unnötiger Weise schwerer als es ist, Felix sein Shop.

                Du kannst Dir auch den Code gerne dazu angucken, vielleicht kannst du mir ein tip geben, wie ich es besser machen soll.

                Zuviel Javascript und zu viele Tabellen. Du solltest dir diese Seite Bookmarken, am besten gleich mal testen.

                Achso, nicht das du denkst, dass ich es kommerziell mache,

                Ach, kein Problem, ich mach es auch nicht kommerziell, krieg nur manchmal was dafür.

                noch eine frage, würde folgendes gehen:

                $strMailtext .= '<tr><td>'Artikel-Nr'</td><td>'Artikelbesch'</td></tr>';
                $strMailtext .= '<tr><td>'$stran1'</td><td>'strab1'</td></tr>';

                  
                Nein, du hättest in jeder Zeile  
                `<tr><td>'Artikel-Nr'</td><td>'Artikelbesch'</td></tr>`{:.language-html}  
                  
                mfg  
                
                -- 
                [I have a Dream...](http://www.myvideo.de/watch/2503116/I_have_a_dream_Will_I_AM_feat_Common)  
                
                
                1. hallo,

                  ich wollte nochmals nachfragen, wie ich aus ein php skript heraus auf elemente im html zugreifen kann, z.b. auf die ID oder NAME attribute.

                  ich möchte mit strMailtext etwas spielen, vielleicht komme ich so darauf.

                  achso warum ist denn ein punkt vor dem gleichheitszeichen?

                  ist so ähnlich wie per definition?

                  gruß
                  bulldoge

                  1. hi,

                    ich wollte nochmals nachfragen, wie ich aus ein php skript heraus auf elemente im html zugreifen kann, z.b. auf die ID oder NAME attribute.

                    In deinem Fall, wo du ein Formular verwendest, kannst du über das $_POST-Array  drauf zugreifen, also beispielsweise:

                    <form method="post">  
                      
                      <input type="text" name="Artikel" />  
                      <input type="submit">  
                      
                    </form>
                    
                    <?php  
                    if($_POST) {  
                     echo [link:http://www.php.net/htmlspecialchars@title=htmlspecialchars]($_POST['Artikel']);  
                    }  
                    ?>
                    

                    In diesem Beispiel ist der Inhalt von Artikel in $_POST['Artikel'].

                    achso warum ist denn ein punkt vor dem gleichheitszeichen?
                    ist so ähnlich wie per definition?

                    Ich weiss nicht, wie das heisst.

                    Nehmen wir an, du hast die Variable:

                    $strMailtext = 'artikel_1';  
                    $strMailtext = 'artikel_2';  
                    $strMailtext = 'artikel_3';  
                      
                    echo $strMailtext;
                    

                    Ergebnis: artikel_3

                    Wenn du jetzt aber ein Punkt vor das gleichheitszeichen setzt:

                    $strMailtext = 'artikel_1';  
                    $strMailtext .= 'artikel_2';  
                    $strMailtext .= 'artikel_3';  
                      
                    echo $strMailtext;
                    

                    Ergebnis: artikel_1artikel_2artikel_3

                    mfg

                    1. Mahlzeit Malcolm Beck´s,

                      achso warum ist denn ein punkt vor dem gleichheitszeichen?
                      ist so ähnlich wie per definition?

                      Ich weiss nicht, wie das heisst.

                      Wie wär's mit "Vereinigungs-Operator"?

                      MfG,
                      EKKi

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

                        Ich weiss nicht, wie das heisst.

                        Wie wär's mit "Vereinigungs-Operator"?

                        Klingt gut :) Danke.

                        mfg

                        1. hi leute,

                          bin so glücklich, dass ich euch mitteilen kann, dass ich es geschafft habe die ganze s******* in tabellen form in der email zu bringen: der code sieht so aus:

                            
                          $strMailtext .= "Artikel-Nr.        Artikelbeschreibung             Preis  
                                           --------------------------------------------------------  
                             $_POST[Artikel1]   $_POST[Beschreibung1]  $_POST[Preis1]  
                             $_POST[Artikel2]   $_POST[Beschreibung2]  $_POST[Preis2]  
                             $_POST[Artikel3]   $_POST[Beschreibung3]  $_POST[Preis3]  
                             $_POST[Artikel4]   $_POST[Beschreibung4]  $_POST[Preis4]  
                                           usw.  
                                          ";  
                          
                          

                          Danach habe ich

                            
                          $strMailtext .= $strName.$strDelimiter.$value_array."\n";  
                          
                          

                          so umgeschrieben:

                            
                          $strMailtext .= "";  
                          
                          

                          und das gleiche mit

                            
                          $strMailtext .= $strName.$strDelimiter.$value."\n";  
                          
                          

                          in

                            
                          $strMailtext .= "";  
                          
                          

                          tausend dank dir malcom, war schon sowas an verzweifeln.

                          Eine sache hätte ich aber noch: wie bekomme ich es hin, dass zum beispiel $_POST[Artikel1] genau, sagen wir mal 8 zeichenlänge enthalten soll und der zwischenraum zwischen $_POST[Artikel1] und $_POST[Beschreibung1] zum beispiel 5 leerzeichen.

                          Einfach leerzeichen eingeben funzt nicht.

                          NOCHMAL TAUSEND DANK MALCOM :-)

                          Viele grüße
                          bulldoge.

                          1. hi,

                            $strMailtext .= "Artikel-Nr.        Artikelbeschreibung             Preis
                                             --------------------------------------------------------
                               $_POST[Artikel1]   $_POST[Beschreibung1]  $_POST[Preis1]
                               $_POST[Artikel2]   $_POST[Beschreibung2]  $_POST[Preis2]
                               $_POST[Artikel3]   $_POST[Beschreibung3]  $_POST[Preis3]
                               $_POST[Artikel4]   $_POST[Beschreibung4]  $_POST[Preis4]
                                             usw.
                                            ";

                              
                            
                            > tausend dank dir malcom, war schon sowas an verzweifeln.  
                              
                            Gern geschehen, wobei ich mich noch frage, warum du nicht das Beispiel von [Auge](https://forum.selfhtml.org/?t=175661&m=1155161) durchkaust, das würde dir in deinem Problem viel behilflicher sein.  
                            Ok, vielleich würde es ein Paar Tage dauern, bis du durchsteigst, hättest aber eine Menge mehr gelernt.  
                              
                            
                            > Eine sache hätte ich aber noch: wie bekomme ich es hin, dass zum beispiel $\_POST[Artikel1] genau, sagen wir mal 8 zeichenlänge enthalten soll und der zwischenraum zwischen $\_POST[Artikel1] und $\_POST[Beschreibung1] zum beispiel 5 leerzeichen.  
                              
                            `"\t\t$_POST[Artikel1]\t$_POST[Beschreibung1]"`{:.language-php}, wie oder Besser mit welchen Hilfsmitteln liest du die Mail aus?  
                              
                            Eventuell könntest du es mit `[link:http://de.selfhtml.org/html/text/zeilenumbruch.htm#geschuetzte_leerzeichen@title=&nbsp;]`{:.language-html}[1] probieren.  
                              
                            mfg  
                            [1] 5 st. = `&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`{:.language-html}
                            
                            -- 
                            [I have a Dream...](http://www.myvideo.de/watch/2503116/I_have_a_dream_Will_I_AM_feat_Common)  
                            
                            
                            1. Hallo

                              ... wie bekomme ich es hin, dass zum beispiel $_POST[Artikel1] genau, sagen wir mal 8 zeichenlänge enthalten soll und der zwischenraum zwischen $_POST[Artikel1] und $_POST[Beschreibung1] zum beispiel 5 leerzeichen.

                              Eventuell könntest du es mit [link:http://de.selfhtml.org/html/text/zeilenumbruch.htm#geschuetzte_leerzeichen@title=&nbsp;][1] probieren.

                              Bei einer Nurtextemail? Wie heißt es doch so schön: "Immer dem Kontext entsprechend maskieren!". ;-)

                              Tschö, Auge

                              --
                              Die deutschen Interessen werden am Liechtenstein verteidigt.
                              Veranstaltungsdatenbank Vdb 0.2
                              1. hi,

                                Eventuell könntest du es mit [link:http://de.selfhtml.org/html/text/zeilenumbruch.htm#geschuetzte_leerzeichen@title=&nbsp;][1] probieren.
                                Bei einer Nurtextemail? Wie heißt es doch so schön: "Immer dem Kontext entsprechend maskieren!". ;-)

                                Gibt es auch mailspecialchars();?  ;)

                                Laut OP funktionieren nur Leerzeichen nicht, daher greift meine Devise, alles probieren, bis funzt[TM] :)

                                Und wenn nichts mehr geht ... _____$a________$b ... Ich bring das fertig.

                                mfg

                              2. hallo,

                                Bei einer Nurtextemail? Wie heißt es doch so schön: "Immer dem Kontext entsprechend maskieren!". ;-)

                                was meinst du denn genau immer den kontext maskieren? kannst du es näher erläutern? mein Problem ist, dass ich in ein php-skript gar nicht weiß, wie ich in strMailtext = ""; also in den "" html befehle reinbekomme wie zum beispiel breite (width und etc).

                                Ich hätte das gerne schon in einer tabellen form mit fester zeilenbreite und etc.

                                leerzeichen einfügen hilft da nicht recht viel, da trotzdem immer zeilen verrückungen stattfinden, wenn was anderes in der tabelle stehen soll. man kann es nur für ein bestimmtes format mit leerzeichen machen, für alle macht es kein sinn.

                                ich hätte da sowas wie:

                                ArtikelNr.      Artikelbeschreibung       Menge       Preis
                                -----------------------------------------------------------
                                000-0001        Erstes Artikel                2          20
                                000-00020       Zweites Artikel              11         110

                                usw.

                                ich habe es schon str_pad() versucht, damit kann man zwar eine bestimmte länge für ein string einstellen, aber wenn das string kleiner als die länge ist, wird es mit leerzeichen gefüllt, oder mit anderen formatierten eingaben. und kommt es ja nicht so sauber wie oben raus....

                                für weitere hilfen wäre ich sehr dankbar
                                viele grüße
                                bulldoge

                                1. Hallo

                                  Bei einer Nurtextemail? Wie heißt es doch so schön: "Immer dem Kontext entsprechend maskieren!". ;-)

                                  was meinst du denn genau immer den kontext maskieren? kannst du es näher erläutern?

                                  Wenn du als Ausgabeformat HTML haben willst, musst du etwaige Sonderzeichen in deinen Strings den HTML-Reglen entsprechend maskieren. Bei PHP tut das die Funktion htmlspecialchars für dich. Willst du eine Eingabe in eine MySQL-Datenbank tätigen, müssen Strings nach dessen Reglen maskiert werden um bei der Übergabe keine Fehler zu verursachen. PHP hat auch dafür eine Funktion, nämlich mysql_real_escape_string.

                                  Dies sind nur zwei Beispiele. Bei Aus- und Übergabeoperationen in anderen Sprachen, also Kontexten, müssen die Strings den Regeln des Kontextes folgen.

                                  mein Problem ist, dass ich in ein php-skript gar nicht weiß, wie ich in strMailtext = ""; also in den "" html befehle reinbekomme wie zum beispiel breite (width und etc).

                                  Alles, was zwischen den Anführungszeichen steht, ist ein String. Wenn du also HTML als Ausgabeformat haben willst, musst du in deinen Strings eine HTML-Seite zusammenbauen. Wenn es reiner Text werden soll, gibt es keine Maskierungen. Die Strings lassen sich mit den von PHP mitgelieferten Stringfunktionen aber auf vielfältige Weise manipulieren.

                                  Ich hätte das gerne schon in einer tabellen form mit fester zeilenbreite und etc.

                                  Das wissen wir bereits. In meinem anderen Posting habe ich dir geschrieben, dass du eine HTML-Email zusammenbauen kannst, eine passende Formatierung der Email aber auch in einer Textemail zu bewerkstelligen ist. Letzteres habe ich mit einem recht ausführlichen Beispiel demonstriert.

                                  leerzeichen einfügen hilft da nicht recht viel, da trotzdem immer zeilen verrückungen stattfinden, wenn was anderes in der tabelle stehen soll. man kann es nur für ein bestimmtes format mit leerzeichen machen, für alle macht es kein sinn.

                                  Klar, das Format sollte dir bekannt sein. Wenn das so ist, kannst du die Länge der Strings mit str_pad kontrollieren.

                                  ArtikelNr.      Artikelbeschreibung       Menge       Preis

                                  000-0001        Erstes Artikel                2          20
                                  000-00020       Zweites Artikel              11         110

                                  ich habe es schon str_pad() versucht, damit kann man zwar eine bestimmte länge für ein string einstellen, aber wenn das string kleiner als die länge ist, wird es mit leerzeichen gefüllt, oder mit anderen formatierten eingaben. und kommt es ja nicht so sauber wie oben raus....

                                  Doch, genau das tut es[1], wenn der Kontext eine Textdatei oder eine Nurtextemail ist, denn da werden alle Zeichen, also auch die Leerzeichen, angezeigt. Das sieht dann genauso aus, wie in deinem obigen Block. Aber das habe ich dir ja schon geschrieben.

                                  HTML fasst aber alle Whitespaces (Leerzeichen, Zeilenumbrüche, Tabs) zu einem Leerzeichen zusammen. Allerdings kannst du in HTML die Ausrichtung der Texte über Attribute (unschön) oder CSS (in Emails nur als Inlinestyles oder CSS-Block im Dokumentkopf) steuern.

                                  [1] es ist genau das, was du da oben händisch getan hast

                                  Tschö, Auge

                                  PS: Die Verwendung der für die deutsche Sprache vorgesehenen Großschreibung (Satzanfang, Eingennamen, Substantive (auch gerne Dingworte genannt (*brrr*)) erhöht die Lesbarkeit von Texten ungemein.

                                  --
                                  Die deutschen Interessen werden am Liechtenstein verteidigt.
                                  Veranstaltungsdatenbank Vdb 0.2
                                  1. Mahlzeit Auge,

                                    PS: Die Verwendung der für die deutsche Sprache vorgesehenen Großschreibung (Satzanfang, Eingennamen, Substantive (auch gerne Dingworte genannt (*brrr*)) erhöht die Lesbarkeit von Texten ungemein.

                                    Das erzähl mal suit ...

                                    MfG,
                                    EKKi

                                    --
                                    sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
                                    1. [latex]Mae  govannen![/latex]

                                      PS: Die Verwendung der für die deutsche Sprache vorgesehenen Großschreibung (Satzanfang, Eingennamen, Substantive (auch gerne Dingworte genannt (*brrr*)) erhöht die Lesbarkeit von Texten ungemein.

                                      Das erzähl mal suit ...

                                      Halte ich für hoffnungslos. Aber es kann halt nicht nur höfliche Menschen geben; nimmt man halt so hin.

                                      Cü,

                                      Kai

                                      --
                                      Ash nazg durbatulûk, ash nazg gimbatul,ash nazg thrakatulûk, agh burzum-ishi krimpatul
                                      Sacrifice - the future has it's price
                                      And today is only yesterday's tomorrow
                                      selfcode sh:( fo:| ch:? rl:( br:< n4:# ie:{ mo:| va:) js:) de:> zu:) fl:( ss:| ls:?
              2. Hallo

                Die Email, die bei mir ankommt, sollte dann auch so aussehen wie die Tabelle, also:

                Art-Nr.:         Artikelbeschreibung        Menge     EUR/St.       Preis

                000-0001         blabla                     100       9,90         990,00
                blabla           blabla                     blabla    blabla       blabla
                blabla           blabla                     blabla    blabla       blabla
                blabla           blabla                     blabla    blabla       blabla

                ist etwas übersichtlicher als die sachen alle untereinander zu erhalten.

                Möglichkeit 1:

                Du baust dir aus den Angaben aus dem Formular oder woher auch immer eine vollständige HTML-Seite zusammen, passt die Emailheader an und versendest die Email als HTML-Email. Inwiefern die HTML-Formatierung erhalten bliebe, wenn der Mailclient kein HTML darstellt, weiß ich nicht (der Kunde wird doch wohl auch eine Kopie der Bestellemail erhalten?).

                Möglichkeit 2:

                Du machst im Skript das, was du auch hier gemacht hast, du setzt zwischen die Werte eine gewisse Anzahl von Leerzeichen. Dann versendest du die Email, wie bisher, als plaintext-Email.

                Das von dir derzeitig benutzte Skript gibt alle aus dem Formular übergebenen Werte in einer Schleife aus. Pro übergebenem Wert wird der Feldname, der Wert ansich und ein folgender Zeilenumbruch in den Mailtext eingegeben. So werden alle Werte untereinander notiert.

                Wenn du genau weißt, wie die übergebenen Werte aussehen, kannst du deren Darstellung besser kontrollieren. Wenn wir als Basis die obige Tabelle nehmen, gibt es pro Artikel eine Artikennummer, eine Beschreibung[1], eine Mengenangabe, einen Stückpreis und einen aus den zwei letzten Angaben resultierenden Gesamtpreis.

                Ich vermute auch mal, dass die Angaben eigentlich aus einer Session stammen. Davon ausgehend vermute ich weiter, dass die Artikel dort vermerkt sind und von dort aus in den Nachrichtentext eingefügt werden. So sie über ein Formular kommen, ist die Vorgehensweise aber grundsätzlich gleich. Die im folgenden benutzten Variablennamen und Arrayindizes sind von mir willkürlich gewählt, die Werte für die Anzahl der Stellen in der zur Formatierung benutzen Funktion str_pad sind aus der obigen Tabelle ausgelesen.

                Du hast im Emailtext feststehende Textschnipsel, wie eine Einleitung der Nachricht oder auch den Tabellenkopf, die jeweils nur einmal in die Nachricht eingefügt werden. Weiterhin hast du das Array mit den Artikeln und deren Angaben, alles Strings, die mit str_pad um die notwendige Anzahl von Leerzeichen ergänzt werden.

                // Die Variable für den Mailtext wird leer initialisiert  
                $strMailtext  = "";  
                  
                // Die eventuell vorhandene Einleitung  
                $strMailtext .= "Es wurden folgende Artikel bestellt.\n\n";  
                  
                // Der Kopf der Tabelle  
                $strMailtext .= "Art-Nr.:         Artikelbeschreibung        Menge     EUR/St.       Preis\n";  
                $strMailtext .= "-------------------------------------------------------------------------\n";  
                  
                // Ab hier die Artikel in einer Schleife ausgeben  
                foreach ($_SESSION["artikel"] as $artikel) {  
                // Die Auflistung der einzelnen Artikel  
                $strMailtext .= str_pad($artikel["artikelnummer"],17," ",STR_PAD_RIGHT);  
                $strMailtext .= str_pad($artikel["name"],27," ",STR_PAD_RIGHT);  
                $strMailtext .= str_pad($artikel["menge"],10," ",STR_PAD_RIGHT);  
                $strMailtext .= str_pad(number_format($artikel["stueckpreis"],2,",",".")." EUR",10," ",STR_PAD_RIGHT);  
                $strMailtext .= str_pad(number_format($artikel["menge"] * $artikel["stueckpreis"],2,",",".")." EUR",10," ",STR_PAD_LEFT);  
                $strMailtext .= "\n";  
                }  
                  
                $strMailtext .= "Irgendwelcher weiterer Text.";  
                  
                // Kontrollausgabe des Textes an einer geeigneten Stelle eines HTML-Dokuments  
                echo "<pre>\n";  
                print_r($strMailtext);  
                echo "/pre>\n";  
                
                

                Nun müssten noch die Angaben zum Besteller ect. notiert werden. _Ich_ würde sie gleich am Anfang der Nachricht eintragen.

                noch eine frage, würde folgendes gehen:

                $strMailtext .= '<tr><td>'Artikel-Nr'</td><td>'Artikelbesch'</td></tr>';
                $strMailtext .= '<tr><td>'$stran1'</td><td>'strab1'</td></tr>';

                  
                Wenn deine erste Zeile vor der Schleife mit den Artikeln kommt und weiterhin ein vollständiges HTML-Dokument erzeugt wird, geht das so (bis auf die Vertipper).  
                  
                [1] In beliebiger Länge (das kann zu Darstellungsproblemen führen) oder ist es doch der in seiner Länge abschätzbare Artikelname?  
                  
                Tschö, Auge  
                
                -- 
                Die deutschen Interessen werden am Liechtenstein verteidigt.  
                  
                [Veranstaltungsdatenbank Vdb 0.2](http://termindbase.auge8472.de/)