Клубове Дир.бг
powered by diri.bg
търси в Клубове diri.bg Разширено търсене

Вход
Име
Парола

Клубове
Dir.bg
Взаимопомощ
Горещи теми
Компютри и Интернет
Контакти
Култура и изкуство
Мнения
Наука
Политика, Свят
Спорт
Техника
Градове
Религия и мистика
Фен клубове
Хоби, Развлечения
Общества
Я, архивите са живи
Клубове Дирене Регистрация Кой е тук Въпроси Списък Купувам / Продавам 19:46 19.06.24 
Компютри и Интернет
   >> PHP
Всички теми Следваща тема *Кратък преглед

Страници по тази тема: 1 | 2 | 3 | 4 | >> (покажи всички)
Тема Разделяне на информациятанови  
Автор hrisunko (Наблюдател)
Публикувано06.09.01 19:50



Когато получавам записи от базата данни и те са прекалено много да се покажат наведнъж на екрана, мога ли да ги разделя на страници по 10 записа? Ако има възможност, моля да ми помогнете за скрипта.

Мерси предварително



Тема Re: Разделяне на информациятанови [re: hrisunko]  
Авторedmon (Нерегистриран)
Публикувано06.09.01 23:36



select .... limit



Тема Re: Разделяне на информацията [re: hrisunko]  
АвторAlien (Нерегистриран)
Публикувано07.09.01 10:37



Mojesh eventualno da probvash da prenesesh $sql_query_result na sledvashtata stranitza i kato i napravish da rechem mysql_fetch_array($sql_query_result) da otpechatash ostanalite ti redove!
Prenasqneto sam si izberi kak da go napravish ama preporychvam sys Session. Vse pak e po-sigurno!



Тема Re: Разделяне на информациятанови [re: hrisunko]  
Автор curly (Well known :P)
Публикувано07.09.01 18:04



Ami powe4eto SQL serveri imat LIMIT

MySQL primer
SELECT blah FROM foo LIMIT 0,30
pokazfa 1st 30 lines

SELECT blah FROM foo LIMIT 30,30
pokazfa 2nd 30 lines

rgdz
curly


Тема Re: Разделяне на информациятанови [re: curly]  
Автор hrisunko (Наблюдател)
Публикувано08.09.01 12:19



Това ми трябваше! Още не съм го опитал, но имам предчувстие :) Не знаех за съществуването на втория аргумент на limit, но явно ще свърши работа.

Мерси.



Тема Re: ????????? ?? ???????????? - MySQL onlyнови [re: hrisunko]  
Автор salle (Един такъв)
Публикувано10.09.01 14:32



Въпросът е доста по дебел (и съответно интересен)

А именно когато става въпрос за тежък SELECT
Да кажем select без limit ти връща 100 000 реда

Проблем N1,
LIMIT $x, $y където $x и $y ги заместваш в движение с next10, prev10 е съвсем очевидно:

print"<a href=$PHP_SELF?x=$x&y=$y ....

Обаче това означава, че при всяко Next, Prev MySQL ще изпълнява пълния SELECT т.е. всичките 100 000 реда само ще ти връща x,y

Проблем N2

Ако искаш да сложиш нещо в стил:
Records 20-30 from 100 000

ще трябва да изпълниш SELECT-а 2 пъти
1. select count(*) from ... where .....;
2. select .... where ... limit x, y;

Така, че нещата стават доста дебели


Предложение:
Временна таблица. Т.е. кеширане на SELECT-а
Само, че в случая не може да се използва TEMPORARY TABLE на MySQL защото тя важи само за текущия PHP дори да се използва mysql_pconnect()

Та предложението ми е:
1-во извикване на страницата
генерираш нещо случайно, уникално и т.н. като име на таблица
$cache_tbl = '?????';
create table $cache tbl select .... тук следва пълния SELECT който искаш да търкаляш напред назад

select count(*) from $cache_tbl;

Оттук вече имаш Броя Редове Които Връща Твоя Оригинален SELECT

2. select * from $cache_tbl limit $x, $y;

И във <Prev><Next> предаваш $cache_tbl, $x, $

При което, оригиналната таблица се SELECT-ва еднократно, т.е. избягва се LOCK-ването и и освен това печелиш доста скорост.

Остава за решаване един (дребен :))) ) проблем:


Трябва да пазиш някъде списък на така създадените временни таблици и отвреме на време да ги триеш.
Щото това да прихванеш кога потребителя "Излиза" от страницата както всички знаем в HTML хич не е възможно

Linux is like a wigwam - No Windows, No Gates, Apache inside


Тема Re: ????????? ?? ???????????? - MySQL onlyнови [re: salle]  
Автор Цвeтaн ЦвeтkoвАдминистратор (Администратор)
Публикувано10.09.01 15:26



Може ли да не се съглася с нещо ;))

1.ако SELECT връща 100 000 реда, при LIMIT 50,100 при достигане на 100 MySQL, спира обработката и връща резултата без да го интересуват че общо са 100 000
Този проблем е дискутиран на дълго и на шитоко, и до колкото знам в последните версии е така както го описвам.

2. select count(*) from ... where .....; се прави само при генерирането на първата страница. След това си предаваш параметър $max_row и готово, избягва се тези заявка

:)

...


Тема db connection pool ...нови [re: salle]  
Автор AcidMemory (minimalist)
Публикувано10.09.01 16:12



ako imashe built-in db connection pool, to togawa shteshe da e neobhodimo samo edno izpylnenie na zaqwkata, tyj kato celiq problem e w towa, che persistentnostta na konekciqta w mysql (a i izobsto w php-to) waji samo za syotwetniq child process na webserver-a
(t.e. trqbwa ti neshto ot roda na

)



Тема Re: Хайде малко да не е така :)нови [re: Цвeтaн Цвeтkoв]  
Автор salle (Един такъв)
Публикувано10.09.01 17:48



1.
select ... where ... limit 50, 100;
Да

select ... where ... group by ... order by ... desc limit 50, 100;
Не
Във втория случая MySQL претъркулва цялата таблица във temp пише я във файл сортира го и чак тогава налага правилото LIMIT

Освен това дори и в случаите когато си прав

limit 50, 100 ще сортира 150 реда и ще спре след това нали така? За да ти изведе редове от 51 до 100
А limit 50, 2000 ще сспре след 2050 реда!!!!

2. Само ако таблицата е статична. Т.е. никой не пише докато web сървъра чете.
Прав ли съм?

В заключение.
Това което предложих не е решение за 100% от случаите
Нито пък твоите разсъждения

Винаги казвам: На който и да е въпрос относно бази данни правилния отговор е:
- Зависи




Linux is like a wigwam - No Windows, No Gates, Apache inside


Тема Re: db connection pool ...нови [re: AcidMemory]  
Автор salle (Един такъв)
Публикувано10.09.01 17:51



Това пак не решава проблема с Logoff от web страницата
т.е. пак опираш до нещо от сорта на cookies, expire и т.н.

Linux is like a wigwam - No Windows, No Gates, Apache inside



Страници по тази тема: 1 | 2 | 3 | 4 | >> (покажи всички)
Всички темиСледваща тема*Кратък преглед
Клуб :  


Clubs.dir.bg е форум за дискусии. Dir.bg не носи отговорност за съдържанието и достоверността на публикуваните в дискусиите материали.

Никаква част от съдържанието на тази страница не може да бъде репродуцирана, записвана или предавана под каквато и да е форма или по какъвто и да е повод без писменото съгласие на Dir.bg
За Забележки, коментари и предложения ползвайте формата за Обратна връзка | Мобилна версия | Потребителско споразумение
© 2006-2024 Dir.bg Всички права запазени.