Hinnavaatlus
:: Foorum
:: Uudised
:: Ärifoorumid
:: HV F1 ennustusvõistlus
:: Pangalink
:: Telekavad
:: HV toote otsing
|
|
autor |
|
SGM
HV kasutaja

liitunud: 04.12.2005
|
09.10.2008 11:41:27
kuidas teha menüü-puu ja saidi kaart (sitemap)? |
|
|
Üritan saavutada (php ja mysql) sellist menüüd, kus oleks alam-lingid ja alam-alamlingid jne. Kõik toimib seni, kuni tahan seda õigesti ka välja kuvada. Kui praegu selle kuvan, siis kõik alamad jooksevad menüü lõppu, mitte aga oma parent-i alla, kuhu peaks.
Praegu jamab nii:
Link 1
Link 2
Link 3
Link 2.1
Link 2.2
Link 1.1
Link 2.2.1 |
Vaja oleks nii:
Link 1
Link 1.1
Link 2
Link 2.1
Link 2.2
Link 2.2.1
Link 3 |
Kas on midagi SQL-päringuga valesti, sorteerimine vms.? Uurisin isegi Joomla menüü-moodulit, seal leidsin vaid selle, et "... ORDER BY parent, ordering" ja kogu moos. Mul siis oligi juba samamoodi tehtud, aga ei toimi.
|
|
Kommentaarid: 4 loe/lisa |
Kasutajad arvavad: |
   |
:: |
1 :: |
1 :: |
0 |
|
tagasi üles |
|
 |
Valdars
HV veteran

liitunud: 22.02.2003
|
09.10.2008 14:23:25
|
|
|
Võiksid natuke rohkem infot anda, kasvõi vähemalt selle SQL-päringu, mis ei paista töötavat. Praegu oleks küll tegemist kohvipaksu pealt ennustamisega.
|
|
Kommentaarid: 47 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
1 :: |
44 |
|
tagasi üles |
|
 |
Renka
HV Guru

liitunud: 01.04.2002
|
09.10.2008 14:30:31
|
|
|
üldiselt võiks omale selgeks teha põhitõed selle kohta kuidas hierarhilist infot kasutatakse/kuvatakse/vastavat koodi kirjutatakse
_________________ There is no place like 127.0.0.1 |
|
Kommentaarid: 71 loe/lisa |
Kasutajad arvavad: |
   |
:: |
2 :: |
1 :: |
61 |
|
tagasi üles |
|
 |
SGM
HV kasutaja

liitunud: 04.12.2005
|
09.10.2008 15:15:44
|
|
|
Valdars kirjutas: |
Võiksid natuke rohkem infot anda, kasvõi vähemalt selle SQL-päringu, mis ei paista töötavat. Praegu oleks küll tegemist kohvipaksu pealt ennustamisega. |
SQL tabel:
TABLE `menu` (
`id` int(11) NOT NULL auto_increment,
`name` varchar(50) NOT NULL,
`menu_id` int(11) NOT NULL default '0',
`link` varchar(255) NOT NULL,
`pos` int(2) NOT NULL default '0',
`publish` tinyint(1) NOT NULL default '0',
PRIMARY KEY (`id`)... |
Päring:
SELECT * FROM menu ORDER BY a.menu_id, a.pos |
Renka kirjutas: |
üldiselt võiks omale selgeks teha põhitõed selle kohta kuidas hierarhilist infot kasutatakse/kuvatakse/vastavat koodi kirjutatakse |
hmm, kust ja kuidas ma seda selgeks saan kui mitte ise seda tehes? MySQL kodukal kusagil oli ka midagi sellest juttu, aga see ajas sõna otseses mõttes silme eest kirjuks...
|
|
Kommentaarid: 4 loe/lisa |
Kasutajad arvavad: |
   |
:: |
1 :: |
1 :: |
0 |
|
tagasi üles |
|
 |
oicu
HV kasutaja
liitunud: 23.11.2006
|
09.10.2008 15:34:32
|
|
|
näida kood ka, mismoodi sa selle puu tekitad.
|
|
Kommentaarid: 9 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
9 |
|
tagasi üles |
|
 |
Renka
HV Guru

liitunud: 01.04.2002
|
09.10.2008 15:36:22
|
|
|
SGM kirjutas: |
Renka kirjutas: |
üldiselt võiks omale selgeks teha põhitõed selle kohta kuidas hierarhilist infot kasutatakse/kuvatakse/vastavat koodi kirjutatakse |
hmm, kust ja kuidas ma seda selgeks saan kui mitte ise seda tehes? MySQL kodukal kusagil oli ka midagi sellest juttu, aga see ajas sõna otseses mõttes silme eest kirjuks... |
Katse/eksituse meetodil õppimine on üks võimalus jah. Ilus oleks aga mõttega teooria läbi lugeda, vaadata kellegi poolt valmis meisterdatud koodi ja asi korralikult selgeks teha
_________________ There is no place like 127.0.0.1 |
|
Kommentaarid: 71 loe/lisa |
Kasutajad arvavad: |
   |
:: |
2 :: |
1 :: |
61 |
|
tagasi üles |
|
 |
nene
Kreisi kasutaja

liitunud: 20.03.2004
|
|
Kommentaarid: 24 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
1 :: |
23 |
|
tagasi üles |
|
 |
keevitaja
AM 10 aastat

liitunud: 05.11.2001
|
25.02.2009 17:08:32
|
|
|
lugesin seda wikit kuid ikka ei saa pihta.
php:
|
function LoadMenu($parent_id = 0) { $sql = $db->query("select * from ".DB_PAGES." where parent_id='$parent_id' order by order_id"); while($row = $db->assoc($sql)) { echo $row['page_id']. '<br>'; LoadMenu($row['parent_id']); } }
|
mis sellel viga on? ei anna errorit kah. lihtsalt midagi ei kuvata.
|
|
Kommentaarid: 51 loe/lisa |
Kasutajad arvavad: |
   |
:: |
1 :: |
3 :: |
40 |
|
tagasi üles |
|
 |
iceincube
HV veteran

liitunud: 18.11.2005
|
25.02.2009 17:37:18
|
|
|
Errorid peale keeratud ikka?
st muid erroreid näed kui on?
Kas leht surem maha või muud asjad laevad ära.
|
|
Kommentaarid: 39 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
37 |
|
tagasi üles |
|
 |
lehm2
Kreisi kasutaja

liitunud: 19.09.2004
|
25.02.2009 18:01:08
|
|
|
keevitaja kirjutas: |
lugesin seda wikit kuid ikka ei saa pihta.
php:
|
function LoadMenu($parent_id = 0) { $sql = $db->query("select * from ".DB_PAGES." where parent_id='$parent_id' order by order_id"); while($row = $db->assoc($sql)) { echo $row['page_id']. '<br>'; LoadMenu($row['parent_id']); } }
|
mis sellel viga on? ei anna errorit kah. lihtsalt midagi ei kuvata. |
Nii aga hakkame debugima, proovi kas query töötab, võta muutuja välja tee üks test. Vaata kas muutujal on üldse väärtust järsku on tühi string. Kasuta print_r($row) puhul, vaata milliseid väärtusi sisaldab.
_________________ Piilu siia, progreja!
Vajad abi Node.JS-ga ?
Võta ühendust ! |
|
Kommentaarid: 15 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
13 |
|
tagasi üles |
|
 |
keevitaja
AM 10 aastat

liitunud: 05.11.2001
|
25.02.2009 18:28:13
|
|
|
query on ok. kui võtta ära LoadMenu($row['parent_id']);, siis v2ljastatakse kõik millel parent_id=0
muidu lihtsalt sureb maha ei prindita midagi
|
|
Kommentaarid: 51 loe/lisa |
Kasutajad arvavad: |
   |
:: |
1 :: |
3 :: |
40 |
|
tagasi üles |
|
 |
keevitaja
AM 10 aastat

liitunud: 05.11.2001
|
25.02.2009 19:15:50
|
|
|
php:
|
function level($page_id) { $sql = $db->query("select parent_id from ".DB_PAGES." where page_id='$page_id'"); $i = 0; while($row = $db->assoc($sql)) { $i++; level($row['parent_id']); } return $i; }
|
sellega oleks vaja kokku lugeda levelite arv, kuid miskipärast see ei õnnestu mul. samas kui midagi v2lja echoda, siis echotakse õige arv kordi!
|
|
Kommentaarid: 51 loe/lisa |
Kasutajad arvavad: |
   |
:: |
1 :: |
3 :: |
40 |
|
tagasi üles |
|
 |
troglodyte
Kreisi kasutaja

liitunud: 09.08.2002
|
25.02.2009 19:38:18
|
|
|
Proovi nii:
php:
|
function level($page_id, $cur_level=0) { $sql = $db->query("select parent_id from ".DB_PAGES." where page_id='$page_id'"); /* Eeldusel, et igal lehel on ainult yks parent */ if (($row = $db->assoc($sql))) return level($row['parent_id'], $cur_level + 1); return $cur_level; } $num_of_levels = level($some_page_id);
|
Mingid lisa kontrollid tuleks sul endal lisada l6pmatu rekursiooni jne v2ltimiseks.
_________________ ph'nglui mglw'nafh Cthulhu R'lyeh wgah'nagl fhtagn |
|
Kommentaarid: 34 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
34 |
|
tagasi üles |
|
 |
keevitaja
AM 10 aastat

liitunud: 05.11.2001
|
26.02.2009 20:36:22
|
|
|
keevitaja kirjutas: |
lugesin seda wikit kuid ikka ei saa pihta.
php:
|
function LoadMenu($parent_id = 0) { $sql = $db->query("select * from ".DB_PAGES." where parent_id='$parent_id' order by order_id"); while($row = $db->assoc($sql)) { echo $row['page_id']. '<br>'; LoadMenu($row['parent_id']); } }
|
mis sellel viga on? ei anna errorit kah. lihtsalt midagi ei kuvata. |
selle kohta ei oska keegi kommenteerida?
|
|
Kommentaarid: 51 loe/lisa |
Kasutajad arvavad: |
   |
:: |
1 :: |
3 :: |
40 |
|
tagasi üles |
|
 |
iceincube
HV veteran

liitunud: 18.11.2005
|
26.02.2009 20:53:07
|
|
|
Äkki on sul miskitmoodi see funktsioon kuskil varem juba defineeritud kui maha sureb ?
Kas kui funktsiooni sisu ära eemaldada ja tühjana nii teed, kas siis sureb ka leht maha ?
tsitaat: |
function LoadMenu($parent_id = 0) {
echo 'EI SURNUD ÄRA';
} |
|
|
Kommentaarid: 39 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
37 |
|
tagasi üles |
|
 |
keevitaja
AM 10 aastat

liitunud: 05.11.2001
|
26.02.2009 21:00:13
|
|
|
ei ole mujal defineeritud. proovisin ka täiesti tühja lehe peal.
_________________ Hinnavaatlus ei ole koht arvamuse avaldamiseks! |
|
Kommentaarid: 51 loe/lisa |
Kasutajad arvavad: |
   |
:: |
1 :: |
3 :: |
40 |
|
tagasi üles |
|
 |
keevitaja
AM 10 aastat

liitunud: 05.11.2001
|
26.02.2009 21:11:06
|
|
|
juhul kui funktsiooni uuesti välja ei kutsu, siis kuvatakse k6ik sissekanded mille parent_id=0
php:
|
<?php require('./conf.php'); //mysql passid require('includes/classes/mysql.class.php'); $db->connect(); function kala($parent_id = 0) { $sql = $db->query("select * from newauth_pages where parent_id='$parent_id'") while($row = $db->assoc($sql)) { echo $row['parent_id']. '<br>'; kala($row['parent_id']); } } kala(); ?>
|
|
|
Kommentaarid: 51 loe/lisa |
Kasutajad arvavad: |
   |
:: |
1 :: |
3 :: |
40 |
|
tagasi üles |
|
 |
iceincube
HV veteran

liitunud: 18.11.2005
|
26.02.2009 21:16:03
|
|
|
hmm, kusjuures, kas see asi lõpmatusse loopi ei lähe?
Vaatan, et DB_PAGES tablist päritakse esimese ringiga kõik parent_id = 0 itemid..
ja iga selle itemi kohta küsitakse rekursiivselt jälle seda sama funktsiooni SAMA parent_id 'ga
Rakse seletada.. ühesõnaga seal while tsükli sees kutsutavas LoadMenu() funktsioonile tuleb anda parameetriks hoopis see $row['page_id'] vms.. ühesõnaga current page ID
|
|
Kommentaarid: 39 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
37 |
|
tagasi üles |
|
 |
keevitaja
AM 10 aastat

liitunud: 05.11.2001
|
26.02.2009 21:26:13
|
|
|
hetkel tabel ise selline. selle "puu" tekitan lihtsalt käis korduvalt whilega asjad üle.
viimati muutis keevitaja 26.02.2009 21:30:10, muudetud 1 kord |
|
Kommentaarid: 51 loe/lisa |
Kasutajad arvavad: |
   |
:: |
1 :: |
3 :: |
40 |
|
tagasi üles |
|
 |
iceincube
HV veteran

liitunud: 18.11.2005
|
26.02.2009 21:29:18
|
|
|
pane sinna page_id korra parent_id asemele ja vaata mis juhtub. Kui ma nüüd mõõda ei parsind peas, peaks see õigem olema
|
|
Kommentaarid: 39 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
37 |
|
tagasi üles |
|
 |
keevitaja
AM 10 aastat

liitunud: 05.11.2001
|
26.02.2009 22:24:51
|
|
|
krt, ma olen ikka juhmard. peabki page_id olema
|
|
Kommentaarid: 51 loe/lisa |
Kasutajad arvavad: |
   |
:: |
1 :: |
3 :: |
40 |
|
tagasi üles |
|
 |
|