Обязательные поля формы (PHP HTML)

Форум для тех кто начинает осваивать язык php.
albina111484
Сообщения: 31
Зарегистрирован: Сб апр 25, 2015 12:07 pm

Обязательные поля формы (PHP HTML)

Сообщение albina111484 » Ср окт 28, 2015 2:40 am

Привет! Я снова к вам за помощью) Мне нужно переделать чужую форму обратной связи, а именно:
• Поле «номер телефона» должно быть обязательным для заполнения и вводится только цифры.
• Также нужно реализовать проверку – если не заполнено какое-то поле ввода (или заполнено неправильно), то это поле должно подсвечиваться красной рамкой с надписью, что неверно заполнены поля.

Я не могу разобраться в коде. Подскажите, что-нибудь))) Есть:
1 .форма

Код: Выделить всё

<form class="form beedback_form" action="javascript:alert('Отправлено!');" id="callform" onsubmit="setTimeout('reload();', 500)">
    <div class="message_error" id="formerror">
    </div>
    <div id="loader" style="display: none;padding: 20px 217px"><img src="lizing/okno/loader.gif" width="" height="" alt="" border="0" align="center"></div>
    <div id="allform">
        <div class="comm"><label>Имя:</label>
            <input class="standart_inp" data-format=".+" data-notice="Введите имя" value="" name="name" maxlength="255" type="text"/>
        </div>
        <div class="comm">
        <label>Номер телефона <span style="color:red">*</span>:</label>
            <input class="standart_inp" data-format=".+" data-notice="Введите телефон" value="" name="phone" maxlength="255" type="text"/>
        </div>
        <div class="center" style="padding-top: 40px;">
            <input type="submit" onclick="ga('send', 'event', 'call_order_btn', 'submit', 'Заказать звонок'); yaCounter22164061.reachGoal('Заказать звонок'); return true;">
        </div>
    </div>
    </form> 
2. mail.php

Код: Выделить всё

<?php
function utf2win($string){
    $string=iconv('utf-8','windows-1251',$string);
    return $string;
}
$name=$_POST['name'];
$phone=$_POST['phone'];

mail("tws.zp.ua@gmail.com", utf2win("Запрос с сайта"), utf2win("Клиент
Имя    - $name
Телефон - $phone
"), "Content-Type: text/plain; charset=windows-1251\r\nFrom: webmaster@.ru\n");
print ("OK");
exit;


?>
3. Скрипт

Код: Выделить всё

<script type="text/javascript">
$(document).ready(function ()
{
 $("#callform").submit(function ()
    {
        $("#allform").hide();
        $("#loader").show();
        var str = $(this).serialize(); 
        $.ajax(
        {
            type: "POST",
            url: "/lizing/mail2.php",
            data: str,
            success: function (msg)
            {
             $("#formerror").ajaxComplete(function (event, request, settings)
                {
                    if (msg == 'OK') 
                    {
                        $("#loader").hide();
                        result = '<div style="color:#FFF; text-align:center;">Вам скоро перезвонят. Спасибо!</div><br />';
                        $('#callform').html(result);
                    }
                    else
                    {
                        $("#loader").hide();
                        result = msg;
                        $("#allform").show();
                    }
                    $(this).html(result);
                });
            }
        });
        return false;
    });
    
}); 

Реклама
Аватара пользователя
Slash
Администратор
Сообщения: 2112
Зарегистрирован: Сб авг 11, 2012 7:39 am
Поблагодарили: 71 раз

Re: Обязательные поля формы (PHP HTML)

Сообщение Slash » Ср окт 28, 2015 8:00 am

Обязательные поля можно сделать на чистом HTML при помощи атрибута required, например для вашего поля имя, будет так:

Код: Выделить всё

<input class="standart_inp" data-format=".+" data-notice="Введите имя" value="" name="name" maxlength="255" type="text" required />
В зависимости от браузера предупреждение и его стиль может меняться.

На PHP можно проверить поле функцией empty(). Пример с вашим кодом:

Код: Выделить всё

$name = trim($_POST['name']); # Убираем пробелы до и после строки

if (empty($name)) # Проверяем имеет ли переменная значение
{
     echo 'Поле Имя не заполнено. Пожалуйста, заполните все поля.';
}
Исходя из этого можно изменять цвет поля.

Проверить номер телефона, то есть ведены ли цифры или нет, можно при помощи функции is_numeric(). Как то так:

Код: Выделить всё

$phone = trim($_POST['phone']); # Убираем пробелы до и после строки

if (!is_numeric($phone)) #Если значение переменной не числовое
{
    echo 'Номер телефона введен не корректно.';
}

albina111484
Сообщения: 31
Зарегистрирован: Сб апр 25, 2015 12:07 pm

Re: Обязательные поля формы (PHP HTML)

Сообщение albina111484 » Ср окт 28, 2015 1:42 pm

Спасибо, вы как всегда мне помогли!!! Только уточнение, а куда ваш последний код вставлять?)))

Добавлено спустя 26 минут 27 секунд:
Извините, нашла)))

Аватара пользователя
Slash
Администратор
Сообщения: 2112
Зарегистрирован: Сб авг 11, 2012 7:39 am
Поблагодарили: 71 раз

Re: Обязательные поля формы (PHP HTML)

Сообщение Slash » Ср окт 28, 2015 2:01 pm

Я бы вообще такой код, как вы написали, не использовал...
Как то так:

Код: Выделить всё

<form class="form beedback_form" action="mail.php" id="callform">
    Имя: <input class="standart_inp" name="name" type="text" />
    Номер телефона: <input class="standart_inp" name="phone" type="text" />
    <input type="submit" value="Заказать звонок" name="sumbit">
</form> 
Стиль формы, если надо, написал бы в отдельный файл css.

Код: Выделить всё

<?php
$sumbit = (isset($_POST['sumbit'])) ? $_POST['sumbit'] : null;

if ($sumbit)
{
    $name = trim($_POST['name']);
    $phone = trim($_POST['phone']);
    
    $error = array();
    if (empty($name))
    {
        $error[] = 'Поле Имя не заполнено. Пожалуйста, заполните все поля.';
    }
    if (empty($phone))
    {
        $error[] = 'Поле Номер иелефона не заполнено. Пожалуйста, заполните все поля.';
    }
    if (!is_numeric($phone))
    {
        $error[] = 'Номер телефона введен не корректно.';
    }
    if (!empty($error))
    {
        foreach ($error as $info)
        {
            echo $info;
        }
    }
    else
    {
        mail( /* Данные для отправки письма */ );
        echo 'Отправлено!';
    }    
} 
Вот и все. Тут не нужен JS, для отправки письма или проверок на пустоту я не использую JS.
Работу не проверял...

albina111484
Сообщения: 31
Зарегистрирован: Сб апр 25, 2015 12:07 pm

Re: Обязательные поля формы (PHP HTML)

Сообщение albina111484 » Ср окт 28, 2015 4:22 pm

Я тоже использую другую форму, но тут задание, поправить именно эту. С формой и отправкой все ок, теперь другая проблема. Этот код блокирует всплывающее окно с формой.

Код: Выделить всё

<script type="text/javascript" src="js/jquery-1.4.2.min.js" charset="utf-8"></script>
Добавлено спустя 19 минут 26 секунд:
Возможно у них конфликт с jquery-1.7.1.min.js, как это можно исправить?

Аватара пользователя
Slash
Администратор
Сообщения: 2112
Зарегистрирован: Сб авг 11, 2012 7:39 am
Поблагодарили: 71 раз

Re: Обязательные поля формы (PHP HTML)

Сообщение Slash » Ср окт 28, 2015 4:29 pm

albina111484 писал(а):jquery-1.4.2.min.js
albina111484 писал(а):jquery-1.7.1.min.js
Вы какой jquery пользуетесь?

albina111484
Сообщения: 31
Зарегистрирован: Сб апр 25, 2015 12:07 pm

Re: Обязательные поля формы (PHP HTML)

Сообщение albina111484 » Ср окт 28, 2015 6:31 pm

jquery-1.4.2.min.js

Добавлено спустя 1 час 31 минуту 1 секунду:
Решила проблему, воспользовавшись другим плагином) Спасибо вам за помощь!

Ответить Пред. темаСлед. тема

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя