Ankündigung

Einklappen
Keine Ankündigung bisher.

Anfänger benötigt Hilfe bei erweitertem Kontaktformular

Einklappen

Neue Werbung 2019

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

  • Anfänger benötigt Hilfe bei erweitertem Kontaktformular

    Hallo Coder,

    ich bin zwar in Sachen HTML schon länger (laienhaft) unterwegs, PHP stellt für mich aber immer noch eine große Unbekannte dar. Das soll sich nun ändern. Und ich habe auch direkt eine konkrete Problemstellung, die ich Umsetzen möchte und an der ich lernen möchte. Ich würde gerne eine Seite als Telefonnotiz erstellen, bei der man den Empfänger der Nachricht individuell auswählen kann. Hierzu habe ich mir ein paar Kontaktformulare angesehen und versucht, diese passend abzuwandeln. Leider funktioniert es nicht. Darum jetzt also hier.

    Mein HTML-Code:

    HTML-Code:
    <!doctype html>
    <html>
    <head>
    <meta charset="utf-8">
    <title>Telefon-Notiz </title>
    </head>
    
    
    <body>
        <h1>Telefon-Notizen</h1>
        <main>
            <form action="sendnote.php" method="post">
                <fieldset>
                    <legend>Allgemeine Gespr&auml;chs-Informationen</legend>
                        <p>
                            <label for="author">Gespr&auml;ch gef&uuml;hrt von</label><br>
                            <select id="author" name="author">
                                <option value="name1">Name 1</option>
                                <option value="name2">Name 2</option>
                                <option value="name3">Name 3</option>
                                <option value="name4">Name 4</option>
                                <option value="name5">Name 5</option>
                            </select><br>
                            <label for="date">Datum</label><br>
                            <input id="date" type="date" name"date"><br>
                            <label for="time">Uhrzeit</label><br>
                            <input id="time" type="time" name="time"><br>
                        </p>
                </fieldset>
                <fieldset>
                    <legend>Informationen zum Anrufer</legend>
                        <p>
                            <label for="forename">Vorname</label><br>
                            <input id="forename" name="vorname"><br>
                            <label for"name">Name</label><br>
                            <input id="name" name="name"><br>
                            <label for"company">Firma</label><br>
                            <input id="company" name="firma"><br>
                            <label for="email">E-Mail</label><br>
                            <input id="email" type="email" name="email">
                        </p>
                        <p>
                            <input id="firstcall" name="firstcall" type="checkbox">
                            <label for="firstcall">Erstanruf</label>
                            <input id="newcall" name="newcall" type="checkbox">
                            <label for="newcall">Erneuter Anruf</label>
                            <input id="recall" name="recall" type="checkbox">
                            <label for="recall">Hat zur&uuml;ckgerufen</label>
                            <input id="recall2" name="recall2" type="checkbox">
                            <label for="recall2">Bittet um R&uuml;ckruf</label>
                            <input id="recall3" name="recall3" type="checkbox">
                            <label for="recall3">Ruft wieder an</label>
                        </p>
                </fieldset>
                <fieldset>
                    <legend>Notizen</legend>
                    <p>
                        <label for="topic">Grund des Anrufs</label><br>
                        <textarea id="topic" style="width: 80%; height:2.5em"></textarea><br>
                        <label for="message">Nachricht</label><br>
                        <textarea id="message" rows="6" cols="80"></textarea>
                    </p>
                </fieldset>
                <fieldset>
                    <legend>Weitere Bearbeitung durch ...</legend>
                        <p>
                            <label for="mitarbeiter">Empfänger</label><br>
                            <select id="mitarbeiter" name="mitarbeiter">
                                <option value="name1">name1@mail.de</option>
                                <option value="name2">name2@mail.de</option>
                                <option value="name3">name3@mail.de</option>
                                <option value="name4">name4@mail.de</option>
                                <option value="name5">name5@mail.de</option>
                            </select>
                        </p>
                </fieldset>
                <button type="submit">Absenden</button>
            </p>
        </main>
    </body>
    </html>
    Mein PHP-Code:

    PHP-Code:
    <?php
    $field_author 
    $_POST['author'];
    $field_date $_POST['date'];
    $field_time $_POST['time'];
    $field_forename $_POST['forename'];
    $field_name $_POST['name'];
    $field_company $_POST['company'];
    $field_email $_POST['email'];
    $field_firstcall $_POST['firstcall'];
    $field_newcall $_POST['newcall'];
    $field_recall $_POST['recall'];
    $field_recall2 $_POST['recall2'];
    $field_recall3 $_POST['recall3'];
    $field_topic $_POST['topic'];
    $field_messsage $_POST['message'];
    $field_mitarbeiter $_POST['mitarbeiter'];

    $mail_to 'mitarbeiter';
    $subject 'Telefone-Notiz von '.$field_author;


    $body_message 'Author: '.$field_author."\n";
    $body_message .= 'Datum: '.$field_date."\n";
    $body_message .= 'Uhrzeit: '.$field_time."\n";
    $body_message .= 'Vorname: '.$field_forename."\n";
    $body_message .= 'Name: '.$field_name."\n";
    $body_message .= 'Firma: '.$field_company."\n";
    $body_message .= 'E-Mail: '.$field_email."\n";
    $body_message .= 'Erstanruf: '.$field_firstcall."\n";
    $body_message .= 'Erneuter Anruf: '.$field_newcall."\n";
    $body_message .= 'Hat zur&uuml;ckgerufen: '.$field_recall."\n";
    $body_message .= 'Bittet um Rückruf: '.$field_recall2."\n";
    $body_message .= 'Möchte zurückgerufen werden: '.$field_recall3."\n";
    $body_message .= 'Thema: '.$field_topic."\n";
    $body_message .= 'Nachricht: '.$field_messsage."\n";


    $headers 'From: '.$field_author."\r\n";
    $headers .= 'Reply-To: '.$field_author."\r\n";

    $mail_status mail($mail_to$subject$body_message$headers);

    if (
    $mail_status) { ?>
        <script language="javascript" type="text/javascript">
            alert('Die Gesprächsnotiz wurde verschickt.');
            window.location = 'telefonnotiz.html';
        </script>
    <?php
    }
    else { 
    ?>
        <script language="javascript" type="text/javascript">
            alert('Fehler! '"\n" 'Die Gesprächsnotiz konnte nicht versandt werden.');
            window.location = 'telefonnotiz.html';
        </script>
    <?php
    }
    ?>
    Von der HMTL-Seite aus sieht alles gut aus. Leider kommt keine Nachricht an. Woran liegt das? Ich vermute ganz stark, dass meine Variable 'mitarbeiter' falsch ist, oder? Wie müsste die richtig aufgesetzt werden?
    Der Server ist übrigens PHP-fähig, habe ich mit einem Echo-Test überprüft.

    Ich danke für jeden Hinweis.

    Plothes

  • #2
    Hey,

    das siehst du wahrscheinlich richtig, Dein Mail geht raus an 'mitarbeiter', was logischerweise nicht ankommt. Du müsstest der Variable $mail_to den Wert mitarbeiter des POST-Arrays übertragen.

    PHP-Code:
    $mail_to $_POST['mitarbeiter']; 
    Du solltest dich ins Debugging einlesen, prüfen was in deinem Script vorgeht und wo der Fehler liegt.
    https://php-de.github.io/jumpto/leitfaden/

    Ausserdem solltest du nicht mail() verwenden, da dort das Risiko, dass die Mail nicht ankommt generell da ist. Verwende eine Mailerklasse: https://php-de.github.io/jumpto/mail-class/
    Für einen Anfänger ist mail() natürlich einfacher, das kann ich nachvollziehen, aber mach es lieber gleich richtig.

    Kommentar


    • #3
      Da sind noch mehr Unstimmigkeiten.

      HTML-Code:
        <input id="forename" name="vorname"><br>
      Aber im Script dann
      PHP-Code:
      $field_forename $_POST['forename']; 
      Der übertragene Parameter steht im Formular bei den Input Feldern unter dem Attribut name und nicht id.
      Selbes Problem mit
      PHP-Code:
      $_POST['company']; 

      usw.


      Kommentar


      • #4
        Zitat von jonas3344
        ... was logischerweise nicht ankommt. Du müsstest der Variable $mail_to den Wert mitarbeiter des POST-Arrays übertragen.
        Ok. Das klingt sehr logisch. Ich habe das mal so (also, die einfache Lösung mit Deinem Code, nicht die Mailerklasse) umgesetzt, allerdings kommt immer noch keine Nachricht an.

        Warum nicht?

        Zitat von protestix
        Da sind noch mehr Unstimmigkeiten.
        Ah, vielen Dank. Diese Fehler habe ich natürlich nicht bemerkt, da überhaupt keine Mail ankommt. Wurde alles korrigiert, jetzt beziehen sich die Variablen auf den Namen, nicht die ID.

        Kommentar


        • #5
          Zitat von jonas3344 Beitrag anzeigen
          Für einen Anfänger ist mail() natürlich einfacher
          Wie kommst Du auf dieses schmale Brett? mit mail Pur ist alles WESENTLICH komplizierter. Wurde hier im Forum doch schon mehrfach durchgekaut.

          PHP-Manual ¡ mysql_* ist veraltet ¡ Debugging: Finde DEINE Fehler selbst ¡ Passwort-Hashing ¡ Prepared Statements

          Kommentar


          • #6
            Ähm, falsch formuliert, ich meinte: Für einen Anfänger scheint mail() natürlich einfacher.

            Kommentar


            • #7
              Das Script ist hoffentlich nicht frei zugänglich?
              Da lässt ich prima Spam darüber verschicken, da du ungefiltert POST-Daten an mail übergibst.

              Grüße.

              Kommentar


              • #8
                Zitat von Plothes Beitrag anzeigen
                allerdings kommt immer noch keine Nachricht an.

                Warum nicht?
                Das wissen wir nicht und es gibt da ziemlich viele Hürden, die hier wohl keiner alle kennt.
                Nimm phpmailer, inkludiere diese, ist ja eh nur eine Datei und schon kann`s losgehen, einfacher geht es nun wirklich nicht.

                Kommentar

                Lädt...
                X