raivis Posted November 15, 2006 Report Share Posted November 15, 2006 Sveicināti php eksperti! Būvēju 2 slāņainu menu, kura ID links, include fails un nosaukums piem. 2 valodās tiktu glabāts menu.dot failā. Problēmu man sagādā menu 2 slāņa korekta manīgo noteikšana un attiecīga to vērtību izvadīšana. Vēlos panākt, lai, kad esmu linkā menu.php?lang=en&id=portfolio, man tiek izvadīta attiecīgajā valodā pēc $lang vērtības (EN vai LV) izvēlne, kas izskatītos aptuveni: Photo Video WEB Design ----------------- Kā noprotu izmaiņas vajadzētu veikt rindā foreach($lines as $line_num => $line){ lai mainīgo vērtības tiktu pārsauktas jeb atšķirtas nevis ar katru jauno rindu, bet simbolu "#" mainīgajā $menu2. Ceru, ka jūs man varēsiet tam ieteikt kādu vieglu risinājumu. Paldies! ------menu.txt-------- news|News|news.php|intro:Intro/Ievads| portfolio|Portfolio|portfolio.php|photo:Photo/Foto#video:Video/Video#www:WEB Design/WEB Dizains| services|Services|services.php|photo:Photo/Foto#www:WEB Design/WEB Dizains| contacts|Contacts|contacts.php|| ------menu.php------- $lines = file("content/data/menu.dat"); foreach($lines as $line_num => $line){ list($a_href,$name,$sourche,$menu2)=explode('|', $line); list($name_en,$name_lv) = explode('/', $name); list($menu2a) = explode('#', $menu2); list($menu2_href,$menu2_name) = explode(':', $menu2a); list($menu2_name_en,$menu2_name_lv) = explode('/', $menu2_name); if(isset($echo_menu2)){ $echo_menu=$echo_menu2; } if($_GET['id']==$a_href){ if($_GET['lang']=="en"){ echo "<a href=\"menu.php?lang=$lang&id2=".$menu2_href."\">".$menu2_name_en."</a>; }elseif($_GET['lang']=="lv"){ echo <a href=\"menu.php?lang=$lang&id2=".$menu2_href."\">".$menu2_name_lv."</a>; } } } Link to comment Share on other sites More sharing options...
hmnc Posted November 15, 2006 Report Share Posted November 15, 2006 jooopcik..... veci pamācies loģiku :) Link to comment Share on other sites More sharing options...
Delfins Posted November 16, 2006 Report Share Posted November 16, 2006 Kam tev tas čakars.. ieliec visu php masīva un glabā kā parastu php skriptu... tad tik loop-oties pa to masīvu cik vien uziet.. visādi mans_menu.dat nav krutuma pašapliecinājums. Link to comment Share on other sites More sharing options...
raivis Posted November 16, 2006 Author Report Share Posted November 16, 2006 Lai nu arii kaa, veelos failaa menu.dat defineet 2 slaanjaina menu veertiibas. Taapat veeleetos tam atkost mysql risinaajumu, kas droshivien buutu visvienkaarshaakais. Link to comment Share on other sites More sharing options...
v3rb0 Posted November 16, 2006 Report Share Posted November 16, 2006 ja gribi kruta un failā, tad xml, kam pa virsu uzraidi xslt. domāt kaut kādu savu formātu tik tāpēc, lai būtu citādāk no citiem, var atļauties tikai m$. parasti gan pietiktu, ja ar roku sarakstītu to menu ar portfeli un bilžu galeriju htmlā - ātrāk/serverim mazāk liekas darbības jādara. :) Link to comment Share on other sites More sharing options...
Delfins Posted November 16, 2006 Report Share Posted November 16, 2006 (edited) $items = Array(); $item['name'] = 'home'; $item['labels'] = Array($lv_lang_id => 'Latviski', $en_lang_id => 'Angliski'); $item['url'] = 'index.php'; $item['subitems'] = Array($otherItem1,$otherItem2); $items[] = $item; $items[] = $item; $menu['subitems'] = $items; Edited November 16, 2006 by Delfins Link to comment Share on other sites More sharing options...
raivis Posted November 17, 2006 Author Report Share Posted November 17, 2006 (edited) Šķiet ka jūs manu jautājumu pārpratāt. Lūk, arī šis variants nav īsti korekts: $lines = file("menu.txt"); foreach($lines as $line_num => $line){ list($a_href,$name,$sourche,$menu2)=explode('|', $line); foreach($lines as $line_num => $menu2){ list($menu2a) = explode('#', $menu2); list($menu2_href,$menu2_name) = explode(':', $menu2a); if($_GET['id1']==$a_href){ echo "<a href=\"menu.php?lang=$lang&id1=".$a_href."&id2=".$menu2_href."\">".$menu2_name_en."</a>"; } } } ------menu.txt-------- news|News|news.php|intro:Intro| portfolio|Portfolio|portfolio.php|photo:Photo#video:Video#www:WEB Design| services|Services|services.php|photo:Photo#www:WEB Design| contacts|Contacts|contacts.php|| ------------------------ itkā risinājumam ir jābūt funkcijas foreach() izpildē, lai katra rindas mainīgo vērtības tiktu atšķirtas ar simbolu "#" mainīgajā $menu2 Vai kādam prātā rastos kāds loģisks risinājums? Paldies! Vēlos, lai piem. linkā menu.php?id=portfolio, man tiek izvadīta izvēlne: Photo Video WEB Design Edited November 18, 2006 by raivis Link to comment Share on other sites More sharing options...
andrisp Posted November 17, 2006 Report Share Posted November 17, 2006 Ikviens kas ir guds, tam nebuutu gruutiibas atbildeet uz jebkaadu jautaajumu. Piedod, atvaino, bet vienkārši stulbs apgalvojums :). Link to comment Share on other sites More sharing options...
raivis Posted November 18, 2006 Author Report Share Posted November 18, 2006 Vai kādam prātā kāds loģisks risinājums? Link to comment Share on other sites More sharing options...
john.brown Posted November 18, 2006 Report Share Posted November 18, 2006 Loģisks risinājums ir prātā :) Atteikties no tās dīvainās faila struktūras, kura gaisu jauc. Un : 1) turēt prastu php failiņu ar struktūru, tipa, kā Delfins uzrakstīja 2) izmantot mysql ar tabulu, tipa: item_id | name | parent_id. Un no tās taisīt struktūru, kā Delfins uzrakstija 3) taisīt augstāk minēto tabulu teksta failiņā, un rakstīt iekš php handleri, kas no tā failiņa taisīs struktūru, kā Delfins uzrakstīja :) Link to comment Share on other sites More sharing options...
raivis Posted November 18, 2006 Author Report Share Posted November 18, 2006 Diemžēl ar MySql neesmu tik ļoti pazīstams. Kaut gan domāju ka būtu laiks to iepazīt tuvāk. Vai jūs, lūdzu, varētu man norādīt pēc iespējas labāku virzienu, kā lai elementāri ar php mysql funkcijām izveidoju tabulas struktūru, kur glabātos mana menu dati. Un kā lai to izvadu kā 2 slāņainu menu, piem. News --Intro Portfolio --Photo --Video --WEB Design Services --Photo --WEB Design Contacts Kā lai panāku, kad $id=services, pie menu Services ir bold tekstā + tiek izvadīta, jeb piedāvāta papildus izvēlne --Photo --WEB Design Un kā lai rediģēju menu, to mainot, dzēšot un pie tā pievienojot jaunus datus? Man nesagādātu nekādas lielās grūtības to visu paveikt, ja mainīgo vērtības tiktu glabātas *.txt failā, kas kā atzīstu nav labākais risinājums. Varbūt jūs varat man piedāvāt kādu linku uz tml. php + mysql 2 slāņainu menu paraugu, kuru būtu iespējams vienkārši rediģēt caur html formām? Liels paldies! Link to comment Share on other sites More sharing options...
raivis Posted November 19, 2006 Author Report Share Posted November 19, 2006 Nedomāju, ka patiešām nav neviena, kas nespētu atrisināt šādu jautājumu: Atšķirt faila menu.txt katras rindas mainīgo vērtības ar simbolu "#" mainīgajā $menu2. Pēc manām domām risinājumam ir jābūt funkcijas foreach() izpildē. Tam vajadzētu izskatīties šadi, no linka menu.php?id=portfolio : Photo Video WEB Design $lines = file("menu.txt");foreach($lines as $line_num => $line){ list($a_href,$name,$sourche,$menu2)=explode('|', $line); foreach($lines as $line_num => $menu2){ list($menu2a) = explode('#', $menu2); list($menu2_href,$menu2_name) = explode(':', $menu2a); if($_GET['id1']==$a_href){ echo "<a href=\"menu.php?lang=$lang&id1=".$a_href."&id2=".$menu2_href."\">".$menu2_name."</a>"; } } } Faila menu.txt saturs:news|News|news.php|intro:Intro| portfolio|Portfolio|portfolio.php|photo:Photo#video:Video#www:WEB Design| services|Services|services.php|photo:Photo#www:WEB Design| contacts|Contacts|contacts.php|| Link to comment Share on other sites More sharing options...
bubu Posted November 19, 2006 Report Share Posted November 19, 2006 Nesaprotu, kur ir problēma? Tajā, ka nemāki, vai negribi iemācīties? Priekšā rakstīt negribu un nerakstīšu. Tu labāk prasi konkrētas lietas. Raksti un rādi, kas tev sanāk un kas nē. Ko labāk ir izdarīt ar izsalkušu cilvēku? Iedot viņam zivis vai arī labāk iedot makšķeri un iemācīt ķert zivis? Link to comment Share on other sites More sharing options...
raivis Posted November 19, 2006 Author Report Share Posted November 19, 2006 Nevajag taisīt muļķīgas QUOTEs (bubu) Taadaa gadiijumaa noraadi man uz kaadu risinaajumu, paliekot pie taa pasha koda izstraades - $lines = file("menu.txt"); foreach($lines as $line_num => $line){ list($a_href,$name,$sourche,$menu2)=explode('|', $line); foreach($lines as $line_num => $menu2){ list($menu2a) = explode('#', $menu2); list($menu2_href,$menu2_name) = explode(':', $menu2a); if($_GET['id1']==$a_href){ echo "<a href=\"menu.php?lang=$lang&id1=".$a_href."&id2=".$menu2_href."\">".$menu2_name."</a>"; } } } Link to comment Share on other sites More sharing options...
andrisp Posted November 19, 2006 Report Share Posted November 19, 2006 Ja tiešām vēlies, lai cilvēki iedziļinātos tavā kodā, tad noformē to kārtīgi. Vismaz kautkādu indentāciju ievies. Link to comment Share on other sites More sharing options...
Recommended Posts