Avaleht
uus teema   vasta Tarkvara »  Programmeerimine »  Kuidas koostada korralikku kaustapuud? märgi kõik teemad loetuks
märgi mitteloetuks
vaata eelmist teemat :: vaata järgmist teemat
mine lehele 1, 2  järgmine
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:  
LiivaneLord
Sõpradele "Olavi"

liitunud: 20.06.2006




sõnum 21.09.2009 16:18:52 Kuidas koostada korralikku kaustapuud? vasta tsitaadiga

Olen mitu-mitu päeva üritanud välja nuputada ja teostada, et kuidas saada tööle oma kodulehel kaustapuu. Õhtul magama minnes on mõtted selle kallal ja hommikul üles tõustes on esimene mõte, et kuidas seda teostada. Tahaks juba sellest jamast lahti saada ... icon_sad.gif

Khm, teema siis selline, et kaustapuu koosneb kaustadest ja failidest (esialgu muidugi testivariant). Igas kaustas on omakorda kas alamkaust ja/või siis fail (tekst), mis moodustab ühe tasandi ja neid tasandeid tuleb mitu. Enam-vähem mingi kaustapuu sain valmis, kuid ühe moodusega on üks häda ja teisega teine ning kood on ilgelt pikk. Kaustapuud saab näha http://tudiludi.pri.ee . Vihjeks, et kogu sisukord on vasakul sinise taustaga kastis ja Peakaustas on kõik need alamkaustad mitmes variandis välja toodud.

Koduleht on esialgu koostatud ainult MySQL-i põhjal ja kogu info tuleb sealt. Ning siinkohal toongi välja pildi oma andmebaasist. Kas see on hea lahendus, ma ei tea ja kui kellelgi on parem mõte, siis anna teada:



Ja kogu kood, mis käib sisukorra kohta, on samuti
php:
  1.  
  2. <!---Sisukord------------------------------------------------->
  3. <td width="250" valign="top" bgcolor="#80bafa">
  4. <?
  5.  
  6. $kausta_ikoon="<img src='http://i27.tinypic.com/2mysot1.jpg' width='16' border='0'>";
  7. $teksti_ikoon="<img src='http://i29.tinypic.com/1gtbew.jpg' width='16' border='0'>";
  8. $kodu_ikoon="<img src='http://i31.tinypic.com/wbchsn.jpg' width='20' border='0'>";
  9.  
  10. echo "<a href='index.php'>$kodu_ikoon</a><a href='index.php'>Esileht</a><br>";
  11.  
  12.  
  13.                 $sql=mysql_query("SELECT DISTINCT kaust FROM artiklid WHERE kaust!='Esileht' ORDER BY kaust ASC");
  14.                 while ($andmed=mysql_fetch_array($sql))
  15. {
  16.  
  17.         echo "<a href='?kaust=$andmed[kaust]'>$kausta_ikoon</a><a href='?kaust=$andmed[kaust]'>$andmed[kaust]</a><br>";
  18.        
  19.        
  20.  
  21.  
  22.         if ($andmed[kaust]==$kaust && $kaust!="")
  23.         {
  24.                 $sql1=mysql_query("SELECT * FROM artiklid WHERE kaust='$kaust' ORDER BY alamkaust1 ASC");
  25.                 while($andmed1=mysql_fetch_array($sql1))
  26.                 {
  27.                        
  28.         if ($andmed1[alamkaust1]=="")
  29.                         {
  30.                 $andmed1[alamkaust1]=$andmed1[pealkiri];
  31.                 $kausta_ikoon1=$teksti_ikoon;
  32.                 $alamkaust21="pealkiri";
  33.                 }
  34.                 else
  35.                         {
  36.                         $andmed1[alamkaust1]=$andmed1[alamkaust1];
  37.                         $kausta_ikoon1=$kausta_ikoon;
  38.                         $alamkaust21="alamkaust1";
  39.                         }
  40. echo "&nbsp;&nbsp;&nbsp;<a href='?kaust=$kaust&$alamkaust21=$andmed1[alamkaust1]'>$kausta_ikoon1</a><a href='?kaust=$kaust&$alamkaust21=$andmed1[alamkaust1]'>$andmed1[alamkaust1]</a><br>";
  41.  
  42.                
  43.                
  44.  
  45.                 if ($andmed1[alamkaust1]==$alamkaust1 && $alamkaust1!="")
  46.                         {
  47.                         $sql2=mysql_query("SELECT * FROM artiklid WHERE kaust='$kaust' && alamkaust1='$alamkaust1' ORDER BY alamkaust2 ASC");
  48.                         while ($andmed2=mysql_fetch_array($sql2))
  49.                                 {
  50.                                 if ($andmed2[alamkaust2]=="")
  51.                         {
  52.                 $andmed2[alamkaust2]=$andmed2[pealkiri];
  53.                 $kausta_ikoon2=$teksti_ikoon;
  54.                 $alamkaust22="pealkiri";
  55.                 }
  56.                 else
  57.                                         {
  58.                         $kausta_ikoon2=$kausta_ikoon;
  59.                         $andmed2[alamkaust2]=$andmed2[alamkaust2];
  60.                         $alamkaust22="alamkaust2";
  61.                                         }
  62.                                 echo "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href='?kaust=$kaust&alamkaust1=$alamkaust1&$alamkaust22=$andmed2[alamkaust2]'>$kausta_ikoon2</a><a href='?kaust=$kaust&alamkaust1=$alamkaust1&$alamkaust22=$andmed2[alamkaust2]'>$andmed2[alamkaust2]</a><br>";
  63.  
  64.  
  65.                                 if ($andmed2[alamkaust2]==$alamkaust2 && $alamkaust2!="")
  66.                                         {
  67.                                         $sql3=mysql_query("SELECT * FROM artiklid WHERE kaust='$kaust' && alamkaust1='$alamkaust1' && alamkaust2='$alamkaust2' ORDER BY alamkaust3 ASC");
  68.                                         while ($andmed3=mysql_fetch_array($sql3))
  69.                                                 {
  70.  
  71.                                                 if ($andmed3[alamkaust3]=="")
  72.                         {
  73.                 $andmed3[alamkaust3]=$andmed3[pealkiri];
  74.                 $kausta_ikoon3=$teksti_ikoon;
  75.                 $alamkaust23="pealkiri";
  76.                 }
  77.                 else
  78.                                                         {
  79.                         $andmed3[alamkaust3]=$andmed3[alamkaust3];
  80.                         $kausta_ikoon3=$kausta_ikoon;
  81.                         $alamkaust23="alamkaust3";
  82.                                                 }
  83.  
  84.                                                 echo "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href='?kaust=$kaust&alamkaust1=$alamkaust1&alamkaust2=$alamkaust2&$alamkaust23=$andmed3[alamkaust3]'>$kausta_ikoon3</a><a href='?kaust=$kaust&alamkaust1=$alamkaust1&alamkaust2=$alamkaust2&$alamkaust23=$andmed3[alamkaust3]'>$andmed3[alamkaust3]</a><br>";
  85.  
  86.                                                 if ($andmed3[alamkaust3]==$alamkaust3 && $alamkaust3!="")
  87.                                                         {
  88.                                                         $sql4=mysql_query("SELECT * FROM artiklid WHERE kaust='$kaust' && alamkaust1='$alamkaust1' && alamkaust2='$alamkaust2' && alamkaust3='$alamkaust3' ORDER BY alamkaust3 ASC");
  89.                                                         while ($andmed4=mysql_fetch_array($sql4))
  90.                                                                 {
  91.                                                                 if ($andmed4[alamkaust4]=="")
  92.                         {
  93.                 $andmed4[alamkaust4]=$andmed4[pealkiri];
  94.                 $kausta_ikoon4=$teksti_ikoon;
  95.                 $alamkaust24="pealkiri";
  96.                 }
  97.                 else
  98.                                                                         {
  99.                         $andmed4[alamkaust4]=$andmed4[alamkaust4];
  100.                 $kausta_ikoon4=$kausta_ikoon;
  101.                 $alamkaust24="alamkaust4";
  102.                                                                 }
  103.                                                                 echo "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href='?kaust=$kaust&alamkaust1=$alamkaust1&alamkaust2=$alamkaust2&alamkaust3=$alamkaust3&$alamkaust24=$andmed3[pealkiri]'>$kausta_ikoon4</a><a href='?kaust=$kaust&alamkaust1=$alamkaust1&alamkaust2=$alamkaust2&alamkaust3=$alamkaust3&$alamkaust24=$andmed3[pealkiri]'>$andmed3[pealkiri]</a><br>";
  104.  
  105.                                                                
  106.                                                                 }
  107.                                                         }
  108.                                                 }
  109.                                         }
  110.  
  111.  
  112.                                 }
  113.  
  114.  
  115.                                 }
  116.                        
  117.                         }
  118.         }
  119.         }
  120.        
  121.        
  122.         ?>
  123.  
  124.  
  125. </td>
  126. <!---/Sisukord----------------------->


Hetkel, nagu näha võib, siis samanimelised sõnad korduvad, kuid seda ma ei taha. DISTINCT väldib seda, kuid kui kaustas on mõni tekstifail, siis peaks kohe kuvatama teksti pealkiri, kuid see eeldab, et eelnevalt on valitud kaks välja andmebaasist ja DISTINCT käsku ei oska ma siis kombineerida. KUi see muidugi kuidagi tööle saaks, siis oleks see parim lahendus.
Proovisin kasutada ka käsku GROUP BY, mis näitab kaustad kõik kenasti tähestiku järjekorras ära, kuid kui nimekirjas on ka mõni fail, siis näitab ainult kõige esimest faili ja teisi mitte. UNION oli päris hea võimalus, kuid minu näites eksisteerib $andmed1[alamkaust1], aga $andmed1[pealkiri] nimetatakse vist ümber alamkausta nimeks ja see ei erista faile kaustadest ning seetõttu on ikoonid ühesugused kõigil.

Ideaalvariandis peaks asi välja nägema nii, et kausta ees on kausta ikoon ja teksti ees teksti ikoon. Lisaks peaksid nimekirjas kaustad asetsema failidest eespool ning kaustad ja failid on eraldi tähestiku järjekorras.

Huh, andke vihjeid ... icon_smile.gif
Kommentaarid: 20 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 19
tagasi üles
vaata kasutaja infot saada privaatsõnum
andrusny
Kreisi kasutaja
andrusny

liitunud: 20.03.2006




sõnum 21.09.2009 17:53:48 vasta tsitaadiga

Kui sul lihtsalt seda vaja, siis selline asi on olemas, encode_explorer-4.0 lisad sealt faili oma serverisse ja töötabki. Kui tahad ise leiutada, siis teine lugu.
_________________
Kommentaarid: 7 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 7
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
mikk36
HV Guru
mikk36

liitunud: 21.02.2004



Online

sõnum 21.09.2009 18:15:33 vasta tsitaadiga

Kaustasüsteemina peaks olema piisav ju lihtsalt baasist, kus on kirjas kausta id, tema nimi ja parent id, milleks on vaja tekitada mingeid parent1, parent2 jne välju?
Kui on vaja pista mingit faili kuhugi kausta, siis annad talle samuti parent id kaasa ja istubki antud kaustas.
Kommentaarid: 85 loe/lisa Kasutajad arvavad:  :: 0 :: 2 :: 78
tagasi üles
vaata kasutaja infot saada privaatsõnum
LiivaneLord
Sõpradele "Olavi"

liitunud: 20.06.2006




sõnum 25.09.2009 21:20:02 vasta tsitaadiga

Nii ... koodi sain valmis, aga roppu moodi pikk tuli. Algul mõtlesin küll, et kuidas luua funktsioone ja mingit automaatset varianti, et ei peaks kõik käsitsi välja kirjutama, kuid mõistus jooksis kinni ja otsustasin, et teen käsitsi pikalt välja.

Pilt andmebaasist (kus hetkel on küll väga palju prügi):



Praegu on põhimõtteliselt neljatasandiline, kuid paar oleks vaja veel, aga kood siis (ja ärge siis surnuks naerge):

php:
  1. <!---Sisukord------------------------------------------------->
  2. <td width="250" valign="top" bgcolor="#80bafa">
  3.  
  4. <?
  5. if (isset($id) and $id!="")
  6. {
  7. $sql_id=mysql_query("SELECT * FROM artiklid WHERE id='$id'");
  8. while ($andmed_id=mysql_fetch_array($sql_id))
  9. {
  10.         if (!isset($andmed_id[kausta_nimi]) or $andmed_id[kausta_nimi]=="")
  11.         {
  12.         $valitud_kausta_id=$andmed_id[ülemkausta_id];
  13.         }
  14.         else
  15.         {
  16.                 $valitud_kausta_id=$andmed_id[id];
  17.         }
  18. if ($valitud_kausta_id!=0)
  19.         {
  20.         $sql_id1=mysql_query("SELECT * FROM artiklid WHERE id='$valitud_kausta_id'");
  21.         while ($andmed_id1=mysql_fetch_array($sql_id1))
  22.         {
  23.                 if (isset($andmed_id1[ülemkausta_id]) and $andmed_id1[ülemkausta_id]!="")
  24.                 {
  25.                         $valitud_kausta_id1=$andmed_id1[ülemkausta_id];
  26.                         $kaust1_nimi=$andmed_id[kausta_nimi];
  27.                
  28. if ($valitud_kausta_id1!=0)
  29.                         {
  30.                 $sql_id2=mysql_query("SELECT * FROM artiklid WHERE id='$valitud_kausta_id1'");
  31.                 while ($andmed_id2=mysql_fetch_array($sql_id2))
  32.                 {
  33.                         if (isset($andmed_id2[ülemkausta_id]) && $andmed_id2[ülemkausta_id]!="")
  34.                         {
  35.                                 $valitud_kausta_id2=$andmed_id2[ülemkausta_id];
  36.                         if ($valitud_kausta_id2!=0)
  37.                                 {
  38.                         $sql_id3=mysql_query("SELECT * FROM artiklid WHERE id='$valitud_kausta_id2'");
  39.                 while ($andmed_id3=mysql_fetch_array($sql_id3))
  40.                 {
  41.                         if (isset($andmed_id3[ülemkausta_id]) &&  $andmed_id3[ülemkausta_id]!="")
  42.                         {
  43.                                 $valitud_kausta_id3=$andmed_id3[ülemkausta_id];
  44.                         if ($valitud_kausta_id3!=0)
  45.                                 {
  46.                         $sql_id4=mysql_query("SELECT * FROM artiklid WHERE id='$valitud_kausta_id3'");
  47.                 while ($andmed_id4=mysql_fetch_array($sql_id4))
  48.                 {
  49.                         if (isset($andmed_id4[ülemkausta_id]) && $andmed_id4[ülemkausta_id]!="")
  50.                         {
  51.                                 $valitud_kausta_id4=$andmed_id4[ülemkausta_id];
  52.                         }
  53.                 }
  54.                 }
  55.                         }
  56.                 }
  57.                 }
  58.                         }
  59.                 }
  60.                 }
  61.                 }
  62.                 }
  63.         }
  64.         }
  65. }
  66.  
  67. if (!isset($valitud_kausta_id4) or $valitud_kausta_id4=="")
  68. {
  69. if (!isset($valitud_kausta_id3) or $valitud_kausta_id3=="")
  70.         {       
  71.         if (!isset($valitud_kausta_id2) or $valitud_kausta_id2=="")
  72.                 {              
  73.                 if (!isset($valitud_kausta_id1) or $valitud_kausta_id1=="")
  74.                         {                     
  75.                         $kaust=0;
  76.                         }
  77.                         else
  78.                         {
  79.                                 $kaust=$valitud_kausta_id1;
  80.                                 $kaust1=$valitud_kausta_id;
  81.                         }
  82.                 }
  83.                 else
  84.                 {                     
  85.                         $kaust=$valitud_kausta_id2;
  86.                         $kaust1=$valitud_kausta_id1;
  87. $kaust2=$valitud_kausta_id;
  88.                 }
  89.         }
  90.         else
  91.         {
  92.                 $kaust=$valitud_kausta_id3;
  93.                 $kaust1=$valitud_kausta_id2;
  94. $kaust2=$valitud_kausta_id1;
  95. $kaust3=$valitud_kausta_id;
  96.         }
  97. }
  98. else
  99. {
  100. $kaust=$valitud_kausta_id4;
  101. $kaust1=$valitud_kausta_id3;
  102. $kaust2=$valitud_kausta_id2;
  103. $kaust3=$valitud_kausta_id1;
  104. $kaust4=$valitud_kausta_id;
  105. }
  106.  
  107. $kausta_ikoon="<img src='http://i27.tinypic.com/2mysot1.jpg' width='16' border='0'>";
  108. $teksti_ikoon="<img src='http://i29.tinypic.com/1gtbew.jpg' width='16' border='0'>";
  109. $kodu_ikoon="<img src='http://i31.tinypic.com/wbchsn.jpg' width='20' border='0'>";
  110.  
  111. echo "<a href='index.php'>$kodu_ikoon</a><a href='index.php'>Esileht</a><br>";
  112.  
  113. $sql_oige=mysql_query("SELECT * FROM artiklid WHERE ülemkausta_id='$kaust' ORDER BY kausta_nimi");
  114.         while ($andmed_oige=mysql_fetch_array($sql_oige))
  115.         {              
  116.                 if (!isset($andmed_oige[kausta_nimi]) or $andmed_oige[kausta_nimi]=="")
  117.                 {
  118.                         $andmed_oige[kausta_nimi]=$andmed_oige[pealkiri];
  119.                         $kausta_ikoon0=$teksti_ikoon;
  120.         }
  121.         else
  122.                                 {
  123.                                 $andmed_oige[kausta_nimi]=$andmed_oige[kausta_nimi];           
  124.                 $kausta_ikoon0=$kausta_ikoon;
  125.                         }              
  126.                 echo "<a href='?id=$andmed_oige[id]'>$kausta_ikoon0 </a><a href='?id=$andmed_oige[id]'>$andmed_oige[kausta_nimi]</a><br>";     
  127.                 if ($andmed_oige[id]==$kaust1)
  128.                 {
  129.                         $sql_oige1=mysql_query("SELECT * FROM artiklid WHERE ülemkausta_id='$kaust1' ORDER BY kausta_nimi");
  130.                         while ($andmed_oige1=mysql_fetch_array($sql_oige1))
  131.                         {
  132.                                         if (!isset($andmed_oige1[kausta_nimi]) or $andmed_oige1[kausta_nimi]=="")
  133.                 {
  134.                         $andmed_oige1[kausta_nimi]=$andmed_oige1[pealkiri];
  135.                         $kausta_ikoon1=$teksti_ikoon;
  136.         }
  137.         else
  138.                                 {
  139.                                 $andmed_oige1[kausta_nimi]=$andmed_oige1[kausta_nimi];
  140.                 $kausta_ikoon1=$kausta_ikoon;
  141.                         }
  142.                                 echo "&nbsp;&nbsp;&nbsp;<a href='?id=$andmed_oige1[id]'>$kausta_ikoon1 </a><a href='?id=$andmed_oige1[id]'>$andmed_oige1[kausta_nimi]</a><br>";
  143.                                 if ($andmed_oige1[id]==$kaust2)
  144.                                 {
  145.                                
  146.                                         $sql_oige2=mysql_query("SELECT * FROM  artiklid WHERE ülemkausta_id='$kaust2' ORDER BY kausta_nimi");
  147.                                         while ($andmed_oige2=mysql_fetch_array($sql_oige2))
  148.                                         {
  149.                                                 if (!isset($andmed_oige2[kausta_nimi]) or $andmed_oige2[kausta_nimi]=="")
  150.                 {
  151.                                                        
  152.                         $andmed_oige2[kausta_nimi]=$andmed_oige2[pealkiri];
  153.                         $kausta_ikoon2=$teksti_ikoon;
  154.         }
  155.         else
  156.                                                 {
  157.                 $andmed_oige2[kausta_nimi]=$andmed_oige2[kausta_nimi];
  158.                 $kausta_ikoon2=$kausta_ikoon;
  159.                                                 }
  160.                                                 echo "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href='?id=$andmed_oige2[id]'>$kausta_ikoon2 </a><a href='?id=$andmed_oige2[id]'>$andmed_oige2[kausta_nimi]</a><br>";
  161.                                                 if ($andmed_oige2[id]==$kaust3)
  162.                                                 {
  163.                                                         $sql_oige3=mysql_query("SELECT * FROM artiklid WHERE ülemkausta_id='$kaust3' ORDER BY kausta_nimi");
  164.                                                         while ($andmed_oige3=mysql_fetch_array($sql_oige3))
  165.                                                         {
  166.                                                                 if (!isset($andmed_oige3[kausta_nimi]) or $andmed_oige3[kausta_nimi]=="")
  167.                                                                 {
  168.                                                                         $kausta_ikoon3=$teksti_ikoon;
  169.                                                                         $andmed_oige3[kausta_nimi]=$andmed_oige3[pealkiri];
  170.                                                                 }
  171.                                                                 else
  172.                                                                 {
  173.                                                                         $andmed_oige3[kausta_nimi]=$andmed_oige3[kausta_nimi];
  174.                                                                         $kausta_ikoon3=$kausta_ikoon;
  175.                                                                 }
  176.                                                                 echo "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href='?id=$andmed_oige3[id]'>$kausta_ikoon3 </a><a href='?id=$andmed_oige3[id]'>$andmed_oige3[kausta_nimi]</a><br>";          
  177.                                                         }
  178.                                                 }
  179.                                         }
  180.                                 }
  181.                        
  182.                         }
  183.                 }                     
  184.         }
  185.         ?>
  186.  
  187. </td>
  188. <!---/Sisukord----------------------->


Aga üks peamine häda on veel see, et kuidas saaks eemaldada tekstist neid tühiku sümboleid - &nbsp; - ?
Mul on tehtud mingi taoline liides, kuhu sisestades siis salvestab info andmebaasi ja et ma ise kaustasüsteemiks aru saaks, siis koostasin ka seal select optioni abil kaustasüsteemi, kust saan lihtsasti valida kausta, mida soovin. Kuid selleks, et eristada alamkaustu üksteisest, panin iga järgmise alamkausta ette just need &nbsp; sümbolid. Aga kuna andmebaasis on nimed ilma selle tühikuteta, siis ei kausta nime ei leia ja seetõttu kausta nimi jääb kirjutamata.
Olen proovinud
$ülemkausta_nimi = str_replace('&nbsp;', ' ', $ülemkausta_nimi);
ja
$ülemkausta_nimi = preg_replace ('/(&#nbsp;)+/i', ' ', $ülemkausta_nimi);
Kuid ei hakka kuidagi tööle. icon_sad.gif Ikka jäävad need pagana tühikud ette. :S

PS! Täiesti nõme on see, et ei saa siis foorumisse kirjutada mitu postitust järjest ja pean eelmise ära kustutama, et järgmist kirjutada. Saan aru, et spämmi ja muu pärast, kuid lubada võiks sel juhul näiteks kaks või kolm positust järjest ja mitte rohkem. icon_confused.gif


viimati muutis LiivaneLord 26.09.2009 00:00:01, muudetud 1 kord
Kommentaarid: 20 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 19
tagasi üles
vaata kasutaja infot saada privaatsõnum
mikk36
HV Guru
mikk36

liitunud: 21.02.2004



Online

sõnum 25.09.2009 22:45:47 vasta tsitaadiga

Rekursiivsus oleks abiks funktsioonidel.
Stiilis:

funktsioon (ülem_id, level = 0) {
leiame "ülem_id" lapsed
kui leiame mõne lapse, siis kutsume välja sama funktsiooni, mille atribuutideks anname leitud lapse id ja level+1
}

Ja sellega siis joonistad iga kausta/faili välja.
Adminiliideses joonistad kasutajale samamoodi välja selle puu et ta saaks valida siis kuhu alla lisada midagi.
Kommentaarid: 85 loe/lisa Kasutajad arvavad:  :: 0 :: 2 :: 78
tagasi üles
vaata kasutaja infot saada privaatsõnum
LiivaneLord
Sõpradele "Olavi"

liitunud: 20.06.2006




sõnum 28.09.2009 21:29:52 vasta tsitaadiga

Nonii, sellele leveli mõttele ma vist päris naelapea pihta ei saanud, kuid koodi sain küll 188-lt realt 75-le:

php:
  1. <!---Sisukord------------------------------------------------->
  2. <td width="250" valign="top" bgcolor="#80bafa">
  3.  
  4. <?
  5. $kodu_ikoon="<img src='http://i31.tinypic.com/wbchsn.jpg' width='20' border='0'>";
  6. echo "<a href='index.php'>$kodu_ikoon</a><a href='index.php'>Esileht</a><br>";
  7. function id_aita($yid)
  8. {       
  9.         $sql_id_aita=mysql_query("SELECT * FROM artiklid WHERE id='$yid'");
  10.         while ($andmed_id_aita=mysql_fetch_array($sql_id_aita))
  11.         {
  12.                 global $ülem;
  13.                 global $l;
  14.                 global $kord;      
  15.                 $üle=$andmed_id_aita[id];
  16.                 $ülem=$andmed_id_aita[ülemkausta_id];
  17.                 if ($üle==$kord)
  18.                 {
  19.                         $ülem=$üle;
  20.                 }
  21.                 elseif ($ülem==0)
  22.                 {
  23.                         $l=1;
  24.                         $kord=$üle;
  25.                 }
  26.                
  27.                 elseif ($ülem==$kord)
  28.                 {
  29.                         if (isset($andmed_id_aita[kausta_nimi]) and $andmed_id_aita[kausta_nimi]!="")
  30.                         {
  31.                         $l=2;
  32.                         }
  33.  
  34.                         $kord=$üle;
  35.                 }
  36.                 elseif ($ülem!=0 and $üle!=$kord)
  37.                 {
  38.                         $l=$l+1;
  39.                         id_aita($andmed_id_aita[ülemkausta_id]);
  40.                 }              
  41.         }
  42. }
  43. function kaustapuu($xid,$tühikud)
  44. {
  45.         $kausta_ikoon="<img src='http://i27.tinypic.com/2mysot1.jpg' width='16' border='0'>";
  46. $teksti_ikoon="<img src='http://i29.tinypic.com/1gtbew.jpg' width='16' border='0'>";
  47.         $tühik="&nbsp;&nbsp;&nbsp;";
  48. id_aita($xid);
  49. global $kord;
  50. global $l;
  51. global $ülem;
  52. $sql=mysql_query("SELECT * FROM artiklid WHERE ülemkausta_id='$ülem' ORDER BY kausta_nimi");
  53. while($andmed=mysql_fetch_array($sql))
  54.         {
  55.         if (!isset($andmed[kausta_nimi]) or $andmed[kausta_nimi]=="")
  56.                 {
  57.                 $kaust=$andmed[pealkiri];
  58.                 $ikoon=$teksti_ikoon;
  59.                 }
  60.                 else
  61.                 {
  62.                         $kaust=$andmed[kausta_nimi];
  63.                         $ikoon=$kausta_ikoon;
  64.                 }
  65.         echo "$tühikud<a href='?id=$andmed[id]'>$ikoon</a><a href='?id=$andmed[id]'>$kaust</a><br>";
  66.         if (isset($l) and $l>=1 and $andmed[id]==$kord)
  67.                 {
  68.                 $l=0;
  69.                 $xtühikud="$tühikud$tühik";
  70.                 kaustapuu($xid,$xtühikud);
  71.                 }              
  72.         }
  73. }
  74. kaustapuu("$id","");
  75. ?>
  76. </td>
  77. <!---/Sisukord----------------------->


Päris palju tunde sai selle väljamõtlemisega aega viidetud ja kõige raskemaks pähkliks kujunes see funktsioon id_aita(), kus need IF avaldused - juhe jooksis vahepeal täiesti kokku mul ja ka veebilehel.
Igatahes index.php peaaegu töötab, aga kas ei ole mingit võimalust, et ka kaustanimed saaks tähestiku järjekorda? Hetkel panin pealkirjad andmebaasis käsuga ORDER BY järjekorda ja kuna kausta puhul on pealkirjaks "", siis selle abil tulevad kaustad nimekirjas etteotsa ja seejärel pealkirjad tähestiku järjekorras. Tahaks sama ka kaustadega ...
Kommentaarid: 20 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 19
tagasi üles
vaata kasutaja infot saada privaatsõnum
mikk36
HV Guru
mikk36

liitunud: 21.02.2004



Online

sõnum 28.09.2009 23:01:55 vasta tsitaadiga

Andmebaasis anna igale asjale korralik nimi, vajadusel saad kaustad ettepoole tuua tehes eraldi tulba tüübi kohta (kaust või fail).
Rekursiivse funktsiooni mõte on see, et kasutad üht ja sama funktsiooni kõikide kaustade joonistamisel, siis ei teki seda jaburat max levelite piirangut (kuigi soovi korral saad ise määrata funktsiooni sees piirangu et mis leveli pealt ta lõpetab töö näiteks).
Antud käsitluses käituks iga kaust nagu esimene ülemkaust: ta joonistab oma alamkaustad ja -failid välja.
Esimeses jooksus siis selectid näiteks ainult kaustad ja failid, mille parent on 0 (root kaust) ja sealt edasi liigud juba vastavalt leitule.
Kommentaarid: 85 loe/lisa Kasutajad arvavad:  :: 0 :: 2 :: 78
tagasi üles
vaata kasutaja infot saada privaatsõnum
LiivaneLord
Sõpradele "Olavi"

liitunud: 20.06.2006




sõnum 28.09.2009 23:54:54 vasta tsitaadiga

Väga tänan sind, mikk36 - sinu nõuanded on väga palju aidanud. icon_smile.gif

Järgmine küsimus läheb küll natuke teemast mööda, aga kuidas suhtuvad Google robotid lehtedesse, mis tuginevad andmebaasile? Pean silmas, et kui mul on kuskil kaustas mingi artikkel, mis tegelikult on andmebaasis, siis kas Google abil on võimalik jõuda otse konkreetse failini läbi mingite märksõnade? Ja kui ei leia, siis kas on võimalik kuidagi leitavaks/leitavamaks teha?

Tuligi nüüd meelde, et katseks panin vahepeal paar unikaalset sõna andmebaasi, mis kuvatakse ka lehel, kuid muutsin vahepeal andmebaasi ja panen uuesti. Olen kuulnud, et Googlel kulub mingi paar kuud enne, kui midagi leidma hakkab.
Kommentaarid: 20 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 19
tagasi üles
vaata kasutaja infot saada privaatsõnum
mikk36
HV Guru
mikk36

liitunud: 21.02.2004



Online

sõnum 29.09.2009 00:38:44 vasta tsitaadiga

http://en.wikipedia.org/wiki/Sitemaps
Kommentaarid: 85 loe/lisa Kasutajad arvavad:  :: 0 :: 2 :: 78
tagasi üles
vaata kasutaja infot saada privaatsõnum
LiivaneLord
Sõpradele "Olavi"

liitunud: 20.06.2006




sõnum 02.10.2009 13:48:38 vasta tsitaadiga

Tänud lingi eest. icon_smile.gif

mikk36 kirjutas:
Antud käsitluses käituks iga kaust nagu esimene ülemkaust: ta joonistab oma alamkaustad ja -failid välja.

On see hea või halb?

Paremat ideed mul ei tulnud, et kuidas asi lahendada ja võibolla ei saanud ma su mõtte tuumast täpselt aru. Mõtlesin nii, et kui tipin aadressireale mingi aadressi, näiteks id=40, siis peab võtma ühendust andmebaasiga, et leida üles see id. Ja selle id juures ei ole märgitud kogu kaustatee, vaid on ainult ülemkaust. Ja ülemkausta järgi peab jõudma juurkataloogini. Kui juurkataloog käes, siis peaks kirjutama välja, kus see id asub sisukorras. Selleks, et peale funktsiooni id_aita() väljakutsumist ei kirjutaks uuesti mulle sinna juurkataloogi, siis selle määrab ära muutuja $kord, mis põhimõtteliset on iga järgmise kutsumise jaoks kui juurkataloog.
Paremat lahenduse peale ma oma mõistusega vist ei tule ja mis abi on leveli numbrist - see ei määra ära kõikide ülemkaustade nimed, vaid lihtsalt tasand??
Umbes nii:

Juur:
Kaust1:
___Kaust2:
______Kaust3:
Kaust4:
___Kaust5:
______Kaust6

Antud näites ei seosta Kausta 3 ja Kausta 6 mitte miski, isegi mitte ülemkaust, vaid kolmas ülemkaust (juur).
Kommentaarid: 20 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 19
tagasi üles
vaata kasutaja infot saada privaatsõnum
mikk36
HV Guru
mikk36

liitunud: 21.02.2004



Online

sõnum 02.10.2009 14:03:10 vasta tsitaadiga

Level on abiks vaid kaustapuu joonistamisel, muuks temast minu hetkekäsitluses tõesti abi pole.
See, et kuidas sa kaustapuud joonistada soovid on täpselt sinu soovi teema, vastavalt võib vaja olla seda funktsiooni täiendada.

Rekursiivsus on hea, kuna siis on sul universaalne funktsioon, mis toimib alati olenemata algandmetest.

Kui on näiteks soov et joonistataks välja vaid tee mingi kaustani, siis võiks vast tekitada näiteks array id'dest, mis kuuluvad antud objekti (kausta näiteks) vanemate hulka, kuna iga id on kordumatu, siis saab igal tasemel seda vaid ühe korra esineda.
Selle array anname kaasa iga kord sellele rekursiivfunktsioonile mis siis kontrollib et kas hetkel joonistatav id on selles parentite listis, kui on, siis joonistab antud id childid ka välja, kui pole, siis liigub edasi.
Tulemus oleks järgmine:
juur
-kaust1
-kaust2
--kaust2.1
---kaust2.1.1
---kaust2.1.2 > aktiivne
----fail2.1.2.1
----fail2.1.2.2
----fail2.1.2.3
--kaust2.2
-kaust3
-kaust4

Parem oleks kui sa tooksid välja näite et kuidas sa soovid kaustapuud näha üldse.
Kommentaarid: 85 loe/lisa Kasutajad arvavad:  :: 0 :: 2 :: 78
tagasi üles
vaata kasutaja infot saada privaatsõnum
LiivaneLord
Sõpradele "Olavi"

liitunud: 20.06.2006




sõnum 02.10.2009 17:54:54 vasta tsitaadiga

icon_biggrin.gif Midagi keerulist ei olegi - tahan täpselt nii, nagu sinagi näitasid oma näites ja näiteks avatud kaustad ---> http://tudiludi.pri.ee/index.php?id=159&Test_for_Hinnavaatlus_Level4 .
Tahtsin lihtsalt teada, et mida sa täpsemalt silmas pidasid ja jällegi pean tunnistama, et array ülemkaustadest on hea idee ja pikas plaanis oleks see arukam, et vältida üleliigseid operatsioone serveris (opereerimine pidevalt kahe funktsiooni vahel, nagu sinagi ütlesid). Võtan seda arvesse ja muudan koodi mingil ajal ...

Hetkel asi töötab selle viimase koodiga, kuis võtsin su nõuannet arvesse. Ma vist andmebaasis ei hakka eraldi välja looma kausta ja faili tuvastamiseks, sest kui mul on kaust, siis pealkirja väli on tühi ja kui mul on pealkiri, siis kausta pealkiri on tühi - selle järgi saan neil vahet teha. Siis saan vast kaustad ja failid omaette järjekorda panna ...

Edit: icon_biggrin.gif Just proovisin ühte asja. Nimelt tuli äkki mõte ja muutsin koodis

php:
  1. 52. $sql=mysql_query("SELECT * FROM artiklid WHERE ülemkausta_id='$ülem' ORDER BY pealkiri,kausta_nimi");


Ja volaa - kõik on järjekorras. Nali on selles, et viimane kord, kui seda proovisin, siis katsetasin kõikvõimalikud variandid läbi, kuid siis tuli error, aga hetkel igatpidi töötab ... icon_razz.gif
Sellest variandist saan vist nii aru, et kui pealkirjad on järjekorda pandud, siis kaustad on eespool, sest nende väärtus pealkirja väljas on "". Ja see, kuidas kaustad järjekorras on, see on --- müstika. icon_razz.gif icon_biggrin.gif
Kommentaarid: 20 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 19
tagasi üles
vaata kasutaja infot saada privaatsõnum
mikk36
HV Guru
mikk36

liitunud: 21.02.2004



Online

sõnum 02.10.2009 21:40:30 vasta tsitaadiga

Milleks eraldi tulp "kausta_nimi" ?
Jäta lihtsalt üks tulp "nimi" ja siis tekita eraldi tinyint(1) tüüpi väli "kaust". Sordid siis järjekorras kaust DESC, nimi ASC.
Kommentaarid: 85 loe/lisa Kasutajad arvavad:  :: 0 :: 2 :: 78
tagasi üles
vaata kasutaja infot saada privaatsõnum
Sold OUT
no credit
Sold OUT

liitunud: 30.07.2002



Autoriseeritud ID-kaardiga

sõnum 02.10.2009 21:41:32 vasta tsitaadiga

Ma ei saa mitte midagi aru siin
_________________
People have been calling for a month and we've been sold out for a week or so.
Kommentaarid: 92 loe/lisa Kasutajad arvavad:  :: 5 :: 1 :: 79
tagasi üles
vaata kasutaja infot saada privaatsõnum
LiivaneLord
Sõpradele "Olavi"

liitunud: 20.06.2006




sõnum 02.10.2009 22:45:38 vasta tsitaadiga

carlking kirjutas:
Ma ei saa mitte midagi aru siin


Kõik on selge minumeelest siin ... icon_razz.gif icon_smile.gif

mikk36 kirjutas:
Milleks eraldi tulp "kausta_nimi" ?
Jäta lihtsalt üks tulp "nimi" ja siis tekita eraldi tinyint(1) tüüpi väli "kaust". Sordid siis järjekorras kaust DESC, nimi ASC.


Kausta_nimi on vajalik selleks, et põhimõtteliselt identfitseerida, kas tegemist on faili või kaustaga ja kui on kaust, siis on kausta nimi. Pealkiri on selleks, kui tegemist on failiga. Eks lahendust on mitmeid ja võib nii üht-, kui ka teistmoodi teha. Ma ütleks, et lõpptulemus on hea. icon_razz.gif
Turvalisusest ei ole mul muidugi halli aimugi ... :S
Kommentaarid: 20 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 19
tagasi üles
vaata kasutaja infot saada privaatsõnum
andrusny
Kreisi kasutaja
andrusny

liitunud: 20.03.2006




sõnum 02.10.2009 22:58:19 vasta tsitaadiga

Väljund on veidi soga, mina hetkel küll pealevaadates ei jaga, mis mille all on ja mis on fail.
Ja milleks sa seda ikkagi teed, kas kaustas olevad lingid hakkavad viima kirjatükkidele või on olemas reaalsed failid, mis kusagil serveri kaustas paiknevad?

tsitaat:
carlking kirjutas:
Ma ei saa mitte midagi aru siin

_________________
Kommentaarid: 7 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 7
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
LiivaneLord
Sõpradele "Olavi"

liitunud: 20.06.2006




sõnum 02.10.2009 23:57:22 vasta tsitaadiga

Kirjatükid jah. Kuigi vahepeal mõtlesin, et võiks luua parem reaalsed kaustad ja failid, kuid see on täiesti mõttetu - miks luua 1000 uut faili, kui samahästi võiks kõik olla andmebaasis. Ja kui tahan midagi teistmoodi teha, siis pean hiljem kõiki neid faile hakkama muutma, aga ühe faili puhul muudan vajadusel ainult ühte faili. icon_confused.gif

Aga hetkel töötab see 100% nii, nagu algul tahtsin (nii uskumatu, kui see ka ei ole). icon_biggrin.gif
Kommentaarid: 20 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 19
tagasi üles
vaata kasutaja infot saada privaatsõnum
mikk36
HV Guru
mikk36

liitunud: 21.02.2004



Online

sõnum 03.10.2009 08:51:15 vasta tsitaadiga

Näitad ehk ka lõppkoodi?
Kommentaarid: 85 loe/lisa Kasutajad arvavad:  :: 0 :: 2 :: 78
tagasi üles
vaata kasutaja infot saada privaatsõnum
LiivaneLord
Sõpradele "Olavi"

liitunud: 20.06.2006




sõnum 03.10.2009 12:45:13 vasta tsitaadiga

php:
  1. <?
  2. if (!isset($id))
  3. {
  4.         $ülem=0;
  5. }
  6. ?>
  7. <!---Sisukord------------------------------------------------->
  8. <td width="250" valign="top" bgcolor="#80bafa">
  9.  
  10. <?
  11. $kodu_ikoon="<img src='http://i31.tinypic.com/wbchsn.jpg' width='20' border='0'>";
  12. echo "<a href='index.php'>$kodu_ikoon</a><a href='index.php'>Esileht</a><br>";
  13. function id_aita($yid)
  14. {       
  15.         $sql_id_aita=mysql_query("SELECT * FROM artiklid WHERE id='$yid'");
  16.         while ($andmed_id_aita=mysql_fetch_array($sql_id_aita))
  17.         {
  18.                 global $ülem;
  19.                 global $l;
  20.                 global $kord;      
  21.                 $üle=$andmed_id_aita[id];
  22.                 $ülem=$andmed_id_aita[ülemkausta_id];
  23.                 if ($üle==$kord)
  24.                 {
  25.                         $ülem=$üle;
  26.                 }
  27.                 elseif ($ülem==0)
  28.                 {
  29.                         $l=1;
  30.                         $kord=$üle;
  31.                 }
  32.                
  33.                 elseif ($ülem==$kord)
  34.                 {
  35.                         if (isset($andmed_id_aita[kausta_nimi]) and $andmed_id_aita[kausta_nimi]!="")
  36.                         {
  37.                         $l=2;
  38.                         }
  39.  
  40.                         $kord=$üle;
  41.                 }
  42.                 elseif ($ülem!=0 and $üle!=$kord)
  43.                 {
  44.                         $l=$l+1;
  45.                         id_aita($andmed_id_aita[ülemkausta_id]);
  46.                 }              
  47.         }
  48. }
  49. function kaustapuu($xid,$tühikud)
  50. {
  51.         $kausta_ikoon="<img src='http://i27.tinypic.com/2mysot1.jpg' width='16' border='0'>";
  52. $teksti_ikoon="<img src='http://i29.tinypic.com/1gtbew.jpg' width='16' border='0'>";
  53.         $tuhik="&nbsp;&nbsp;&nbsp;";
  54. id_aita($xid);
  55. global $kord;
  56. global $l;
  57. global $ülem;
  58. $sql=mysql_query("SELECT * FROM artiklid WHERE ülemkausta_id='$ülem' ORDER BY pealkiri, kausta_nimi");
  59. while($andmed=mysql_fetch_array($sql))
  60.         {
  61.         if (!isset($andmed[kausta_nimi]) or $andmed[kausta_nimi]=="")
  62.                 {
  63.                 $kaust=$andmed[pealkiri];
  64.                 $ikoon=$teksti_ikoon;
  65.                 }
  66.                 else
  67.                 {
  68.                         $kaust=$andmed[kausta_nimi];
  69.                         $ikoon=$kausta_ikoon;
  70.                 }
  71.                 $url_kaust=str_replace(' ','_',$kaust);
  72.         echo "$tühikud<a href='?id=$andmed[id]&$url_kaust'>$ikoon</a><a href='?id=$andmed[id]&$url_kaust'>$kaust</a><br>";
  73.         if (isset($l) and $l>=1 and $andmed[id]==$kord)
  74.                 {
  75.                 $l=0;
  76.                 $xtühikud="$tühikud$tühik";
  77.                 kaustapuu($xid,$xtühikud);
  78.                 }              
  79.         }
  80. }
  81. kaustapuu("$id","");
  82. ?>
  83. </td>
  84. <!---/Sisukord----------------------->


Pean lähemalt uurima, et kuidas kasutada array-d, et ülemkaustade id-d sellesse kokku võtta, kuid hetkel ei oska seda rakendada ...
Kommentaarid: 20 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 19
tagasi üles
vaata kasutaja infot saada privaatsõnum
keevitaja
AM 10 aastat
keevitaja

liitunud: 05.11.2001




sõnum 06.10.2009 19:47:36 vasta tsitaadiga

ma kah siin leiutasin sama asja. tegin ühe variandi ka rekursiivselt. otsi siit HV-st teemat. aga kui tegi on mingi väiksemat sorti kodulehega, näiteks keskmine eesti firma kodukas, siis pole asjal eriti jumet, kuna adminnimine, ehk siis kaustade liigutamine läheb liiga keemiaks. lõpuks tegin lihtsalt sellise variandi, kus siis igal kaustal on level ja order id, mille alusel siis kuvatakse. juhul kui on tegu näiteks 3-nda level kaustaga, saab htmlis kirjutada style="margin-left:30px; ning lõpuks selliselt kujunebki kataloogi puu. see et rekursiivselt on kiirem on õige, kuid kui võetakse välja näiteks 30 kausta, siis pole see oluline!

tahad kausta liigutada paremale, siis lihtsalt pead muutma leveli ära... kustutad ühe kasuta ära, teed alumistele order_id=order_id + 1. mul mysqlis...

_________________
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
mikk36
HV Guru
mikk36

liitunud: 21.02.2004



Online

sõnum 06.10.2009 20:29:54 vasta tsitaadiga

keevitaja, menüüpuud siis pigem mõtled, mitte kaustapuud?
Kommentaarid: 85 loe/lisa Kasutajad arvavad:  :: 0 :: 2 :: 78
tagasi üles
vaata kasutaja infot saada privaatsõnum
keevitaja
AM 10 aastat
keevitaja

liitunud: 05.11.2001




sõnum 06.10.2009 20:49:36 vasta tsitaadiga

jajah... aga see puu põhimõte on rekursiivselt vist sama
_________________
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
LiivaneLord
Sõpradele "Olavi"

liitunud: 20.06.2006




sõnum 12.10.2009 21:55:08 vasta tsitaadiga

Ma ei tee vahet menüüpuul ja kaustapuul, kuid mul eesti keel ka kohati longab ... icon_biggrin.gif

Keevitaja idee on ka päris hea (style="margin-left:30px").
Kuid kaustapuu ei tähenda seda, et absoluutselt kõik failid ja kaustad selles ei ole korraga nähtavad, vaid ainult need, mis on parasjagu valitud. Näiteks 30 kausta esmakordne väljavõtmine tähendab seda, et tuleb avada 30 erinevat lehte erinevate kaustade ID-de väärtustega. Ja iga leht on eraldiseisev ja ei salvesta eelmisel korral valitud kaustu. Ja loomulikult peab kaustapuus olema avatud ainult need kaustad, mis on antud ID ülemkaustad. Kõik 30 kausta ei pea olema avatud, kui neid vaja hetkel ei ole.

Mind huvitab väga ka javascript - sellega saab igast lahedaid asju koostada - siis saaks vast kogu kaustapuu alla laadida ja sisukorras sirvimine on kiire ja ilma lehe pideva refreshita uue id näol ... icon_razz.gif Aga seda õpin siis, kui PHP on enamvähem selge. Iga uus päev toob midagi uut ja huvitavat ... icon_razz.gif icon_biggrin.gif
Kommentaarid: 20 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 19
tagasi üles
vaata kasutaja infot saada privaatsõnum
mikk36
HV Guru
mikk36

liitunud: 21.02.2004



Online

sõnum 12.10.2009 22:02:16 vasta tsitaadiga

See et kas näidata korraga ära terve puu või ainult osa sellest on täiesti lehe tegija/tellija otsustada.
PHP'd ja JS'i on parem siiski käsikäes õppida, kumbki täiendab teineteist (kuna üks jookseb serveris, teine kliendis).
Kommentaarid: 85 loe/lisa Kasutajad arvavad:  :: 0 :: 2 :: 78
tagasi üles
vaata kasutaja infot saada privaatsõnum
linnumees
HV kasutaja

liitunud: 15.06.2005




sõnum 14.10.2009 10:56:30 vasta tsitaadiga

Tegelikkuses oleks Sul mõttekas ilmselt kirjutada mingi universaalne klass puu struktuuriga asjadega toimetamiseks. Andmebaasi paned lihtsalt kirja parenti ID ja misiganes muud infot Sul vaja on. Siis võtad ühe päringuga andmebaasist kõik välja ja teed kolm massiivi, ühe andmete jaoks, teise märgid parentita elemendid ning kolmandasse seosed parenti ja otseste alamelementide vahel. Siis käid andmete massiivi uuesti üle ja tekitad seosed alamelementide massiivi ning ülemelemendiga. Seda kõike muidugi referencede abiga. Seejärel tekitad hunniku funktsioone nende andmetega toimetamiseks, näiteks kõigi alam- või ülemelementide (IDde) võtmiseks, pathi järgi ID leidmiseks jne ning muidugi erinevate puude joonistamiseks - menüü, <select>i väärtuste jne jaoks. Igal juhul kiirem ja mõistlikum kui teha n mõttetut päringut.
Kommentaarid: 3 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 3
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
näita postitusi alates eelmisest:   
uus teema   vasta Tarkvara »  Programmeerimine »  Kuidas koostada korralikku kaustapuud? mine lehele 1, 2  järgmine
[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.