Модераторы: korob2001, ginnie

Поиск:

Закрытая темаСоздание новой темы Создание опроса
> Нужна помощь по работе с Базами Данных, Основано на модуле xbase 
:(
    Опции темы
rodendron
Дата 22.3.2005, 16:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 152
Регистрация: 22.3.2005

Репутация: нет
Всего: нет



sub view_main {
for (0 .. $vagreis->last_record) {
my ($deleted, $nv, $kg, $grot, $kgp, $esr_pogr, $qgv) = $vagreis->get_record($_,"NV", "KG", "GROT", "KGP", "ESR_POGR", "QGV");
if($kg = "23107") {
for (0 .. $grota->last_record) {
my ($deleted, $name, $st, $tgnl) = $grota->get_record($_,"NAME", "ST", "TGNL");
if($grot = $tgnl and $esr_pogr = $st) { print "$grot $tgnl $esr_pogr $st $name<br>"; }
}
}
}
}


Эта процедура выводит все записи из таблицы vagreis и grota.
То есть находит в vagreis запись и выбирает из grota соответсвующие ей.
например:

vagreis = 1,1,1,1,1,1
grota = 1,2,2,2,2,2
grota = 1,3,3,3,3,3
vagreis = 5,1,1,1,1,1
grota = 5,2,2,2,2,2
grota = 5,3,3,3,3,3
grota = 5,4,4,4,4,4
и т.д.

получается я четко не могу знать сколько записей найдется
а мне надо вывести только по 50 на каждой страничке
считать в массив все, и затем работать с ним - нереально, так как данные в массив копируются ну очень долго (столько же, сколько и выводятся, тогда уж проще их сразу вывести)

в связи с этим вопрос, как сделать разбивку по страничкам?

допустим поступает запрос. Вывести 50 записей с первой.

$start = 1;
$end = 50;
Вот так это работает:
for (0 .. $vagreis->last_record) { # из vagreis выбираем
...
for ($start .. $end) { из grota выбираем
print "$name";.

И если потом выбрать чтобы вывелись записи с 51 по 100, то тоже самое, только:

$start = 51;
$end = 100;
Вот так это работает:
for (0 .. $vagreis->last_record) { # из vagreis выбираем
...
for ($start .. $end) { из grota выбираем
print "$name";.

Но это неправильно, потому что когда мы дойдем до конца таблицы grota, то не сможем обратиться к параметрам выбора из vagreis
То есть из vagreis всегда будут выбираться данные с 0 по последнее.

Смысл такой, надо, не пользуясь массивами, изобразить следующее:
____________________________________________________
sub view_main {
for (0 .. $vagreis->last_record) {
my ($deleted, $nv, $kg, $grot, $kgp, $esr_pogr, $qgv) = $vagreis->get_record($_,"NV", "KG", "GROT", "KGP", "ESR_POGR", "QGV");
if($kg = "23107") {
for (0 .. $grota->last_record) {
my ($deleted, $name, $st, $tgnl) = $grota->get_record($_,"NAME", "ST", "TGNL");
if($grot = $tgnl and $esr_pogr = $st) { @array = ($grot, $tgnl, $esr_pogr, $st, $name); }
}
}
}
}

$start = 1;
$end = 50;

for ($i = $start; $i<$end; $i++) {
print "@array[$i]";
}
____________________________________________________

Заранее благодарен за помощь.
PM MAIL   Вверх
rodendron
Дата 22.3.2005, 18:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 152
Регистрация: 22.3.2005

Репутация: нет
Всего: нет



Народ, большое сорри!
В Perl же проверка равенства это не одно равно, а два.
Пересел с одного языка на другой
сорри!
PM MAIL   Вверх
Chuck
Дата 22.3.2005, 18:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Сушня
**


Профиль
Группа: Эксперт
Сообщений: 442
Регистрация: 12.12.2003
Где: Узбекистан, Ташке нт

Репутация: нет
Всего: 9



Ващет как я понял у тя там строка!
А сравнение строк выглядит так
Код

 if($kg eq "23107")  {...}

PM MAIL WWW GTalk   Вверх
korob2001
Дата 22.3.2005, 18:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: 13
Всего: 61



Цитата

Народ, большое сорри!
В Perl же проверка равенства это не одно равно, а два.
Пересел с одного языка на другой
сорри!

Если сравниваешь числа, то == , если строки, то eq
Теперь попробуй сам поправить свой код.

Удачи

ЗЫ:
rodendron

Модератор:
1. в одном топике, один вопрос и всё что с ним связано.
2. Когда вставляешь код, пользуйся кнопкой "Код".



--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
rodendron
Дата 23.3.2005, 13:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 152
Регистрация: 22.3.2005

Репутация: нет
Всего: нет



Спасибо!
А если я сравниваю русские буквы, то как сравнивать?
то есть

Код

$kgf = 'Песок';
$namekg = 'Песок';

if($kgf eq $namekg) { print "OK"; }


Не срабатывает

PM MAIL   Вверх
korob2001
Дата 23.3.2005, 13:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: 13
Всего: 61



Для сравнения кирилицы, подключи прагму use locale, в начале скрипта, потом сравнивай, так как в твоём примере.


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
rodendron
Дата 23.3.2005, 15:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 152
Регистрация: 22.3.2005

Репутация: нет
Всего: нет



Цитата(korob2001 @ 23.3.2005, 13:25)
Для сравнения кирилицы, подключи прагму use locale, в начале скрипта, потом сравнивай, так как в твоём примере.

А это модуль такой?
А то чего-то не найду.
PM MAIL   Вверх
korob2001
Дата 23.3.2005, 15:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: 13
Всего: 61



rodendron - что типа модуля, если быть точнее, модуль прагмы.
Просто в начале скрипта напиши вот так:
Код

#!/usr/bin/perl
use locale;
# Здесь пиши свой код

Удачи smile


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
Phoinix
Дата 23.3.2005, 16:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 16.11.2004
Где: Moskau

Репутация: 1
Всего: 2



korob2001

Я незнаю как у Вас, а у меня use locale; никогда само по себе не срабатывало, еще и POSIX подключать надо...
Код

  use locale;
  use POSIX qw (locale_h);
  setlocale(LC_CTYPE, 'ru_RU.CP1251');
  setlocale(LC_ALL, "ru_RU.CP1251");

PM WWW ICQ   Вверх
korob2001
Дата 23.3.2005, 16:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: 13
Всего: 61



Phoinix - а у нас всегда срабатывало. Вообще-то этим и занимается use locale.


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
Phoinix
Дата 23.3.2005, 16:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 16.11.2004
Где: Moskau

Репутация: 1
Всего: 2



korob2001
[OFF]
Просто смутное предчувствие, что это будет следующим вопросом
[/OFF]
А вообще, одно другому не мешает... ;)
PM WWW ICQ   Вверх
korob2001
Дата 23.3.2005, 16:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: 13
Всего: 61



Phoinix - что у тебя за ось???


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
rodendron
Дата 24.3.2005, 13:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 152
Регистрация: 22.3.2005

Репутация: нет
Всего: нет



А как быть с кавычками?

Значения из базы бывают вида ООО "Телеинтел".

вот это не помогает:

Код

$go = "$FORM{'go'}";


Резалтом является "ООО "

Заранее благодарен за ответ.
smile
PM MAIL   Вверх
korob2001
Дата 24.3.2005, 14:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: 13
Всего: 61



Ничего не понял, ты о чём??? Опиши подробнее чего ты хочешь добиться. smile


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
rodendron
Дата 24.3.2005, 14:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 152
Регистрация: 22.3.2005

Репутация: нет
Всего: нет



Простите...
Не смог рахобраться - вот и написал
а потом сразу разобрался.
Еще раз ссори.

ЗЫ:
Код

<OPTION VALUE='$go'>...

PM MAIL   Вверх
Закрытая темаСоздание новой темы Создание опроса
Правила форума "Perl: CGI программирование"
korob2001
sharq
  • В этом разделе обсуждаются вопросы относящиеся только к CGI программированию
  • Если ваш вопрос не относится к системному или CGI программированию, задавайте его в общем разделе
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", качать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: разработка для Web | Следующая тема »


 




[ Время генерации скрипта: 0.0546 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.