Autor | Zpráva | ||
---|---|---|---|
23k Profil |
#1 · Zasláno: 20. 5. 2005, 12:24:38
Hoj.
Problem. V DB si vytvorim tabulku podobnou teto pageID | parrentID | stranka.php | nazev_odkazu kazda stranka patri do sve kategorie (parrentID) takze existuje nco takoveho 1 | 100 | stranka1.php | informace 2 | 100 | stranka2.php | kontakt 3 | 300 | stranka3.php | reference to zatim neni problem .... ale pak si vytvorim vlastne jeste stranky kategorie cili 100 | NULL | kategorie1.php | kategorie1 200 | NULL | kategorie2.php | kategorie2 300 | NULL | kategorie3.php | kategorie3 Problem je v tom ze po vytvoreni techto 3 a vice hlavnich kategorii pod ktere se budou clenit jednotlive stranky se autoincrement zvysuje od cisla 300 ...tj posledne vlozene stranky. Takze chci vlozit stranku treba vysledky.php , zaradit ji do kategorie 200 a ID stranky bude 301 ...coz se mi tedy moc nelibi... Schvalne jsem dal kategoriim vysoka cisla abych je odlisil od beznych stranek... tech bude tak 40-50 ... takze to potrebuju nejak zachovat aby se pri dalsim vlozeni nejake stranky pokracovalo od nizsiho cisla ...kde sem prestal. a ne od posledniho vysokeho cisla kategorie. Nevite jak? Samozrejme muzu pouzit 2 tabulky (stranky a kategorie) ...ale to se mi nechce. DIKY:) |
||
Hugo Profil |
#2 · Zasláno: 20. 5. 2005, 12:30:00
Nejlepsi to bude rozclenit podle kategorii, jinak budes muset ID generovat rucne (zjistit nejvyssi aktualni a zvetsit ho o jednicku).
|
||
23k Profil |
#3 · Zasláno: 20. 5. 2005, 13:03:33
jak je to mineno?
|
||
Hugo Profil |
#4 · Zasláno: 20. 5. 2005, 13:51:57
Pokud myslis rozcleneni, tak udelas nekolik stejnych tabulek a budes to tam rvat podle kategorii.
Jinak budes muset z tabulky zjistit nejvyssi ID pro danou kategorii a pri vkladani noveho radku, ho jen inkrementujes. Toto ma ale hodne nevyhod - max. 100 polozek v dane kategorii, muze dojit ke kolizi pri odeslani dvou dotazu ve stejnou dobu atd. Rozhodne bude lepsi udelat vic tabulek. |
||
llook Profil |
#5 · Zasláno: 20. 5. 2005, 14:01:33
Proč musí mít kategorie tak vysoký číslo? Že nejde o stránku ale kategorii je přece zřejmé z toho NULLu, buďto bych to udělal takhle:
1 | 4 | stranka1.php | informace 2 | 4 | stranka2.php | kontakt 3 | 6 | stranka3.php | reference 4 | NULL | kategorie1.php | kategorie1 5 | NULL | kategorie2.php | kategorie2 6 | NULL | kategorie3.php | kategorie3 A nebo dvě tabulky. |
||
printf Profil |
#6 · Zasláno: 20. 5. 2005, 14:10:31 · Upravil/a: printf
Schvalne jsem dal kategoriim vysoka cisla abych je odlisil od beznych stranek
Osobně bych byl proti tomu označení 100, 200, 300... to přece není nutné, kategorii dostatečně odlišuje že nemá předka parentID, ten tvůj postup je podle mně proti zvyklostem přidělování ID. Stejně se v tom bude hrabat nějaký script a tomu je jedno jestli je tam 1 nebo 100. Z principu bych také nespoléhal na to, že stránek v kategorii bude 40-50. No ale jestli na tom trváš, tak to budeš muset incrementovat ručně. Dvě tabulky by asi byly úplně nejlepší, ale tenhle postup s jednou tabulkou zase dává možnost neomezeného vnořování dalších podkategorií. Ještě mě napadlo: pokud ty kategorie budou jednou dané a nebudou se měnit (často), nebylo by špatné je dát do pole, indexovaného sloupcem parentID, pak bys nemusel zbytečně obtěžovat databázi při každém načtení stránky. |
||
Leo Profil |
#7 · Zasláno: 20. 5. 2005, 14:15:40
Pokud jde o ulozeni hierarchicke struktury webu, pak nejspis jedna tabulka, a s ID se vubec nezalamujte, urovne zanoreni jak uz nekdo psal vam postihuje ten parentID sloupec. Leo
|
||
23k Profil |
#8 · Zasláno: 20. 5. 2005, 14:22:24
tak nak se tady behem prace odbiham ke skriptum a zkousim si to ...
a stale mi to jaxi nevychazi .... nejdriv vytaham v 1. cyklu stranky kde kategorie = NULL a tim dostanu seznam kategorii. Pak v 2 cyklu ktery je vne 1 je dalsi select ktery taha stranky kde parentID = cislo ktere jsme dostali 1 selectem...ale nak mi to blbne Jak to ma byt? Mozna to bude chtit vic casu a zkouseni, tj. az doma... ;) |
||
Leo Profil |
#9 · Zasláno: 20. 5. 2005, 16:33:42
A co se vlastne snazite z te dababaze ted dostat? Leo
|
||
23k Profil |
#10 · Zasláno: 20. 5. 2005, 16:41:55
www.eurodesk.cz melo by to fungovat takto ..jako rozklivaci seznam.... mam opet sve obdobi kdyz mi funguje pouze ECHO ...
<? mysql_connect("localhost", "", ""); mysql_select_db("test"); // vybereme hlavni kategorie $sql=mysql_query("select * from pages where parrentID is NULL"); while($r=mysql_fetch_array($sql)) { echo "<a href='$r[pageID]'>$r[nazev_odkazu]</a> <br/>"; // vybere prislusne stranky spadajici do kategorie $sql2=mysql_query("select * from pages where parrentID='$r[0]'"); while($r=mysql_fetch_array($sql2)) { echo "<a href='$r[pageID]'>$r[nazev_odkazu]</a> <br/>"; } //konec vnoreneho while } // konec prvniho WHILE /* pageID parrentID nazev_stranky nazev_odkazu Upravit Smazat 001 100 prvni.php prvni Upravit Smazat 002 100 druha.php druhy Upravit Smazat 003 100 treti.php treti Upravit Smazat 004 200 ctvrta.php ctrta Upravit Smazat 005 200 pata.php pata Upravit Smazat 006 255 sesta.php sesta Upravit Smazat 007 255 sedma.php sedma Upravit Smazat 255 NULL parrent3.php parrent3 Upravit Smazat 200 NULL parrent2.php parrent2 Upravit Smazat 100 NULL parrent1.php parrent1 */ parrent3 sesta sedma parrent2 ctrta pata parrent1 prvni druhy treti Takhle mi vyjede vse... ale stranky z kategorii maji jen vyjet po kliknuti na hlavni kateg.... Premyslim jak na to ... a nic krom pripojeni kategorie do URL jako druhy parametr me nenapada..jeste do session ukladat na jakou kategorii klikl clovek ... Sry za blby dotazy, cim se do php ponoruju vic tim ho vic neumim |
||
23k Profil |
#11 · Zasláno: 20. 5. 2005, 17:02:19
$sql=mysql_query("select * from pages where parrentID is NULL");
while($r=mysql_fetch_array($sql)) { echo "<a href='?pid=$r[pageID]'>$r[nazev_odkazu]</a> <br/>"; if ($pid) { // vybere prislusne stranky spadajici do kategorie $sql2=mysql_query("select * from pages where parrentID='$pid]'"); while($r=mysql_fetch_array($sql2)) { echo " <a href='?pid=$r[pageID]'>$r[nazev_odkazu]</a> <br/>"; } //konec vnoreneho while } } // konec prvniho WHILE Tak a ted to vypisuje dost blbe. Vzdy to vypise odkazy kategorie do ktere patri a ty same doplni do ostatnich.. :/ ... |
||
printf Profil |
#12 · Zasláno: 20. 5. 2005, 17:30:02
viděl bych to takhle (jestli jsem to spletl, tak se omlouvám)
$sql=mysql_query("select * from pages where parrentID is NULL"); while($r=mysql_fetch_array($sql)) { echo "<a href='?pid=$r[pageID]'>$r[nazev_odkazu]</a> <br/>"; if ($r[pageID]==$pid) { // vybere prislusne stranky spadajici do kategorie $sql2=mysql_query("select * from pages where parrentID='$pid]'"); while($r=mysql_fetch_array($sql2)) { echo " <a href='?pid=$r[pageID]'>$r[nazev_odkazu]</a> <br/>"; } //konec vnoreneho while } } // konec prvniho WHILE |
||
printf Profil |
#13 · Zasláno: 20. 5. 2005, 17:33:24
btw: pokud vím, tak indexy asociativních polí se mají psát do uvozovek $r["pageID"],
případně echo "<a href='?pid={$r["pageID"]}'>$r[nazev_odkazu]</a> |
||
23k Profil |
#14 · Zasláno: 20. 5. 2005, 17:35:59
heh supa :P .... chjo muj mozek je fakt smejd dix ... vecer jeste musim nakym zpusobem vymyslet aby se to menicko nezavrelo kdyz kliknu na odkaz ... protoze ted to prebira pouze z kategorii ...
|
||
printf Profil |
#15 · Zasláno: 20. 5. 2005, 17:48:30
předpokládám že to pid slouží jen pro rozbalení příslušného menu. Potom bych tedy do toho vnitřního cyklu odkazoval jako pid to parrentID a taky bych raději ten vnitřní result $r pojmenoval jinak než vnější, třeba $r2:
while($r2=mysql_fetch_array($sql2)) { echo " <a href='?pid=$r2[parrentID]'>$r2[nazev_odkazu]</a> <br/>"; } //konec vnoreneho while nebo (za předpokladu že vnitřní result bude $r2 a vnější $r) while($r2=mysql_fetch_array($sql2)) { echo " <a href='?pid=$r[pageID]'>$r2[nazev_odkazu]</a> <br/>"; } //konec vnoreneho while |
||
23k Profil |
#16 · Zasláno: 20. 5. 2005, 17:56:24 · Upravil/a: 23k
add druhe reseni) toto nefunguje ... odkazy z dane kategorie ted smeruji vlastne na kategorie
kategorie1 karegorie2 karegorie3 (tato je dejme tomu rozbalena) odkaz1 ? = a ma PID stejne jako kategorie 3 ..coz je trosku nesmysl. a to prvni dela to same... Ocenuji tvoji snahu! Mozna je ta tabulka blbe navrhnuta ... Nemas ICQ? **** Da se to jistym zpusobem vyresit pres druhou promennou v url ze to pak bude ?pid=200&stranka=005 treba ... (prvni je kategorie, druha stranka).... coz sem ale nechtel :/ navic do stredu webu kam se to bude INCLUDOVAT se maji vkladat jak jednotlive stranky tak i kategorie no uvidim co vymyslim ..ted mazu z worku |
||
krteczek Profil |
#17 · Zasláno: 21. 5. 2005, 03:40:59
tak skus šifrovat:-)
kategorie:kombinace pismen treba kategorie1=="AA", kategorie2=="AB"... tohle mužeš hodit i do sloupce ParentID if ( ($neco['parent_id']*1)>0) { //je to číslo } clanky jsou čísla od 1 donekonecna :-) <a href="index.php?clanek=AA123">blabla</a> ,máš jednu pproměnnou, jen si to musíš rozparsovat krteczek |
||
krteczek Profil |
#18 · Zasláno: 21. 5. 2005, 04:03:47
jinak asi myslíš něco takového: http://www.krteczek.czweb.org/zaneta/?sekce_clanku=2
zatím je to ve vývoji, na to aby se menu nezavřelo je nutno použít cookies krteczek |
||
printf Profil |
#19 · Zasláno: 21. 5. 2005, 13:34:01
no já jsem to myslel trochu jinak. Když vyberu něco v menu, tak se odkáže na konkrétní stránku a ta už přeci nepotřebuje vědět jaké má id. Proto bych to pid využil na předávání parentID a ne pageID, tudíž pid by nebylo určeno pro danou kategorii ale jen pro menu aby vědělo v jaké kategorii se má otevřít. Pokud uživatel klikne na název kategorie, předá se pageID té kategorie, což je zároveň parent ID podkategorií a když klikne na podkategorii, zůstane v pid její parentID, takže příslušná kategorie zůstane otevřená. O to doufám jde :-)
|
||
23k Profil |
#20 · Zasláno: 21. 5. 2005, 14:50:50
;) uz sem to vyresil trosku jinak ..ale diky za pomoc !:) btw nebude to narocne na mysql takoveto MENU?
|
||
printf Profil |
#21 · Zasláno: 21. 5. 2005, 14:58:10
takhle se to velmi často řeší, nakonec od toho databáze jsou :-) Přesto se vždycky snažím aby dotazů na databázi bylo minimum a pokud náhodou databáze někdy selže aby tím neselhal celý web a aspoň něco bylo vidět.
|
||
Časová prodleva: 19 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0