| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Perl: разработка для Web > Нужна помощь по работе с Базами Данных |
| Автор: rodendron 22.3.2005, 16:15 |
| 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]"; } ____________________________________________________ Заранее благодарен за помощь. |
| Автор: rodendron 22.3.2005, 18:01 |
| Народ, большое сорри! В Perl же проверка равенства это не одно равно, а два. Пересел с одного языка на другой сорри! |
| Автор: Chuck 22.3.2005, 18:15 | ||
| Ващет как я понял у тя там строка! А сравнение строк выглядит так
|
| Автор: korob2001 22.3.2005, 18:18 | ||
Если сравниваешь числа, то == , если строки, то eq Теперь попробуй сам поправить свой код. Удачи ЗЫ: rodendron Модератор: 1. в одном топике, один вопрос и всё что с ним связано. 2. Когда вставляешь код, пользуйся кнопкой "Код". |
| Автор: rodendron 23.3.2005, 13:01 | ||
| Спасибо! А если я сравниваю русские буквы, то как сравнивать? то есть
Не срабатывает |
| Автор: korob2001 23.3.2005, 13:25 |
| Для сравнения кирилицы, подключи прагму use locale, в начале скрипта, потом сравнивай, так как в твоём примере. |
| Автор: rodendron 23.3.2005, 15:54 | ||
А это модуль такой? А то чего-то не найду. |
| Автор: korob2001 23.3.2005, 15:58 | ||
| rodendron - что типа модуля, если быть точнее, модуль прагмы. Просто в начале скрипта напиши вот так:
Удачи |
| Автор: Phoinix 23.3.2005, 16:17 | ||
| korob2001 Я незнаю как у Вас, а у меня use locale; никогда само по себе не срабатывало, еще и POSIX подключать надо...
|
| Автор: korob2001 23.3.2005, 16:22 |
| Phoinix - а у нас всегда срабатывало. Вообще-то этим и занимается use locale. |
| Автор: Phoinix 23.3.2005, 16:26 |
| korob2001 [OFF] Просто смутное предчувствие, что это будет следующим вопросом [/OFF] А вообще, одно другому не мешает... ;) |
| Автор: korob2001 23.3.2005, 16:30 |
| Phoinix - что у тебя за ось??? |
| Автор: rodendron 24.3.2005, 13:59 | ||
| А как быть с кавычками? Значения из базы бывают вида ООО "Телеинтел". вот это не помогает:
Резалтом является "ООО " Заранее благодарен за ответ. |
| Автор: korob2001 24.3.2005, 14:06 |
| Ничего не понял, ты о чём??? Опиши подробнее чего ты хочешь добиться. |
| Автор: rodendron 24.3.2005, 14:08 | ||
| Простите... Не смог рахобраться - вот и написал а потом сразу разобрался. Еще раз ссори. ЗЫ:
|
| Автор: korob2001 24.3.2005, 14:12 |
| Модератор: в одном топике, один вопрос и всё что с ним связано. Тема закрыта |