[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Заявка - заказ
ANG3
Здравствуйте! Мне очень нужно сделать форму отправки для заказа. (пользователь пишет данные, я их читаю через личный кабинет.) Я кое-что сам наклепал, но мне хотелось бы , что бы пользователь не мог отправить пустую заявку. А что-бы в ней обязательно был текст.
Я собираюсь в будущем просматривать эти данные через личный кабинет.

"Личный кабинет" - это файл защищённый паролем с помошью скрипта admin-Login-Only.

zakaz1.php

вырезка из кода.

HTML
<form method='POST' action='zakazpro.php'>
<p align='left'><b>ЗАКАЗ on-line</b>
<p align='left'><font face='Tahoma'><input type='text' name=name size='40'>
- Название организации (ваше имя)</font></p>
<p align='left'><font face='Tahoma'><input type='text' name=inn size='40'>
- ИНН/КПП</font></p>
<p align='left'><font face='Tahoma'><input type='text' name=address size='40'> -
Адрес</font></p>
<p align='left'><font face='Tahoma'><input type='text' name='tel' size='40'> -
Телефон для связи</font></p>
<p align='left'><font face='Tahoma'><input name=email type='text' size='40'>
- E-mail</font></p>
<p align='left'><font face='Tahoma'><b>Ваш заказ</b> (укажите
наименование (ГОСТ) и количество</font></p>
<p align='left'><font face='Tahoma'>необходимых метизов). Наши
менеджеры свяжутся с Вами.</font></p>
<p align='left'><font face='Tahoma'>
<textarea name="order" cols="40" rows="8"></textarea>
</font></p>
<p align='left'><font face='Tahoma'><input type='submit' value='Отправить' name='B1'><input type='reset' value='Сброс' name='B2'></font></p>
</form>


и
zakaz2.php

PHP
<?php
include('mysql.php')
?>


<?php
$name 
$_POST['name'];
$email$_POST['email'];
$address$_POST['address'];
$tel$_POST['tel'];
$inn$_POST['inn'];
$order$_POST['order'];
$date=date ('d.m.Y',mktime ());


mysql_select_db('db1');

$query="INSERT INTO `zakaz` VALUES (
'$order', '$name', '$email', '$tel', '$address', '$inn', '$date')"
;
mysql_query ($query) or die(mysql_error());



echo
"<p align='justify' style='color: #FFFFFF; font-family: Verdana; font-size: 10pt'>Спасибо! Ваша заявка принята.</p>";



mysql.php


PHP
<?php 

$hostname 
"localhost";
$username "root";
$password "1234";

mysql_connect($hostname,$username,$password) or die("Нет соединения"); 


Если существует скрипт с такими функциями, дайте плиз сылку или скажите как называется. Буду очень благодарен. biggrin.gif





Спустя 20 минут, 27 секунд (23.07.2009 - 01:19) pas написал(а):
Итак можно проверять на стороне клиента заполнение формы с помощью js перед отправкой, а можно проверять уже отправленные данные с помощью php. Естественно, использование этих двух вариантов будет даже лучше, так как не у всех пользователей включен js.
1. Проверка формы перед отправкой: почитать подробно можно здесь
2. Проверка формы после отправки:
Для этого используем функцию isset() для каждого важного параметра, который не должен быть пустым, иначе ругаемся, что не все поля заполнены и заново печатаем форму.

P.S. Надеюсь, я Вас правильно понял

Спустя 15 минут, 19 секунд (23.07.2009 - 01:34) Soldier Ghost написал(а):
Дополню примером!
Если не знаеш как юзать isset смотри ниже
пример:
PHP
if(isset($name))
{
//Тут проверки на всякие инъекции и правильность ввода
}
else
{
exit(
"Не заполнено имя");//Если имя не заполнено остонавливаем работу скрипта и выводим сообщение
}

Спустя 13 часов, 27 минут, 7 секунд (23.07.2009 - 15:01) ANG3 написал(а):
СПС. Правда isset я чет не очень понял, сделал просто условие.

Можно ли этот код сократить как-нибудь ? smile.gif

PHP
$name $_POST['name'];
if (
$name "\0")
{
 
}
else
{
exit(
"Не заполнено имя");
}      

$inn$_POST['inn'];
if (
$inn "\0")
{
 
}
else
{
exit(
"Не заполнен ИНН/КПП");
}    

$address$_POST['address'];
if (
$address "\0")
{
 
}
else
{
exit(
"Не заполнен адрес");
}

и так далее.

Так вроде всё работает, но вот база.
Я использую MySQl 5.1.32 + php 5.2.9 + Apache 2.2.11

phpMyAdmin есть, но я пользуюсь навикатом.

1. Если я пишу английские буквы, то всё вроде нормально, если русские то вылетает ошибка

Incorrect string value: '\xE8\xEC\xFF' for column 'name' at row 1 sad.gif

2. дата которая должна вписываться в базу: date ('d.m.Y',mktime ());
В базе выглядит вот-так 2023-07-20 09:00:00 хотя сегодня не такая дата.

З.Ы.
Как сделать поле в таблице бесконечным для символов?.

Скрин.
Ещё при заходе в таблицу навикат ругается, что нету PrimaryKey.

user posted image
ohmy.gif

Спустя 20 минут, 9 секунд (23.07.2009 - 15:22) _CaXaP_ написал(а):
Я б так сделал:
PHP
if (isset($_POST['name']) $name = trim(strip_tags($_POST['name'])); //защита от внедрения скрипта (вырезка всех тегов, но можно и не все вырезать - см. документацию) + защита от заполнения поля пробелами.
else $name=""; //Если не установлена, ставим её пустой
if ($name != "") //а лучше if (strlen($name)>3)) - проверка, что не менее 3 символов
{
 
}
else
{
exit(
"Пустое или слишком короткое имя");
}
      
//Остальное в том же духе... Есть ещё фукнция is_numeric($inn) - проверка, что данные состоят из цифр (для ИНН подойдёт).
}

Спустя 7 минут, 10 секунд (23.07.2009 - 15:29) ANG3 написал(а):
Cпс. Ща обкатаю. biggrin.gif

Спустя 24 минуты, 36 секунд (23.07.2009 - 15:53) Kuliev написал(а):
ANG3
Лана я тоже попробую выложить примерчик:
PHP
<?php
include('mysql.php')
?>


<?php
$err 
= array();

if(isset(
$_POST['action']))
{
    if(empty(
$_POST['name']) || empty($_POST['phone']))
    
$err[] = "Не все поля заполнены";
    
    
// в общем делаем валидацию полей

    // если нет ошибок и все в порядке пишем в базу
    
if(count($err) == )
    {
         
$sql = ("INSERT INTO `table` VALUE ('','".mysql_escape_string($_POST['name'])."', '".mysql_escape_string($_POST['phone'])."') ");
         
$res mysql_query($sql) or die (mysql_error() ."<br/>"$sql);
     }
     else
     {
          foreach(
$err as $val)
          {
                echo 
$val."<br/>";
           }
      }
}


Примерно так wink.gif

Спустя 15 минут, 7 секунд (23.07.2009 - 16:08) ANG3 написал(а):
Что-то не работает. Я упростил немного, лучше стало. Спс за скрипт laugh.gif

PHP
$name trim(strip_tags($_POST['name']));
if ( 
strlen($name)>//а лучше if (strlen($name)>3)) - проверка, что не менее 3 символов
{
 
}
else
{
exit(
"Пустое или слишком короткое имя");
}


Спустя 21 минута, 49 секунд (23.07.2009 - 16:30) Soldier Ghost написал(а):
Ты проверяеш чтобы логин был не более 3-х символов чтобы не менее так делай )
if (strlen($name) < 3 )

Спустя 13 минут, 24 секунды (23.07.2009 - 16:44) ANG3 написал(а):
Цитата
Ты проверяеш чтобы логин был не более 3-х символов чтобы не менее так делай )
if (strlen($name) < 3 )


У тебя получается, если длина меньше 3

Спустя 22 минуты, 21 секунда (23.07.2009 - 17:06) ANG3 написал(а):
Kuliev, ваш примерчик мне не осилить biggrin.gif

Но у меня такой вопрос:


Я использую MySQl 5.1.32 + php 5.2.9 + Apache 2.2.11

phpMyAdmin есть, но я пользуюсь навикатом.


1. Если я пишу английские буквы в свою форму заказа , то всё нормально, если русские то вылетает ошибка

Incorrect string value: '\xE8\xEC\xFF' for column 'name' at row 1

2. дата которая должна вписываться в базу: date ('d.m.Y',mktime ());
В базе выглядит вот-так 2023-07-20 09:00:00 хотя сегодня не такая дата.

Ещё при заходе в таблицу навикат ругается, что нету PrimaryKey.

З.Ы.
Как сделать поле в таблице бесконечным для символов?.

Скрин чуть выше в теме. С базой просто незнаю что делать. sad.gif

Зарание спасибо.

Спустя 2 часа, 2 минуты, 8 секунд (23.07.2009 - 19:08) Gabriel написал(а):
ключ ставиться в колонке полсе нул. бесконечные поля если я не ошибаюсь ето text и longtext, ключи ставяться в основном для поля id.

Спустя 5 минут, 45 секунд (23.07.2009 - 19:14) ANG3 написал(а):
Цитата
ключ ставиться в колонке полсе нул. бесконечные поля если я не ошибаюсь ето text и longtext, ключи ставяться в основном для поля id.


Спс. Ключ - это уникальность?

Спустя 48 минут, 44 секунды (23.07.2009 - 20:03) ANG3 написал(а):
вот ошибка от навиката:
user posted image

Спустя 16 минут, 1 секунда (23.07.2009 - 20:19) Gabriel написал(а):
создаеш поле id int default not null auto incriment и ставиш ключ.

Спустя 2 часа, 7 минут, 14 секунд (23.07.2009 - 22:26) ANG3 написал(а):
Я сделал такое поле. После этого при отправке данных ошибка.
Column count doesn't match value count at row 1

Спустя 24 минуты, 18 секунд (23.07.2009 - 22:50) ANG3 написал(а):
Помогла такая вешь:

PHP
$query="INSERT INTO `order` ( `order` , `name` , `email` , `tel` , `address` , `inn` , `date` ) 
VALUES (
'$order', '$name', '$email', '$tel', '$address', '$inn', '$date'
);
"
;



Плиз ответьте. Почему русский текст в базу не попадает? Ошибка

Incorrect string value: '\xF6\xE2\xF6\xE2' for column 'name' at row 1

Спустя 13 часов, 14 минут, 3 секунды (24.07.2009 - 12:04) Soldier Ghost написал(а):
Кодировка на странице и в базе какая?

Спустя 22 минуты, 10 секунд (24.07.2009 - 12:26) Mizka написал(а):
чуть поправлю "id int default not null auto incriment ":) Хотя уже Ghost отредактировал сообщение и задал почему-то совсем другой вопрос вместо своего ответа smile.gif
SQL
CREATE TABLE `table`(
`id` int(10) unsigned NOT NULL auto_increment,
...
PRIMARY KEY(`id`))

Спустя 57 минут, 30 секунд (24.07.2009 - 13:24) Gabriel написал(а):
я дал значения через навикат ето делаеться графически:)

Спустя 3 дня, 42 минуты, 30 секунд (27.07.2009 - 14:06) ANG3 написал(а):
Спс. А для чего вообще нужен этот ID? Он, как я понял, обязателен.

Спустя 1 минута, 31 секунда (27.07.2009 - 14:08) ANG3 написал(а):
Цитата
Кодировка на странице и в базе какая?


В базе вроде cp1251. На странице не знаю.
Посоветовали такую штуку
PHP
mysql_query ("SET NAMES `cp1251`");

помогло
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.