![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 55 Pomógł: 0 Dołączył: 26.12.2007 Ostrzeżenie: (0%) ![]() ![]() |
Witam, napisałem taki kod, wiem że nie jest za bardzo optymalny( i chce to zmienić ) ale na chwilę obecną działa. Próbowałem coś tam zmieniać ale coś nie wychodzi.
Pierwotna wersja: CODE <? $sql_1 = 'SELECT type, name FROM menu'; $result = mysql_query($sql_1) or die(mysql_error()); $ile=mysql_num_rows($result); if ($ile>0 && ($result)) { while ($r=mysql_fetch_assoc($result)) { echo ''."\n"; echo ''.$r['name'].''."\n"; $sql_2 = 'SELECT txt_id, alias FROM txt WHERE menid="'.$r['type'].'"'; $result_1 = mysql_query($sql_2) or die(mysql_error()); $sql_3 = 'SELECT anchor, adres FROM menu_links WHERE type="'.$r['type'].'"'; $result_3 = mysql_query($sql_3) or die(mysql_error()); while ($r1=mysql_fetch_assoc($result_1)) { echo '» '.$r1['alias'].''."\n"; while ($r2=mysql_fetch_assoc($result_3)) { echo '» '.$r2['anchor'].'.'."\n"; } } echo ''."\n"; } } ?> A teraz moje wypociny: CODE <? $result = mysql_query('SELECT type, name FROM menu') or die(mysql_error()); if ($result) { while ($r=mysql_fetch_assoc($result)) { echo ''."\n"; echo ''.$r['name'].''."\n"; $result_1 = mysql_query('SELECT txt.txt_id, txt.menid, txt.alias, menu_links.anchor, menu_links.adres, menu_links.type FROM txt LEFT JOIN menu_links ON (txt.menid=menu_links.type) WHERE txt.menid="'.$r['type'].'" AND menu_links.type="'.$r['type'].'"') or die(mysql_error()); while ($r1=mysql_fetch_assoc($result_1)) { echo '» '.$r1['alias'].''."\n"; while ($r2=mysql_fetch_assoc($result_1)) { echo '» '.$r2['menu_links.anchor'].'.'."\n"; } } echo ''."\n"; } } ?> Podejrzewam, że nie tak jest albo te łączone zapytanie albo dwie pętle po nim. Pozdrawiam
Powód edycji: dodałem tag (cysiaczek)
|
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 234 Pomógł: 5 Dołączył: 26.01.2008 Skąd: Lutcza Ostrzeżenie: (20%) ![]() ![]() |
// jaki błąd ci wywalało? Ten post edytował Zmorcia 22.12.2008, 18:54:04 -------------------- POMOGŁEM ? Wciśnij "Pomógł" , dzięki !
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 55 Pomógł: 0 Dołączył: 26.12.2007 Ostrzeżenie: (0%) ![]() ![]() |
Nikt nie wie jak to skrocic ?
![]() CODE while ($r=mysql_fetch_assoc($result)) { echo ''."\n"; echo ''.$r['name'].''."\n"; $sql_2 = 'SELECT txt_id, alias FROM txt WHERE menid="'.$r['type'].'"'; $result_1 = mysql_query($sql_2) or die(mysql_error()); $sql_3 = 'SELECT anchor, adres FROM menu_links WHERE type="'.$r['type'].'"'; $result_3 = mysql_query($sql_3) or die(mysql_error()); while ($r1=mysql_fetch_assoc($result_1)) { echo '» '.$r1['alias'].''."\n"; while ($r2=mysql_fetch_assoc($result_3)) { echo '» '.$r2['anchor'].'.'."\n"; } } echo ''."\n"; } up.. Ten post edytował lukas22333 22.12.2008, 20:53:41 |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 640 Pomógł: 44 Dołączył: 8.02.2004 Ostrzeżenie: (0%) ![]() ![]() |
Nie zawsze 1 zapytanie jest lepsze. Stosowanie JOINów może wydawać się ładne i takie "pro", ale dość często przy większym obciążeniu zapytania takie mogą mocno obciążać bazę danych.
-------------------- |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 55 Pomógł: 0 Dołączył: 26.12.2007 Ostrzeżenie: (0%) ![]() ![]() |
To co w tej pierwotnej wersji proponujesz zminienic? zamiast tych zapytań.
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 120 Pomógł: 12 Dołączył: 9.10.2008 Skąd: Tricity.Rumia() Ostrzeżenie: (0%) ![]() ![]() |
Nie zawsze 1 zapytanie jest lepsze. Prosiłbym o przykład.
To tak na oko. Nie chce mi sie na podstawie kodu rozkminiac twojej struktury bazy danych ale stosowanie relacji 1-1 a potem łączenie tabel aby zrobić SELECT-a jest raczej mało optymalne. |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 14 Pomógł: 1 Dołączył: 23.12.2008 Skąd: Radzionków Ostrzeżenie: (0%) ![]() ![]() |
nie wykonuj kolejnych zapytan w petli, lepiej zrob sobie tablice ktora bedzie przechowywac kolejne slowniki a w petli tylko korzystaj z zmiennych php a nie operuj na zapytaniach sql
-------------------- Tomasz Ślązok Nexik
http://www.nexik.net/ |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 55 Pomógł: 0 Dołączył: 26.12.2007 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 120 Pomógł: 12 Dołączył: 9.10.2008 Skąd: Tricity.Rumia() Ostrzeżenie: (0%) ![]() ![]() |
według mnie to powinno działać szybciej:
Fajna łamigłówka ![]() Ten post edytował pinochet 24.12.2008, 02:25:02 |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 55 Pomógł: 0 Dołączył: 26.12.2007 Ostrzeżenie: (0%) ![]() ![]() |
Warning: Invalid argument supplied for foreach() in ...... on line 18
![]() Linijka 18 to ta: CODE foreach($menu as $nazwa => $aliasy){ A kod lamiglowka bo nie wiem jak to inaczej by zrobic ![]() |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 120 Pomógł: 12 Dołączył: 9.10.2008 Skąd: Tricity.Rumia() Ostrzeżenie: (0%) ![]() ![]() |
oczywiscie nie $menu tylko $aliasy
|
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 90 Pomógł: 4 Dołączył: 5.02.2006 Ostrzeżenie: (0%) ![]() ![]() |
Dobry czlowieku:
Poznaj skladnie PHP Nastpenie Poznaj Skladnie MySQL Pytania z ktorymi wyskakujesz sa tak oczywiste i banalne, ze az mi za Ciebie wstyd! Pozatym, nigdzie nie widze, zadnego mechanizmu cachowania... chcesz zeby bylo optymalnie zasanow sie kiedy trzeba sie odwolowac do bazy danych, tabele mazwales memu badz podobnie a takie dane powinny byc statyczne anyway: imo, z tych strzepow informacji ktore uzyskalem wydaje mi sie ze baza jest zaprojekowana zle! Wklej caly kod tabli pokaz zaptania, napisz jaki masz cel i czego oczekujesz, poradzimy cos wiecej! -------------------- torrenty
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 02:43 |