Autor Zpráva
pajka
Profil *
Zdravím,

Mám problém nevím proč mi to přestalo fungovat.
Na webu mám kalendář kde si uživatel klikne daný den a najedou mu časy které si vybere. A dá objednat rezervaci,ale ještě než objedná tak najede formulář kde vypíše své jméno,tel.,email...atd když nějaké políčko nevypíše a odešle naskočí chyba, že není vyplněno to a to políčko. To je vše v pořádku,ale chyba je v to, že když vypíše všechny údaje a odešle formulář tak sice objednávka mi dorazí na mail,ale uživateli se neukáže na webu, že formulář byl úspěšně odeslán a přitom to mám v kódu zapsané.

Zde ukázka:
<?php
require "reservation/config.php";

$time_id = isset($_GET["time_id"]) ? $_GET["time_id"] : NULL;

if ($time_id == NULL) {
    Header("Location: index.php");
    exit();
}

if (isset($_POST["submit"])) {
    unset($_POST["date"], $_POST["time"]);
    $validation = new FormValidation($_POST);
    $validation->setRule("name", Rules::FILLED, "Jméno nebylo vyplněno.");
    $validation->setRule("sname", Rules::FILLED, "Příjmení nebylo vyplněno.");
    $validation->setRule("place", Rules::FILLED, "Místo musí být vyplněné.");
    $validation->setRule("email", Rules::EMAIL, "Email není zadán ve správném formátu.");

    $validation->check();

    if ($validation->isValid()) {
        $values = $validation->getValues();
        $reservation = new Reservation();
        $reservation->setDate($values["hidden_date"]);
        $reservation->setTimeFrom($values["time_from"]);
        $reservation->setTimeTo($values["time_to"]);
        $reservation->setName($values["name"]);
        $reservation->setSname($values["sname"]);
        $reservation->setPlace($values["place"]);
        $reservation->setEmail($values["email"]);
        $reservation->setCountOfPerson((int) $values["count_of_person"]);

        $reservationRepository = new ReservationRepository($database);
        $reservationRepository->setTable("reservation");
        $reservationRepository->save($reservation);

        $timeRepository = new AccessedTimeRepository($database);
        $timeRepository->setTable("accessed_time");
        $timeRepository->delete($time_id);

        $mail = new Mail();
        $mail->setRecipient("objednavkabb@centrum.cz");
        //kopii odesleme na email z formulare
        $mail->setRecipient($reservation->getEmail());
        $mail->setValues($reservation);
        $mail->send();
        $message = "Objednávka byla přijata. Na mail Vám přišla kopie objednávky. Děkujeme za objednávku.";

    } else {
        $errors = $validation->getErrors();
    }
}

$accessedTimeRepository = new AccessedTimeRepository($database);
$accessedTimeRepository->setTable("accessed_time");

$date = $accessedTimeRepository->find($time_id);
?>




<div id="right">
              
                <p class="date"></p>
    

    <?php
    if (isset($errors)) {
        echo "<ul>";
        foreach ($errors as $error) {
            echo "<li>$error</li>";
        }
        echo "</ul>";
    }
    ?>
   <div id="wrapper">
    <form action="#" method="POST" class="reservation_form">
        <div class="form_line">
            <label>Datum:</label>
            <?php $c_date = new DateTime($date->date); ?>
            <input type="text" name="date" class="textinput" value="<?php echo $c_date->format("j.n.Y");?>">
        </div>
        <div class="form_line">
            <label>Začátek - konec:</label>
            <input type="text" name="time" class="textinput" value="<?php echo $date->from . " - " . $date->to;?>">
        </div>
        <div class="form_line">
            <label>Jméno:</label>
            <input type="text" name="name" class="textinput" value="<?php if (isset($_POST["name"])) { echo $_POST["name"]; }?>">
        </div>
        <div class="form_line">
            <label>Příjmení:</label>
            <input type="text" name="sname" class="textinput" value="<?php if (isset($_POST["sname"])) { echo $_POST["sname"]; }?>">
        </div>
        <div class="form_line">
            <label>Telefon:</label>
            <input type="text" name="place" class="textinput" value="<?php if (isset($_POST["place"])) { echo $_POST["place"]; }?>">
        </div>
        <div class="form_line">
            <label>Email:</label>
            <input type="text" name="email" class="textinput" value="<?php if (isset($_POST["email"])) { echo $_POST["email"]; }?>">
        </div>
        <div class="form_line">
            <label>Počet osob:</label>
            <input type="text" name="count_of_person" class="textinput" value="<?php if (isset($_POST["count_of_person"])) { echo $_POST["count_of_person"]; }?>">
        </div>
        <input type="hidden" name="time_to" value="<?php echo $date->to; ?>">
        <input type="hidden" name="time_from" value="<?php echo $date->from; ?>">
        <input type="hidden" name="hidden_date" value="<?php echo $c_date->format("j.n.Y");?>">
        <div class="form_line_control">
            <input type="submit" name="submit" class="fourthsubmit" value="Odeslat rezervaci">
        </div>
    </form>
    </div>

a tedy tahle věta se nevypíše po správném odeslání formuláře
$message = "Objednávka byla přijata. Na mail Vám přišla kopie objednávky. Děkujeme za objednávku.";
petr 6
Profil
pajka:
přitom to mám v kódu zapsané
Kde máte v kódu echo $message ?
tiso
Profil
Tú premennú nikde nevypisuješ
pajka
Profil *
aha :) jsem to ale nemehlo. Dík

Ještě otázka jak bych provedl aby když to odešlu ten formulář tak aby potom se i smazal a zůstal tam jen ten výpis, že to bylo odesláno.
Musí to být přes JS?
Keeehi
Profil
pajka:
Tak ho obal ifem. Něco ve smyslu
if (isset($_POST["submit"]) && !$errors) {
Nemusí to být přesně správně, tvůj kód jsem podrobně nezkoumal.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0