• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

[GELOEST] PHPMailer - Datum formatieren / Neuladen verhindern / Erfolgreich abgeschickt

XirLion

Mitglied
Ich wünsche einen schönen Sonntag!

Der PHPMailer läuft so weit, das Datum mit dem html input type="date" kommt in der E-Mail im "2023-03-27 - 2023-03-30" Format an, wie kann man dieses ins Format tt.mm.jjjj bringen?
PHP:
$date1 = htmlspecialchars($_POST["date1"], ENT_QUOTES, "UTF-8");
$date2 = htmlspecialchars($_POST["date2"], ENT_QUOTES, "UTF-8");

Gibt es eine Möglichkeit anzeigen zu lassen, dass das Formular nach dem Absenden erfolgreich abgeschickt wurde oder ein Dank fürs Absenden anzuzeigen?
Nach dem Abschicken des Formulars springt die Seite an oberster Stelle, lässt sich dies ebenfalls verhindern/ausstellen?

Ich denke das ich hierfür an folgender Stelle etwas ändern muss...
PHP:
if(!$mail->send()) { 
        echo !extension_loaded('openssl')?"Not Available":"Available";
        echo 'Mail wurde nicht abgesendet'; 
        echo 'Fehlermeldung: ' . $mail->ErrorInfo; 
    } else { 
        //echo 'Nachricht wurde abgesendet.'; 
        header("Location: ../index.html");
    }
 
Werbung:
Danke, ich verstehe nur nicht, wie ich das auf meine Zeilen anwenden kann... folgendes hatte ich bereits ausprobiert:
PHP:
$date1 = htmlspecialchars($_POST["date1"], ENT_QUOTES, "UTF-8");
echo date_format($date1, 'd-m-Y H:i:s');
$date2 = htmlspecialchars($_POST["date2"], ENT_QUOTES, "UTF-8");
echo date_format($date2, 'd-m-Y H:i:s');
hat nur nicht funktioniert :(
 
Werbung:
Auf dem Link in #2 hats sogar Beispiele wie es korrekt gemacht wird.

htmlspecialchars ist hier übrigens total falsch.
date_format braucht als ersten Parameter ein DateTime-Objekt, keinen String.
 
Werbung:
Auf dem Link in #2 hats sogar Beispiele wie es korrekt gemacht wird.

htmlspecialchars ist hier übrigens total falsch.
date_format braucht als ersten Parameter ein DateTime-Objekt, keinen String.
Die oben genannten php-Befehle berufen sich auf das html formular:
HTML:
<p class="time">Reisezeitraum:
   <input type="date" id="date1" name="date1">-<input type="date" id="date2" name="date2">
</p>
Habe den PHPCode so aus einem Tutorial übernommen und es funktioniert auch bis auf das Ausgabeformat des Datums.

Wenn Ihr mir sagen könnt, wie ich es richtig schreibe, wäre ich euch dankbar, verstehe leider nicht, wie ich die Tipps aus Link #2 anwende.
 
Werbung:
Du bringst nicht fertig dieses Beispiel für Dich zu adaptieren?

Code:
$date = date_create('2000-01-01');
echo date_format($date, 'Y-m-d H:i:s');
 
Du bringst nicht fertig dieses Beispiel für Dich zu adaptieren?

Code:
$date = date_create('2000-01-01');
echo date_format($date, 'Y-m-d H:i:s');
Wenn ich das in meinen Code einfüge statt dem vorherigen, erhalte ich immer noch das Format "2023-03-27 - 2023-03-31" aus dem html Formular, es kommt lediglich eine Anzeige mit:

Time.jpg
wo jetzt das eingetragene Datum aus dem PHP Code angezeigt wird.
 
Mir hat woanders nun jemand helfen können, womit wir das Problem lösen konnten.
Hier die Lösung:
PHP:
<?php
$date1 = date_create($_POST["date1"]);
$date2 = date_create($_POST["date2"]);
$date1 = date_format($date1, 'd/m/Y');
$date2 = date_format($date2, 'd/m/Y');

$body = "
<b>Reisezeitraum:</b> {$date1} - {$date2}<br>";
echo $body;

Gibt es eine Möglichkeit anzeigen zu lassen, dass das Formular nach dem Absenden erfolgreich abgeschickt wurde oder ein Dank fürs Absenden anzuzeigen?
Nach dem Abschicken des Formulars springt die Seite an oberster Stelle, lässt sich dies ebenfalls verhindern/ausstellen?
Diese Fragen habe ich ebenfalls mit folgendem lösen können:
PHP:
} else { 
        //echo 'Nachricht wurde abgesendet.'; 
        //header("Location: ../index.html");
        echo
        "<script>
        alert('Vielen Dank - Ihre Nachricht wurde erfolgreich abgeschickt!');
        document.location.href = 'index.html';
        </script>
        ";
    }
 
Werbung:
Bitte kein JavaScript an dieser Stelle und ein alert() überhaupt nicht. Leite deinen Besucher auf eine Danke-Seite, wenn die Mail erfolgreich abgesendet wurde.
 
Solche JavaScript-alert()-Ausgaben sollte ein Benutzer deiner Website nicht erhalten. Je nach Browser werden diese unterschiedlich dargestellt. Verwende: header("Location: ../danke.html"); Der Besucher kann dann selbst entscheiden (bei entsprechenden Links auf der danke.html), ob er zur Startseite möchte oder sich eine andere Seite auf deiner HP anschaut.
 
Werbung:
Zurück
Oben