Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
Страницы: (2) [1] 2  ( Перейти к первому непрочитанному сообщению )  
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Помогите сделать проверку поля, Проверка поля
Astin  
 ۩  [x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 592
Пользователь №: 42519
На форуме: 1 год, 1 месяц, 13 дней
Карма: 7




Здравствуйте!
Вопрос наверно будет очень прост, но я не могу сделать эту проверку, Помогите пожалуйста как лучше сделать.

Есть форма и в нее добавляются данные и после добавления в поля по нажатию на кнопку обработчик добавляет запись в базу.
Проблема: Если поля не заполнены и нажимаешь на кнопку, то все равно запись добавляется в базу.

Как сделать проверку заполнения не только на одно поле а на несколько?

Вот код обработчика
 <?php
// Устанавливаем соединение с сервером MySQL
require_once("config.php");
/* Задаем переменные */
$dat=date("d.m.Y");
$fio = htmlspecialchars($_POST["fio"]);
$sum = htmlspecialchars($_POST["sum"]);
$zal = htmlspecialchars($_POST["zal"]);

//Если переменная Name передана
if (isset($_POST["fio"])) {
//Вставляем данные, подставляя их в запрос
$sql = mysql_query("INSERT INTO `pr` (`dat`, `fio`, `sum`, `zal`)
VALUES (NOW(), '"
.$_POST['fio']."','".$_POST['sum']."','".$_POST['zal']."')");



//Если вставка прошла успешно
if ($sql) {
if (mail ("xxxxx@gmail.com",
/*** Сбор дополнительной информации об отправителе сообщения ***/
"Новая заявка с сайта xxxx.ru",
"Данные\n
ФИО: $fio\n
Дата отправки: $dat \n
Сумма: $sum \n
Залог: $zal",
"Content-type:text/plain; charset=utf-8")) {
header('Refresh: 2; http://xxxxxxx.php');
echo "Запись добавлена!"; }
else {
echo "<p>Произошла ошибка.</p>"; }
}
}

?>


У меня обработчик не только записывает в базу а еще и отправляет данные на почту.

Вот как бы сделать так что если человек не заполнил некоторые поля то они не записывались в базу.
Я понимаю что к input можно поставить required, но у меня есть еще select и он должен быть обязательно заполнен
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Kusss  
[x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1445
Пользователь №: 28976
На форуме: 5 лет, 7 месяцев, 26 дней
Карма: 83




// стартуем сессию, желательно во всех файлах.
session_start();

$error = array();
// для строки .
//удаляем пробелы в начале и в конце

$fio = trim($_POST['fio']);
if (empty($fio))
$error[] = 'Не указано ФИО';

// для чисел
if (!is_numeric($_POST['sum']) or $_POST['sum'] <= 0)
$error[] = 'Сумма должна быть числом, и больше нуля';

// Если есть ошибки
if (count($error)) {
// сообщение об ошибке
$_SESSION['form_error'] = $error;
// данные который заполнил пользователь
$_SESSION['form'] = $_POST;
// обратно в форму
header('Refresh: http://xxxxxxx.php');
die();
}

// mysql_real_escape_string - экранирует данные, помогает от SQL-инъекции
// тут добавляем

$sql = "
INSERT INTO
`pr`
SET
`dat` = NOW(),
`fio` = '"
.mysql_real_escape_string($fio)."',
`sum` = "
.$_POST['sum'].",
`zal` = '"
.mysql_real_escape_string($_POST['zal'])."'
"
;
$sql = mysql_query($sql);
// получаем номер добавленной записи (id)
$id = mysql_insert_id();


Это сообщение отредактировал Kusss - 13.02.2016 - 21:22
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Astin  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 592
Пользователь №: 42519
На форуме: 1 год, 1 месяц, 13 дней
Карма: 7




Спасибо! Скажите, а почему не записывается номер телефона в базу?
Выдает ошибку.
Я ввожу к примеру 87473725708, а он выдает 2147483647
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Astin  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 592
Пользователь №: 42519
На форуме: 1 год, 1 месяц, 13 дней
Карма: 7




Пришлось в базе поменять тип для телефона, вместо INt поставил TXT
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Wind  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Местная прописка
******

Профиль
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 739
Пользователь №: 41530
На форуме: 1 год, 8 месяцев, 24 дня
Карма: 9




Цитата (Astin @ 13.02.2016 - 17:07)
Пришлось в базе поменять тип для телефона, вместо INt поставил TXT


laugh.gif

Вы вообще разбираетесь в данном вопросе, о чем спрашиваете? Или полностью не понимаете что происходит?


--------------------
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Wind  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Местная прописка
******

Профиль
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 739
Пользователь №: 41530
На форуме: 1 год, 8 месяцев, 24 дня
Карма: 9




Astin

http://www.mysql.ru/docs/man/Column_types.html

Почитайте, я думаю вам будет полезно. Если конечно речь идет об обучении, а не лишь бы сайт работал wink.gif


--------------------
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Astin  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 592
Пользователь №: 42519
На форуме: 1 год, 1 месяц, 13 дней
Карма: 7




Извините, но пока плохо понимаю в базе данных.

Та что мне присвоить для поля телефон? Прочитал и пока понять не могу
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Wind  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Местная прописка
******

Профиль
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 739
Пользователь №: 41530
На форуме: 1 год, 8 месяцев, 24 дня
Карма: 9




Цитата (Astin @ 13.02.2016 - 17:27)
Та что мне присвоить для поля телефон? Прочитал и пока понять не могу


Идите еще читайте тогда wink.gif Прошло 15 минут, однако быстро вы читаете. Если уж вам лень прочитать и понять, то мне тем более лень вам объяснять smile.gif


--------------------
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Astin  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 592
Пользователь №: 42519
На форуме: 1 год, 1 месяц, 13 дней
Карма: 7




Цитата (Wind @ 13.02.2016 - 17:36)
Цитата (Astin @ 13.02.2016 - 17:27)
Та что мне присвоить для поля телефон? Прочитал и пока понять не могу


Идите еще читайте тогда wink.gif Прошло 15 минут, однако быстро вы читаете. Если уж вам лень прочитать и понять, то мне тем более лень вам объяснять smile.gif

Прочитал, но вот никак не могу до конца понять, какой тип лучше присвоить BIGINT или DOUBLE.
Все описано на профессиональном языке и не очень понятно. Конечно я еще раз прочту.
Но все подталкните пожалуйста, какой тип лучше и если можно скажите почему
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Wind  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Местная прописка
******

Профиль
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 739
Пользователь №: 41530
На форуме: 1 год, 8 месяцев, 24 дня
Карма: 9




Astin

Вы хорошо читали?

Число с плавающей точкой удвоенной точности нормального размера


У вас в номере есть число с плавающей точкой?

Если вы работаете с числами и вам не нужен диапазон с минусом, то лучше использовать атрибут UNSIGNED.

Если же номер имеет вот такой формат 8-7473725708. Это уже не число в таком случае нужно использовать VRCHAR.


--------------------
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Astin  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 592
Пользователь №: 42519
На форуме: 1 год, 1 месяц, 13 дней
Карма: 7




А если поставить в строковом хранении char(11). Может так будет проще?

Мне не нужны какие то символы в номере, просто одни цифры от номера
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
FatCat  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Чеширский кот
******

Профиль
Журнал
Группа: Администратор
Почтальон группы
Сообщений: 5994
Пользователь №: 1
На форуме: 11 лет, 1 месяц, 17 дней
Карма: 126

Не пью :
22 года, 6 месяцев, 18 дней


Цитата (Astin @ 13.02.2016 - 14:54)
$sum = htmlspecialchars($_POST["sum"]);

Цитата (Astin @ 13.02.2016 - 17:53)
Мне не нужны какие то символы в номере, просто одни цифры от номера

$sum = '';
for($i=0;$<strlen($_POST["sum"]);$i++)
$sum .= ("".intval($_POST["sum"][$i]) === $_POST["sum"][$i]) ? $_POST["sum"][$i] : "";


--------------------
Бесплатному сыру в дырки не заглядывают...
PMПисьмо на e-mail пользователюICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Astin  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 592
Пользователь №: 42519
На форуме: 1 год, 1 месяц, 13 дней
Карма: 7




FatCat, я вообще не понял про что вы написали

Я говорил про сохранение телефона базе и какой ему присвоить тип

Про $sum = htmlspecialchars($_POST["sum"]); Это я присваивал данные для отправки на почту
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Valick  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 5593
Пользователь №: 35718
На форуме: 4 года, 4 месяца, 5 дней
Карма: 170




INT


--------------------
wmr - R281553014107
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Astin  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 592
Пользователь №: 42519
На форуме: 1 год, 1 месяц, 13 дней
Карма: 7




Цитата (Valick @ 13.02.2016 - 19:59)
INT

не сохраняет нормально номер телефона в этом типе и пишет вместо номера 2147483647
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темыСтраницы: (2) [1] 2  Ответ в темуСоздание новой темыСоздание опроса