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

Форум для тех кто начинает осваивать язык php.
albina111484
Сообщения: 31

Обязательные поля формы (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",
            
datastr,
            
success: function (msg)
            {
             $(
"#formerror").ajaxComplete(function (eventrequestsettings)
                {
                    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
Администратор
Сообщения: 2029
Поблагодарили: 62 раза

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

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

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

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

Добавлено спустя 26 минут 27 секунд:
Извините, нашла)))
Аватара пользователя
Slash
Администратор
Сообщения: 2029
Поблагодарили: 62 раза

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

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
Администратор
Сообщения: 2029
Поблагодарили: 62 раза

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

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

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

jquery-1.4.2.min.js

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

Вернуться в «PHP»

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

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