BaLTais Posted April 28, 2010 Report Share Posted April 28, 2010 (edited) <?php include("blocks/db.php"); $result = mysql_query("SELECT title,id FROM settings"); $myrow = mysql_fetch_array($result); print ('<ul class="nav"> '); do { printf ("<a href='index.php?id=%s'>%s</a>",$myrow["id"],$myrow["title"],"</li>"); } while ($myrow = mysql_fetch_array($result)); print ("</ul> "); ?> Domāju, ka Jums ar šo kodu viss ir skaidrs! - Tas man izvada menu(pogu uzrakstus ar linkiem). Viss strādā lieliski,ar jau piešķirto klasi,bet nezinu kā lai pogai piešķir citu izskatu, kad tā ir "aktīva". Skaidrs ka ar CSS! Bet kā lai to ieliek šajā kodā? Kaut kādu atsevišķu pārbaudi taisīt, jo cikl izpildoties piešķir pie izvades tikai vienu konkrētu klasi!!!? Paldies Edited April 29, 2010 by BaLTais Quote Link to comment Share on other sites More sharing options...
briedis Posted April 28, 2010 Report Share Posted April 28, 2010 (edited) Iekļauj to kodu code tagos, lai vieglāk pārskatāms. Vienam elementam var norādīt vairākas klases, piemēram <elem class="klase1 klase2 klase3"> (tev tur nav <li> tags pazudis??) Es rakstītu šādi: <?php $result = mysql_query("SELECT title,id FROM settings"); $sel_id = isset($_GET['id']) ? (int)$_GET['id'] : 0; //izvēlētais id $html_list = ""; //te glabāsies sarkasts while($myrow = mysql_fetch_assoc($result)){ $html_list .= " <li" . ($sel_id === $myrow["id"] ? " class=\"selected\"" : "") . "> <a href='index.php?id={$myrow["id"]}'>{$myrow["title"]}</a> </li> "; } //tur kur vajag, izvadam echo "<lu class=\"nav\">$html_list</ul>"; ?> Piezīmes: nesaprotu, kāpēc cilvēki lieto do-while tur kur to nevajag, tas tikai pasliktina uztveramību. Un cikls arī izpildīsies, ja $row būs false (nav ierakstu), jo while nosacījums ir tikai beigas. print funkcija arī ir diezgan oldskūl... mysql_fetch_array vietā var lietot mysql_fetch_assoc, lai nedublējas dati masīvā, kurus tāpat neizmanto... Edited April 29, 2010 by briedis Quote Link to comment Share on other sites More sharing options...
BaLTais Posted April 29, 2010 Author Report Share Posted April 29, 2010 (edited) atvaino , bet man tas ir next level vēl tikai un tik vienkārši neizprotu šo kodu.. :) Paskatījos googlē - jāpatrenējas ar dažādiem piemēriem, bet nu to pēc tam. -Kurā momentā šeit mainās klase (tiek izcelts attiecīgais title), kad atvērta ir attiecīgi, teiksim, ..index?id=2 sadaļa , bet pārējiem paliek default stils (t.i. - nav)? P.S. Ceru ka izsakos pietiekoši korekti, jo nu jau visa nakts ir pavadīta buroties pa php un visādām googles saitēm - galva vairs nava īsti skaidra... Edited April 29, 2010 by BaLTais Quote Link to comment Share on other sites More sharing options...
ABU Posted April 29, 2010 Report Share Posted April 29, 2010 briedis, Tu esi kļūdiejies ar koda rakstīšanu, jo nav <ul> atvēršanas taga un pēdējam elementam nav </li> slēgšanas taga. vajadzētu sādā redakcijā: <?php $result = mysql_query("SELECT title,id FROM settings"); $sel_id = isset($_GET['id']) ? (int)$_GET['id'] : 0; //izvēlētais id $html_list = "<ul>"; //te glabāsies sarkasts while($myrow = mysql_fetch_assoc($result)){ $html_list .= " <li" . ($sel_id === $myrow["id"] ? " class=\"selected\"" : "") . "> <a href='index.php?id={$myrow["id"]}'>{$myrow["title"]}</a> </li> "; } //tur kur vajag, izvadam echo "<li class=\"nav\">$html_list</li>"; echo "</ul>"; ?> BaLTais, lai šiem rakstiem mainītos skats, tad ir jāzmanto CSS. Vienkāršakais variants ir šāds: li { display:inline; border:1px solid #000; background-color: #D0D0D0; } li:hover { border:1px solid #000; background-color: lightyellow; } li.selected { border:1px solid #000; background-color: red; } ul { display:inline; } Tad šie raksti smuki stavēs vienā rindā. Uzbraucot ar peli uz kāda raksta, tas mainīs krāsu. Izvēlētajam rakstam uzreiz būs cita krāsa. Varbūt ir vērts sākt ar pašiem pamatiem un izlasīt kādu gramatu par šo tēmu? Zvaigznei pat ir grāmata par šo tēmu - Tīmekļa lapu veidošana. HTML un CSS. Tur arī smuki viss ir par CSS aprakstīts, pat ar piemēriem. Un galvenais, latviski. Quote Link to comment Share on other sites More sharing options...
Grey_Wolf Posted April 29, 2010 Report Share Posted April 29, 2010 mysql_fetch_array vietā var lietot mysql_fetch_assoc, lai nedublējas dati masīvā, kurus tāpat neizmanto... Par sho, gan PHP gan Mysql atrdarbiibas zinja ieguvums ir ljoti tuvinaats Nullei, faktiski netverams pat pie lieliem datu apjomiem.Bet no logjikas viedoklja, jaa piekriitu. P.S. Tiiri teoretiski jau atrdarbiiba palielinas, jo nav jaizpilda papildus datu masiivs... Quote Link to comment Share on other sites More sharing options...
briedis Posted April 29, 2010 Report Share Posted April 29, 2010 (edited) ABU, es kļūdījos tikai vietā, kur pie echo beigās uzrakstīju echo "<li class=\"nav\">.., nevis echo "<ul class=\"nav\">, tīri aiz neuzmanības... Grey_Wolf, jā, nu es neteicu, ka būs mega ieguvums, bet kaut vai debugošanas ziņā - print_r($row), stulbi izskatās, kad viss dublējas :)) Baltais, es tur izmantoju ternary operatoru, jeb, inline IF'u. Piemērs: $var = true; if($var){ $a = 1; }else{ $a = 2; } //īsāk sanāk: $a = $var ? 1 : 2; // $a = (izteiksme) ? vērtība_ja_izpildās : vērtība_ja_Neizpildās; Te vairāk: http://php.net/manual/en/language.operators.comparison.php Edited April 29, 2010 by briedis Quote Link to comment Share on other sites More sharing options...
BaLTais Posted April 30, 2010 Author Report Share Posted April 30, 2010 to ABU: Paldies par izcilo ieteikumu izmest naudu Zvaigznē, bet nu tomēr tavs kods nestrādā! Quote Link to comment Share on other sites More sharing options...
ABU Posted April 30, 2010 Report Share Posted April 30, 2010 (edited) Pirms liku savu komentāru, pābaudīju HTML'u un tur viss strādā. Slinkums man tagad rakstīt iekš PHP visu izvadu, tāpēc ielieku pliku HTML kodu, kuru pats pēc tam varēsi apstrādāt un iekļaut iekš PHP kā tev pašam vajag. <html> <head> <style type="text/css"> li { display:inline; border:1px solid #000; background-color: #D0D0D0; } li:hover { border:1px solid #000; background-color: lightyellow; } li.selected { border:1px solid #000; background-color: red; } ul { display:inline; } </style> </head> <body> <ul> <li ><a href='index.php?id='>aaaa</a></li> <li class="selected"><a href='index.php?id='>bbb</a></li> <li ><a href='index.php?id='>ccc</a></li> <li class="nav">$html_list</li> </ul> </body> </html> Papildinājums: to es pārbaudīju ar Opera pārlūku. Iespējams, ka ar citu pārlūku vajag savādāk apstrādāt CSS pazīmes. Edited April 30, 2010 by ABU Quote Link to comment Share on other sites More sharing options...
ABU Posted April 30, 2010 Report Share Posted April 30, 2010 Pārbaudīju uz Explorer'a - jā, tur šis gadījums nestrādā. Ja vajaga veidot menu stila sarakstu, tad man pašam labāk patīk izmantot tikai <a href>...</a> objektus, piemēram: <html> <head> <style type="text/css"> .nav { border:1px solid #000; background-color: #D0D0D0; } .nav:hover { border:1px solid #000; background-color: lightyellow; } .selected { border:1px solid #000; background-color: red; } </style> </head> <body> <a class="nav" href='index.php?id='>aaaa</a> <a class="nav selected" href='index.php?id='>bbb</a> <a class="nav" href='index.php?id='>ccc</a> <a class="nav" href='#'>$html_list</a> </body> </html> Tur vēl var spēlēties ar atsarpēm, lai attēlotos korekti - viens blakus otram. Vēl var visiem iekš <li> ielikt <a href>...</a> objektus un visu CSS apstrādi veikt ar šiem <a href> objektiem. Tad arī ar Explorer'u vajadzētu attēloties korekti. Quote Link to comment Share on other sites More sharing options...
briedis Posted April 30, 2010 Report Share Posted April 30, 2010 Es, kā teica ABU, arī liktu <a hrefu iekš li, un tad attiecīgi uzliktu display:block a tagad, un piekoriģētu visus vajadzīgos izmērus - width, paddingus, hover effektus utt. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.