praegune kellaaeg 26.06.2025 23:55:10
|
Hinnavaatlus
:: Foorum
:: Uudised
:: Ärifoorumid
:: HV F1 ennustusvõistlus
:: Pangalink
:: Telekavad
:: HV toote otsing
|
|
autor |
|
keevitaja
AM 10 aastat

liitunud: 05.11.2001
|
14.10.2009 19:44:38
|
|
|
vaadasin seda tudiludi linki, kus tal siis see kausta puu olemas on. tundub ikkagi, et tegu on nagu lehel navigeerimise menüüga. väljadeks oleks
id
order
level
sqlist siis võtaks välja: select id, level from tabel order by order
üles alla saaks liigutada lihtsalt vahetades order ära kahe node vahel. paremale vasakule siis levelit 1 võrra suurendad või vähendada
lisada saaks vahel nii, et ennem lisamist teha update table set order=order + 1 where order>order (viimane order siis id alusel mille alla soovid lisada päritud) . ning siis lisada juba insert into tabel andmed orderiks just see päritud order
kustudades siis alumistele orderitele order=order - 1
ja olekski kõik. kui teha selline puu, kus levelid luuakse parent_id järgi, siis läheb ikka täiega keemiaks. order it seal ju kah veel mängib. tohutu piix minu arust
_________________ Hinnavaatlus ei ole koht arvamuse avaldamiseks! |
|
Kommentaarid: 51 loe/lisa |
Kasutajad arvavad: |
   |
:: |
1 :: |
3 :: |
40 |
|
tagasi üles |
|
 |
LiivaneLord
Sõpradele "Olavi"
liitunud: 20.06.2006
|
21.10.2009 21:32:12
|
|
|
Nii, vahepeal tuli tahtmine jälle sisukorda näppida ning selle koodi natuke muudetud inimväärsemaks ...
linnumees nõuannet ei oska kasutada ja kommenteerida, sest ma pole nii tark selles asjas veel.
Kuid võtsin kuulda mikk36 nõuannet (niipalju, kui aru sain) ning tulemuseks sai:
php:
|
<!---Sisukord-------------------------------------------------> <td rowspan="2" width="250" valign="top" bgcolor="#80bafa"> <? $kodu_ikoon="<img src='http://i31.tinypic.com/wbchsn.jpg' width='20' border='0'>"; echo "<a href='index.php'>$kodu_ikoon</a><a href='index.php'>Esileht</a><br>"; function id_aita($id,$rida) { ($id== 0)? $sql_id_aita= mysql_query("SELECT * FROM artiklid WHERE ülemkausta_id='$id'"): $sql_id_aita= mysql_query("SELECT * FROM artiklid WHERE id='$id'"); { $ülem=$andmed_id_aita[ülemkausta_id]; if ($ülem!="0") { id_aita($andmed_id_aita[ülemkausta_id],$rida); } elseif ($ülem=="0") { } } } id_aita($id,""); function kaustapuu($tühikud,$x,$rida) { $kausta_ikoon="<img src='http://i27.tinypic.com/2mysot1.jpg' width='16' border='0'>"; $teksti_ikoon="<img src='http://i29.tinypic.com/1gtbew.jpg' width='16' border='0'>"; $tühik=" "; if ($x=="") { $x=0; } $sql= mysql_query("SELECT * FROM artiklid WHERE ülemkausta_id='$rida[$x]' ORDER BY pealkiri, kausta_nimi"); { if (empty($andmed[kausta_nimi ])) { $kaust=$andmed[pealkiri]; $ikoon=$teksti_ikoon; } else { $kaust=$andmed[kausta_nimi]; $ikoon=$kausta_ikoon; } echo "$tühikud<a href='?id=$andmed[id]&$url_kaust'>$ikoon</a><a href='?id=$andmed[id]&$url_kaust'>$kaust</a><br>"; if ($andmed[id]==$rida[$x+1]) { $x=$x+1; $xtühikud="$tühikud$tühik"; kaustapuu($xtühikud,$x,$rida); } } } kaustapuu("","",$rida); ?> </td> <!---/Sisukord----------------------->
|
Kokkuvõtlikult on funktsioon nimega id_aita(), mis saab id väärtuse, mis on valitud. Kui sellel id-l on ülemkaustu, siis arrayna loob nimekirja kõigist ülemkaustadest, mille nimeks saab siis $rida. Järjestus on arrays nii, et juurkaust on kõige esimene ja iga järgnev alamkaust on peale seda.
Teine funktsioon kaustapuu() leiab $rida ning kuvab vastavalt selle väärtustele kõik alamkaustad.
Päris lihtne oli nüüd, kus sain natuke aru sellest array põhimõttest ja eelkõige, kuidas seda vajalikus osas rakendada. Jamas tükk aega mul ja tuli välja, et oli väike kirjaviga, kus if ($andmed[id]==$rida[$x+1]) jäi puudu üks võrdusmärk ja kaua aega murdsin pead, et mis oli koodis viga ... :S
Kas saab veel paremini?
|
|
Kommentaarid: 20 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
19 |
|
tagasi üles |
|
 |
606
HV vaatleja
liitunud: 04.02.2004
|
22.10.2009 09:44:29
|
|
|
tervitus.
küsimus baasi struktuuri osas, miks Sa hoiad kõike ühes tabelis? ma ise kasutaks 4 tabelit:
1. kaustad koos pealkirjaga
2. artiklid
3. seosed kaustade vahel (master -> slave)
4. seosed kausta ja artikli vahel
sellisel viisil ei teki sul andmete kordamist nii palju. (kui Sa oma tabelisse tahad lisada nt 10 artiklit sama kausta alla, siis Sul tekib pmt 10 sama rida)
olenevalt kasutade hulgast võib baas minna aeglaseks (ka indexit kasutades)
|
|
tagasi üles |
|
 |
LiivaneLord
Sõpradele "Olavi"
liitunud: 20.06.2006
|
22.10.2009 15:55:15
|
|
|
606 kirjutas: |
tervitus.
küsimus baasi struktuuri osas, miks Sa hoiad kõike ühes tabelis? ma ise kasutaks 4 tabelit:
1. kaustad koos pealkirjaga
2. artiklid
3. seosed kaustade vahel (master -> slave)
4. seosed kausta ja artikli vahel
sellisel viisil ei teki sul andmete kordamist nii palju. (kui Sa oma tabelisse tahad lisada nt 10 artiklit sama kausta alla, siis Sul tekib pmt 10 sama rida)
olenevalt kasutade hulgast võib baas minna aeglaseks (ka indexit kasutades) |
Kuidas tekib palju andmete kordamist?
Kas sa pead silmas koodis 41.-51.st rida?
|
|
Kommentaarid: 20 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
19 |
|
tagasi üles |
|
 |
raxz
HV Guru
liitunud: 27.07.2003
|
22.11.2009 06:59:16
|
|
|
Korrektne oleks teha mitme tabeliga jah ning kasutada üks mitmele seoseid.
|
|
Kommentaarid: 46 loe/lisa |
Kasutajad arvavad: |
   |
:: |
1 :: |
0 :: |
45 |
|
tagasi üles |
|
 |
andrusny
Kreisi kasutaja

liitunud: 20.03.2006
|
22.11.2009 11:41:18
|
|
|
Tekkis ka huvi ja tegin prooviks klassi menyy.
See on hetkel linkimise menüü erinevatele aadressidele, kuid lingi asemele saab aretada ka mingi andmebaasi päringu, mis võtab sealt andmed ja kuvab. Tahtsin lihtsalt teha kaustapuu, et saab lisada kaustuja alamkaustu.
class menyy {
// ***********************************************************************************************************************
public function tee_menyy($link_name, $link, $parent_id=0, $table_name){
try{baas::sisse();
$paring="INSERT INTO $table_name ( id , link_name , link , parent_id) VALUES ( NULL , '".$link_name."' , '".$link."', '".$parent_id."')" ;
baas::paring($paring);
baas::sule_baas();
} catch ( vead1 $e ) {/* veateate valjastus */ echo $e;}
}
// ***********************************************************************************************************************
public function kuva_menyy($pID=0, $table_name){
$paring="SELECT * FROM $table_name WHERE parent_id='$pID'";
try{
baas::sisse();
$tulemus=baas::paring($paring);
echo '<ul>';
while ($tulem2=mysql_fetch_assoc($tulemus)) {
echo '<li><a href="'.$tulem2['link'].'">'.$tulem2['link_name'].'</a></li>';
$id=$tulem2['id'];
$paring="SELECT * FROM $table_name WHERE parent_id='$id'";
$tulemus2=baas::paring($paring);
if( count($tulemus2)>0){echo "<ul>"; $this -> kuva_menyy($tulem2['id'], $table_name);echo '</ul>';}
}
echo '</ul>';
} catch ( vead1 $e ) {/* veateate valjastus */ echo $e;}
}
// ************************************************************************************************************************
public function anna_id($table_name, $select_name){
$paring="SELECT * FROM $table_name ";
try{
baas::sisse();
$tulemus=baas::paring($paring);
echo '<select name="'.$select_name.'">';
while ($tulem2=mysql_fetch_assoc($tulemus)) {
echo '<option value="'.$tulem2['id'].'">'.$tulem2['link_name'].'</option>';
}
echo '</select>';
baas::sule_baas();
} catch ( vead1 $e ) {/* veateate valjastus */ echo $e;}
}
}
|
Kogu selle klassi saate vaadata siit.
Kogu menyy klass
_________________
 |
|
Kommentaarid: 7 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
7 |
|
tagasi üles |
|
 |
|
lisa lemmikuks |
|
|
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.
|