Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Динамический title


Автор: Sicky 13.8.2015, 14:32
Тут такая проблема, есть скрипт обратной связи:
Код

<!DOCTYPE html>
<html>
<head>
<title></title>
<meta charset="UTF-8">
</head>
<body>


<?php
if(!empty($_POST['phone'] ))
{
$to = "почта";
$from = 'почта';
$subject = "Проверка почты";
$message = 'Имя: '.$_POST['name'].'; Телефон: '.$_POST['phone'].';';
$headers = "Content-type: text/html; charset=UTF-8 \r\n";
$headers .= "From: <почта>\r\n";
$result = mail($to, $subject, $message, $headers);

    if ($result){ 
        echo "<span>Cообщение успешно отправленно. Пожалуйста, оставайтесь на связи</span>";
    }
    else{
        echo "<span>Cообщение не отправленно. Пожалуйста, попрбуйте еще раз</span>";
    }
}
else {
echo "<span>Обязательные поля не заполнены. Введите номер телефона</span>";
}
?>
    echo '<script>document.title = "";</script>';

</body>
</html>

Как сделать чтобы при том или ином результате выполнения выводились разные тайтлы для страницы?
Пробовал сделать так:
Код

if ($result){ 
        echo "<span>Cообщение успешно отправленно. Пожалуйста, оставайтесь на связи</span>
        <script>document.title = "Cообщение успешно отправленно.";</script>
        ";
    }

Но при этом скрипт не выполняется. Выпадает ошибка из яваскрипта.

Вообще выполняется все так:
Код

<button class="waves-effect waves-light btn btn-larger" type="button" onclick="AjaxFormRequest('messegeResult', 'formMain', 'form1.php')">Позвоните мне!</button>

Код

function AjaxFormRequest(result_id,formMain,url) {
                        jQuery.ajax({
                            url:     url,
                            type:     "POST",
                            dataType: "html",
                            data: jQuery("#"+formMain).serialize(), 
                            success: function(response) {
                            document.getElementById(result_id).innerHTML = response;
                        },
                        error: function(response) {
                        document.getElementById(result_id).innerHTML = "<p>Возникла ошибка при отправке формы. Попробуйте еще раз</p>";
                        }
                     });

                     $(':input','#formMain')
                        .not(':button, :submit, :reset, :hidden')
                        .val('')
                        .removeAttr('checked')
                        .removeAttr('active')
                        .removeAttr('selected');
}

Автор: s1lver 27.8.2015, 15:57
А вы хотите это на PHP или JavaScript сделать?

Автор: rMaveric 4.9.2015, 10:44
Добрый. smile

Самый простой вариант в твоем случае, и скорее всего правильный, это сперва выполнить обработку формы, отправить письмо, и только после этого начать формировать таблицу.

Получится что-то такое.

Код

<?php
if(!empty($_POST['phone'] ))
{

$to = "почта";
$from = 'почта';
$subject = "Проверка почты";
$message = 'Имя: '.$_POST['name'].'; Телефон: '.$_POST['phone'].';';
$headers = "Content-type: text/html; charset=UTF-8 \r\n";
$headers .= "From: <почта>\r\n";
$result = mail($to, $subject, $message, $headers);
    if ($result){ 
        $title = "Все ОК. Письмо улетело";
        $content = "<span>Cообщение успешно отправленно. Пожалуйста, оставайтесь на связи</span>";
    }
    else{
        $title = "Ошибка. Что-то пошло не так";
        $content =  "<span>Cообщение не отправленно. Пожалуйста, попрбуйте еще раз</span>";
    }
}
else {
$title = "Ошибка. Не заполнено поле";
$content = "<span>Обязательные поля не заполнены. Введите номер телефона</span>";
}
?>
<!DOCTYPE html>
<html>
<head>
<title><?php echo  $title ; ?></title>
<meta charset="UTF-8">
</head>
<body>
<?php echo  $content ; ?>
</body>
</html>


Также ты можешь не формировать переменные $title и $content, а создать флаговые переменные, которые будут хранить статус отправки твоей формы, есть ли ошибка или нет, и некоторые коды ошибок, и на основе этих данных уже формировать вывод в теле документа. А можно еще... можно реализовать большим кол-вом способов. smile Но пока пробуй простые.

А если же тебе требуется на JS менять тайтл smile, То тебе в другую ветку форума. smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)