26 (изменено: Ketsyki, 2010-11-04 20:39:17)

Re: Help

хотя, наверное, и в правду, всю проверку лучше через регулярные выражения делать...

P.S. Это, блин, вообще нормально: 2 дня думать, как проверить форму, и кучу раз переписывать код, не зная, какой способ проверки лучше всего выбрать? smile На C когда пишу и то, не приходилось кучу раз код переписывать smile

P.S. var reg_Surname = /^[а-я0-9]+$/i; не работает. Код вообще не отличает, где английский, а где русский. Как ни введу, он сообщение об ошибке не дает.

<script>
function checkForm(obj){
                var return_value = true;
// Фамилия
var reg_Surname = /^[а-я0-9]+$/i;
var Surname = obj.Surname.value
// Текст сообщения об ошибке
var error_msg = "Не корректно заполнины поля: ";
// Проверка поля Фамилия
if(reg_Surname.exec(Surname) == null && Surname ==""){
                    error_msg += "Фамилия ";
                    return_value = false;
                }
//Проверка на наличие ошибок, если ошибка возникла, то выводим текст сообщения
        if(!return_value)
                    alert(error_msg);
                   
                return return_value;
            }

</script>

</head>

<body>

<form method="POST" action="loan.php" onsubmit="return checkForm(this);">

Фамилия:
<input name="Surname" type="text">
...

27

Re: Help

Идентификаторы (параметр id) нужны для работы с DOM структурой HTML кода. Работа с DOM структурой является наиболее правильной, так как корректно выполняется во всех браузерах. Очень хорошую документацию можно найти здесь: https://developer.mozilla.org/en/Gecko_DOM_Reference

Надо убрать логическое AND (&&), здесь оно мешает. Ругулярное выражение не пропустит пустую строку, поэтому оставьте:

if(!reg_Surname.test(Surname)){

28 (изменено: Ketsyki, 2010-11-05 23:26:44)

Re: Help

Думаю, создать такую форму: в выпадающем списке выбираем страну, в следующем списке появляются регионы этой страны, и в следующем города, которые находятся в этих регионах. Как это проще всего сделать? Почитал этот сайт http://ekimoff.ru/225/ нифига не понял. Есть способ полегче?

И эта... как базу, которая там на сайте, загрузить? Я скачал архив, распаковал. В phpmyadmin создал БД, зашел в нее, нажал кнопочку SQL вставил тут все, что было в блокноте и спустя несколько минут выскакивает ошибка Fatal error: Maximum execution time of 300 seconds exceeded in C:\Serv\xampp\phpMyAdmin\libraries\dbi\mysqli.dbi.lib.php on line 176

29

Re: Help

Ketsyki сказал:

как базу, которая там на сайте, загрузить?

Распакуйте архив и загрузите .sql файл через страницу импорта в phpMyAdmin.

Если связи не сложные и количество данных небольшое, то можно обойтись и без базы данных, достаточно собрать соответствующий Json объект. Это пример от которого можно оттолкнуться.

<head>
    <title>title</title>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<script type="text/javascript">
var oMain = {
    "Россия":[
        "Тверская область",
        "Московская область"
    ],
    "USA":[
        "Новая Англия",
        "Запад"
    ]
};
function J_select(country) {
    var i, o;
    var select = document.getElementById('region');
    if (oMain[country]) {
        select.innerHTML = '';
        o = document.createElement('option');
        select.appendChild(o);
        for (i = 0; i < oMain[country].length; i++) {
            o = document.createElement('option');
            o.value = oMain[country][i];
            o.text = oMain[country][i];
            select.appendChild(o);
        }
        select.style.display = 'inline';
    } else {
        select.style.display = 'none';
    }
}
</script>

</head>

<body>

<select id="country" onchange="javascript:J_select(this.value);">
    <option value=""></option>
    <option value="Россия">Россия</option>
    <option value="USA">USA</option>
</select>
<select id="region" style="display: none;"></select>


</body>
</html>

30

Re: Help

Базу загрузил smile Грузить пришлось частями, а то phpmyadmin ругался:)
Вот почитал статейку http://aioss.ru/programming/svyazat-pol … od-jquery/

Не могли бы вы объяснить, что такое "Хедер", "Селектор". И почему в форме добавлены 2 страны (Россия и Украина)? Т.е. страны из БД не грузятся, а их надо заранее вписать?

31

Re: Help

Header = заголовок <head> (заголовок) в документе html до тега <body> (<тело>)
Select = выбор

32

Re: Help

Ketsyki сказал:

что такое "Хедер"

Тег <head> в HTML коде.
Необходимо добавить указанный там JavaScript код внутри тега <script>, соответственно, помести этот <script> внутрь тега <head>. Обязательно подключите библиотеку jQuery, на которой работает пример.
http://jquery.com/

Селектор - это тег <select>

Две страны добавлены для примера, добавлять их надо при генерации страницы выбирая из БД с помощью PHP и формируя выпадающий список <select name="country_id" id="country_id">.
_____________

Дмитрий, спасибо. smile

33

Re: Help

А могли бы в статье нормально написать... а то я думал, что надо создать еще какой-то файл smile

34

Re: Help

Так, а где указывать название БД? И файлы  /data/config.php /classes/mysql.php, /data/dbconfig.php и /modules/functions.php какую функцию выполняют? Или это еще какая-то библиотека?

JQuery подключается переносом файлов jquery-1.4.2.min.js и jquery-ui-1.8.6.custom.min.js туда, где у меня все файлики, связанные с сайтом (так в одном мануале было написано)?

35

Re: Help

Ketsyki сказал:

Так, а где указывать название БД?

Вероятно в config.php.

Какую функцию выполняют другие файлы я не знаю, но убирать их не надо.

JQuery подключается переносом файлов и подключением в <head>.

36 (изменено: Ketsyki, 2010-11-08 16:22:51)

Re: Help

Тока не ругайтесь, у меня опять проблема smile

Для ввода даты в форму решал использовать календарик jQuery Datapicker. Вот создал страницу с формочкой и календариком:

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
        <title></title>
        <link type="text/css" href="css/ui-lightness/jquery-ui-1.8.6.custom.css" rel="stylesheet" />    
        <script type="text/javascript" src="js/jquery-1.4.2.min.js"></script>
        <script type="text/javascript" src="js/jquery-ui-1.8.6.custom.min.js"></script>


<script type="text/javascript">
            $(function(){

                // Datepicker
                $('#datepicker').datepicker({
                    inline: true
                });
                
                //hover states on the static widgets
                $('#dialog_link, ul#icons li').hover(
                    function() { $(this).addClass('ui-state-hover'); }, 
                    function() { $(this).removeClass('ui-state-hover'); }
                );
                
            });

        </script>
    






  




            
    </head>
    <body>
    
    <input  id="datepicker" type="text" />
            
                

        
    </body>
</html>

Дальше решил сделать выпадающий список для выбора года и месяца. Открыл мануал, почитал:

changeMonth

Type:
Boolean
Default:
false
Allows you to change the month by selecting from a drop-down list. You can enable this feature by setting the attribute to true.

Code examples

Initialize a datepicker with the changeMonth option specified.
$( ".selector" ).datepicker({ changeMonth: true });
Get or set the changeMonth option, after init.
//getter
var changeMonth = $( ".selector" ).datepicker( "option", "changeMonth" );
//setter
$( ".selector" ).datepicker( "option", "changeMonth", true );
changeYear

Type:
Boolean
Default:
false
Allows you to change the year by selecting from a drop-down list. You can enable this feature by setting the attribute to true. Use the yearRange option to control which years are made available for selection.

Code examples

Initialize a datepicker with the changeYear option specified.
$( ".selector" ).datepicker({ changeYear: true });
Get or set the changeYear option, after init.
//getter
var changeYear = $( ".selector" ).datepicker( "option", "changeYear" );
//setter
$( ".selector" ).datepicker( "option", "changeYear", true );

А вот куда этот код писать так и не понял sad И я так понимаю, что для использования такого выпадающего списка надо ограничить максимальную и минимальную дату?

maxDate

Type:
Date, Number, String
Default:
null
Set a maximum selectable date via a Date object or as a string in the current dateFormat, or a number of days from today (e.g. +7) or a string of values and periods ('y' for years, 'm' for months, 'w' for weeks, 'd' for days, e.g. '+1m +1w'), or null for no limit.

Code examples

Initialize a datepicker with the maxDate option specified.
$( ".selector" ).datepicker({ maxDate: '+1m +1w' });
Get or set the maxDate option, after init.
//getter
var maxDate = $( ".selector" ).datepicker( "option", "maxDate" );
//setter
$( ".selector" ).datepicker( "option", "maxDate", '+1m +1w' );
minDate

Type:
Date, Number, String
Default:
null
Set a minimum selectable date via a Date object or as a string in the current dateFormat, or a number of days from today (e.g. +7) or a string of values and periods ('y' for years, 'm' for months, 'w' for weeks, 'd' for days, e.g. '-1y -1m'), or null for no limit.

Code examples

Initialize a datepicker with the minDate option specified.
$( ".selector" ).datepicker({ minDate: new Date(2007, 1 - 1, 1) });
Get or set the minDate option, after init.
//getter
var minDate = $( ".selector" ).datepicker( "option", "minDate" );
//setter
$( ".selector" ).datepicker( "option", "minDate", new Date(2007, 1 - 1, 1) );

И еще вопрос smile : При отправке  даты в БД если дата вводиться в форму как текст, а в БД для даты стоит формат date, то как данные отправить? Просто придать дате в форме вид "год-месяц-день" и отправить так, как обычно это делаю?

37

Re: Help

Ketsyki сказал:

И я так понимаю, что для использования такого выпадающего списка надо ограничить максимальную и минимальную дату?

Откройте страницу примеров на сайте и посмотрите исходный код, так будет легче разобраться.
http://jqueryui.com/demos/datepicker/#min-max

Настройки задаются в виде параметров функции datepicker.

<script>
$(function() {
    $( "#datepicker" ).datepicker({ minDate: -20, maxDate: "+1M +10D" });
});
</script>

Если формат даты будет 2010-11-04, то такие данные можно сразу вставлять в БД, иначе их необходимо форматировать в такой вид. Форматировать лучше всего с помощью регулярного выражения, так как можно одновременно проверить корректность данных. Смотрите документацию функции preg_match().

38

Re: Help

Очередная трабла smile Ввод даты в БД.
index.html

<link type="text/css" href="css/ui-lightness/jquery-ui-1.8.6.custom.css" rel="stylesheet" />    
    <script type="text/javascript" src="js/jquery-1.4.2.min.js"></script>
    <script type="text/javascript" src="js/jquery-ui-1.8.6.custom.min.js"></script>
    <script src="js/jquery-ui-i18n.js" type="text/javascript"></script>  

<script type="text/javascript">
$(function(){
  $.datepicker.setDefaults(
        $.extend($.datepicker.regional["ru"])
  );
  $("#Date").datepicker({
    minDate: new Date(1930, 1 - 1, 1),
    maxDate: new Date(2000, 1 - 1, 1),
    changeYear: true,
yearRange: '1930:1999',
changeMonth: true,
dateFormat: "yy-mm-dd"

  });
});
</script> 
...
...
...

<input  id="Date" type="text" />

loan.php

...
...
...
$Date = addslashes($_POST['Date']);
...
...
...
$query = "INSERT INTO $userstable VALUES(...'$Date'...)";
...

Все данные из формы, кроме даты, вводятся нормально.
В БД дата вводится в графу Date, формат date. Но все данные приходят в виде 0000-00-00. Че я не так пишу? Вроде бы и в jQuery формат стоит yy-mm-dd...

39

Re: Help

Поменяйте на:

dateFormat: "yyyy-mm-dd"

40

Re: Help

Неа, не прокатит. По мануалу на сайте надо писать yy, если написать yyyy , то 2 раза выведется год, например 19991999

41

Re: Help

Проверьте что передает через $_POST['Date'] при отправке формы.

42 (изменено: Ketsyki, 2010-11-17 21:57:21)

Re: Help

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

name="Date"

А вот еще я хочу сделать, чтоб юзеры отправляли по файлику, и как организовать прием и хранение этого файла? Хранить фал прямо  БД (если, конечно, так можно) или хранить в БД ссылку на файл, а сам файл кидать в отдельную папку для каждого юзера?

43

Re: Help

Ketsyki сказал:

А вот еще я хочу сделать, чтоб юзеры отправляли по файлику, и как организовать прием и хранение этого файла?

Самый простой и эффективный способ - это хранить файлы на сервере, а в БД держать их имена или пути к ним. Таким образом не надо заботиться о механизме кеширования, да и в целом считается, что веб-сервер отдает файлы быстрее MySQL. Можно делать отдельные каталоги для каждого пользователя, а можно выделить только один, это зависит от количества файлов и того насколько важна их файловая организация.

44

Re: Help

Вот почитал http://blog.wel.org.ua/lang/%D0%B5%D1%8 … 0%B5%D0%BB

Вроде бы и код понял, но что такое PDO? Как его поставить? Тут вот почитал http://ua.php.net/manual/en/pdo.installation.php
Но с английским дружу плохо. У меня стоит XAMPP и PHP 5.3.1, т.е., как я понял, пункт 1 выполнять не надо. А что вот в пункте 2 делать? И этот PDO не повлияет на работу БД? Не дай бог, испортит чего...

45

Re: Help

Ketsyki сказал:

И этот PDO не повлияет на работу БД?

Нет, это просто другая библиотека для доступа к MySQL.

Если PHP 5.3 и выше, то PDO уже должно быть подключено. Это можно посмотреть в phpinfo().
Во 2 пункте указаны библиотеки, которые необходимо раскомментировать для работы PDO.
Для вас важными будут только:
extension=php_pdo.dll
extension=php_pdo_mysql.dll

46 (изменено: Ketsyki, 2010-11-24 17:12:15)

Re: Help

PDO подключил, а код не работает. Причем не пойму, не работает страничка index, на которой находится форма и скрипт по отправке параметров (при нажатии на список даже надпись "Загрузка" не появляется) или страничка city.php, которая должна отправлять список регионов и городов. Или, может быть, что то с PDO или JQuery?  Или в XAMMP'е AJAX не работает? О_О

Как можно проверить, что именно не работает?

47

Re: Help

Ketsyki сказал:

Или в XAMMP'е AJAX не работает?

Ajax не зависит от сервера.

Надо смотреть ошибки в логах Apache, иначе нельзя ничего понять.

Если проблема заключается в выполнении JavaScript, то рекомендую установить плагин Firebug в браузер Firefox, который поможет отловить ошибки.

48

Re: Help

Как же мне эти страны и города надоели...
В логах такая фигня:
[Wed Nov 24 19:23:43 2010] [error] [client ::1] File does not exist: C:/Serv/xampp/htdocs/wp-content, referer: http://localhost/zxc/
[Wed Nov 24 19:23:43 2010] [error] [client ::1] File does not exist: C:/Serv/xampp/htdocs/favicon.ico

Файлы не существуют... Да они мне, как бы, и не нужны... про файл favicon.ico в логах вообще написано об ошибке при каждом запуске сайта.

Фигефох с фигебохом тоже ниче такого не показали...

49

Re: Help

Если в каталоге C:/Serv/xampp/htdocs/wp-content не должны находиться какие-то рабочие файлы, то эту ошибку вместе с favicon.ico можно забыть.

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

50

Re: Help

Спасибо, завтра буду дальше мучать код smile Все таки C++ легче. На нем я бы уже давно все написал smile