Avaleht
uus teema   vasta Tarkvara »  WWW »  kuidas teha menüü-puu ja saidi kaart (sitemap)? märgi kõik teemad loetuks
märgi mitteloetuks
vaata eelmist teemat :: vaata järgmist teemat
Hinnavaatlus :: Foorum :: Uudised :: Ärifoorumid :: HV F1 ennustusvõistlus :: Pangalink :: Telekavad :: HV toote otsing
autor
sõnum Saada viide sõbrale.  :: Teata moderaatorile teata moderaatorile
otsing:  
SGM
HV kasutaja
SGM

liitunud: 04.12.2005



Autoriseeritud ID-kaardiga

sõnum 09.10.2008 11:41:27 kuidas teha menüü-puu ja saidi kaart (sitemap)? vasta tsitaadiga

Ü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. icon_rolleyes.gif
Kommentaarid: 4 loe/lisa Kasutajad arvavad:  :: 1 :: 1 :: 0
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
Valdars
HV veteran
Valdars

liitunud: 22.02.2003




sõnum 09.10.2008 14:23:25 vasta tsitaadiga

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
vaata kasutaja infot saada privaatsõnum
Renka
HV Guru
Renka

liitunud: 01.04.2002




sõnum 09.10.2008 14:30:31 vasta tsitaadiga

ü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
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
SGM
HV kasutaja
SGM

liitunud: 04.12.2005



Autoriseeritud ID-kaardiga

sõnum 09.10.2008 15:15:44 vasta tsitaadiga

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? icon_biggrin.gif 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
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
oicu
HV kasutaja

liitunud: 23.11.2006




sõnum 09.10.2008 15:34:32 vasta tsitaadiga

näida kood ka, mismoodi sa selle puu tekitad.
Kommentaarid: 9 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 9
tagasi üles
vaata kasutaja infot saada privaatsõnum
Renka
HV Guru
Renka

liitunud: 01.04.2002




sõnum 09.10.2008 15:36:22 vasta tsitaadiga

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? icon_biggrin.gif 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 icon_wink.gif
_________________
There is no place like 127.0.0.1
Kommentaarid: 71 loe/lisa Kasutajad arvavad:  :: 2 :: 1 :: 61
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
nene
Kreisi kasutaja
nene

liitunud: 20.03.2004




sõnum 09.10.2008 18:21:04 vasta tsitaadiga

Kuna see teema kipub siin foorumis juba korduma...

* php: virtuaalne kataloogipuu
* Loendid loendites (mitmetasandilised) -> kuidas saavutada tulemus PHP abil?
* elu ei õpeta, PHP probleem
* php template engine: smarty. edit: rekursioon

...siis tekitasin HV Vikisse vastavasisulise õpetuse: Rekursioon.

Sai suht pikk lugu, aga loodetavasti saab sest abi.
Kommentaarid: 24 loe/lisa Kasutajad arvavad:  :: 0 :: 1 :: 23
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
keevitaja
AM 10 aastat
keevitaja

liitunud: 05.11.2001




sõnum 25.02.2009 17:08:32 vasta tsitaadiga

lugesin seda wikit kuid ikka ei saa pihta.

php:
  1. function LoadMenu($parent_id = 0)
  2. {
  3.         global $db;
  4.        
  5.         $sql = $db->query("select * from ".DB_PAGES." where parent_id='$parent_id' order by order_id");
  6.        
  7.         while($row = $db->assoc($sql))
  8.         {
  9.                 echo $row['page_id'].'<br>';
  10.                
  11.                 LoadMenu($row['parent_id']);
  12.         }
  13. }


mis sellel viga on? ei anna errorit kah. lihtsalt midagi ei kuvata.
Kommentaarid: 51 loe/lisa Kasutajad arvavad:  :: 1 :: 3 :: 40
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
iceincube
HV veteran
iceincube

liitunud: 18.11.2005




sõnum 25.02.2009 17:37:18 vasta tsitaadiga

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
vaata kasutaja infot saada privaatsõnum
lehm2
Kreisi kasutaja


liitunud: 19.09.2004




sõnum 25.02.2009 18:01:08 vasta tsitaadiga

keevitaja kirjutas:
lugesin seda wikit kuid ikka ei saa pihta.

php:
  1. function LoadMenu($parent_id = 0)
  2. {
  3.         global $db;
  4.        
  5.         $sql = $db->query("select * from ".DB_PAGES." where parent_id='$parent_id' order by order_id");
  6.        
  7.         while($row = $db->assoc($sql))
  8.         {
  9.                 echo $row['page_id'].'<br>';
  10.                
  11.                 LoadMenu($row['parent_id']);
  12.         }
  13. }


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. icon_rolleyes.gif

_________________
Piilu siia, progreja!
Vajad abi Node.JS-ga ?
Võta ühendust !
Kommentaarid: 15 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 13
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
keevitaja
AM 10 aastat
keevitaja

liitunud: 05.11.2001




sõnum 25.02.2009 18:28:13 vasta tsitaadiga

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
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
keevitaja
AM 10 aastat
keevitaja

liitunud: 05.11.2001




sõnum 25.02.2009 19:15:50 vasta tsitaadiga

php:
  1.        
  2. function level($page_id)
  3. {
  4.         global $db;
  5.         $sql = $db->query("select parent_id from ".DB_PAGES." where page_id='$page_id'");
  6.         $i = 0;
  7.         while($row = $db->assoc($sql))
  8.         {
  9.                 $i++;
  10.                 level($row['parent_id']);
  11.         }
  12.                                
  13.         return $i;
  14. }


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
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
troglodyte
Kreisi kasutaja
troglodyte

liitunud: 09.08.2002




sõnum 25.02.2009 19:38:18 vasta tsitaadiga

Proovi nii:
php:
  1. function level($page_id, $cur_level=0)
  2. {
  3.         global $db;
  4.         $sql = $db->query("select parent_id from ".DB_PAGES." where page_id='$page_id'");
  5.         /* Eeldusel, et igal lehel on ainult yks parent */
  6.         if (($row = $db->assoc($sql)))
  7.                 return level($row['parent_id'], $cur_level + 1);
  8.         return $cur_level;
  9. }
  10.  
  11. $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
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
keevitaja
AM 10 aastat
keevitaja

liitunud: 05.11.2001




sõnum 26.02.2009 20:36:22 vasta tsitaadiga

keevitaja kirjutas:
lugesin seda wikit kuid ikka ei saa pihta.

php:
  1. function LoadMenu($parent_id = 0)
  2. {
  3.         global $db;
  4.        
  5.         $sql = $db->query("select * from ".DB_PAGES." where parent_id='$parent_id' order by order_id");
  6.        
  7.         while($row = $db->assoc($sql))
  8.         {
  9.                 echo $row['page_id'].'<br>';
  10.                
  11.                 LoadMenu($row['parent_id']);
  12.         }
  13. }


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
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
iceincube
HV veteran
iceincube

liitunud: 18.11.2005




sõnum 26.02.2009 20:53:07 vasta tsitaadiga

Ä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
vaata kasutaja infot saada privaatsõnum
keevitaja
AM 10 aastat
keevitaja

liitunud: 05.11.2001




sõnum 26.02.2009 21:00:13 vasta tsitaadiga

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
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
keevitaja
AM 10 aastat
keevitaja

liitunud: 05.11.2001




sõnum 26.02.2009 21:11:06 vasta tsitaadiga

juhul kui funktsiooni uuesti välja ei kutsu, siis kuvatakse k6ik sissekanded mille parent_id=0

php:
  1. <?php
  2. require('./conf.php'); //mysql passid
  3. require('includes/classes/mysql.class.php');
  4.  
  5. $db = new Mysql;
  6. $db->connect();
  7.  
  8. function kala($parent_id = 0)
  9. {
  10.         global $db;
  11.        
  12.         $sql = $db->query("select * from newauth_pages where parent_id='$parent_id'")
  13.                 or die(mysql_error());
  14.        
  15.         while($row = $db->assoc($sql))
  16.         {
  17.                 echo $row['parent_id'].'<br>';
  18.                 kala($row['parent_id']);
  19.                
  20.         }
  21. }
  22.  
  23. kala();
  24. ?>
Kommentaarid: 51 loe/lisa Kasutajad arvavad:  :: 1 :: 3 :: 40
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
iceincube
HV veteran
iceincube

liitunud: 18.11.2005




sõnum 26.02.2009 21:16:03 vasta tsitaadiga

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
vaata kasutaja infot saada privaatsõnum
keevitaja
AM 10 aastat
keevitaja

liitunud: 05.11.2001




sõnum 26.02.2009 21:26:13 vasta tsitaadiga

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
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
iceincube
HV veteran
iceincube

liitunud: 18.11.2005




sõnum 26.02.2009 21:29:18 vasta tsitaadiga

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
vaata kasutaja infot saada privaatsõnum
keevitaja
AM 10 aastat
keevitaja

liitunud: 05.11.2001




sõnum 26.02.2009 22:24:51 vasta tsitaadiga

krt, ma olen ikka juhmard. peabki page_id olema icon_lol.gif icon_lol.gif icon_lol.gif
Kommentaarid: 51 loe/lisa Kasutajad arvavad:  :: 1 :: 3 :: 40
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
näita postitusi alates eelmisest:   
uus teema   vasta Tarkvara »  WWW »  kuidas teha menüü-puu ja saidi kaart (sitemap)?
[vaata eelmist teemat] [vaata järgmist teemat]
 lisa lemmikuks
näita foorumit:  
 ignoreeri teemat 
sa ei või postitada uusi teemasid siia foorumisse
sa ei või vastata selle foorumi teemadele
sa ei või muuta oma postitusi selles foorumis
sa ei või kustutada oma postitusi selles foorumis
sa ei või vastata küsitlustele selles foorumis
sa ei saa lisada manuseid selles foorumis
sa võid manuseid alla laadida selles foorumis



Hinnavaatlus ei vastuta foorumis tehtud postituste eest.