Jackal Posted June 6, 2006 Report Share Posted June 6, 2006 Gribu uztaisīt select, bet ir vajadzīgi ļoti daudz optioni, kuros mainās tikai skaitļi, varūt ir kāds ātrāks veids, jo savādāk ir baigi daudz jāraksta, varbūt var kaut kā ar php, ja var, tad kā? Nu tjip domāju šito select: <select name='aaa'> <option value='1'>1 <option value='2'>2 <option value='3'>3 Un vēl kā varētu pielikt klāt checked tai opcijāi, kura tiek izvilkta no datubāzes? Nu piemēram, ja no datubāzes izvelk 2, tad pie otrā optiona pieliek checked. šitam gan biju izdomājis risinājumu, bet tas neder, ja ir vairāk par 2 optioniem un gan jau ir kāds saprātīgāks risinājums <select name='aaa'> <option value='1'>1 <option value='2' checked>2 <option value='3'>3 Link to comment Share on other sites More sharing options...
KAC Posted June 6, 2006 Report Share Posted June 6, 2006 to sauc par programmeeshanu Link to comment Share on other sites More sharing options...
Robis Posted June 6, 2006 Report Share Posted June 6, 2006 // dabū attiecīgo esošo id un piešķir to $id while ($row = mysql_fetch_array($result)) { if ($id==$row['id']) { echo '<option value="'.$row['id'].'" checked="checked">'.$row['id'].'</option>'; } else { echo '<option value="'.$row['id'].'">'.$row['id'].'</option>'; } } Link to comment Share on other sites More sharing options...
v3rb0 Posted June 6, 2006 Report Share Posted June 6, 2006 while ($row = mysql_fetch_array($result)) echo '<option value="'.$row['id'].'"'.($id==$row['id']?' checked="checked"':'').'>'.$row['id'].'</option>'; Link to comment Share on other sites More sharing options...
Robis Posted June 6, 2006 Report Share Posted June 6, 2006 while ($row = mysql_fetch_array($result)) echo '<option value="'.$row['id'].'"'.($id==$row['id']?' checked="checked"':'').'>'.$row['id'].'</option>'; Slikts programmēšanas stils. :) Link to comment Share on other sites More sharing options...
v3rb0 Posted June 6, 2006 Report Share Posted June 6, 2006 tik pat subjektīvi saku ka slikts stils ir divās vietās rakstīt echo '<option>' tik tāpēc ka vienam optionam klāt nāca propertijs ka šis ieselektēts. Link to comment Share on other sites More sharing options...
bubu Posted June 6, 2006 Report Share Posted June 6, 2006 Nu nez nez, es tieši par Robja kodu teiktu, kas likts stils. Tieši tāda paša iemesla dēļ - <option> divās vietās jāraksta. A ja nu kautkas jāpielike klāt? Tip class="xxx"? Divās vietās jāliek. Es rakstītu tā kā v3rb0 raksta. Īsi uzrakstās un ātri izlasās, lai saprastu kas tur notiek. Kas tieši tur ir slikts? Link to comment Share on other sites More sharing options...
Robis Posted June 6, 2006 Report Share Posted June 6, 2006 (edited) Slikti, jo grūtāk lasāms! Lasāmība ir svarīga kodiem, jo tos parasti mēdz izmantot vairāk kā 1 cilvēks... Varētu uzlabot šādi: while ($row = mysql_fetch_array($result)) { echo '<option value="'.$row['id'].'"'; if ($id==$row['id']) { echo ' checked="checked"'; } echo '>'.$row['id'].'</option>'; } Es protams to domāju ar to, ka nav redzami skaidri kontroles bloki - nosacījuma un cikla. Edited June 6, 2006 by Robis Link to comment Share on other sites More sharing options...
bubu Posted June 6, 2006 Report Share Posted June 6, 2006 Nu šis variants ir pieņemāks par sākotnējo. Taču vienalga - es par ternāro operatoru! (žēl, ka pitonā tāda nav..) Link to comment Share on other sites More sharing options...
v3rb0 Posted June 6, 2006 Report Share Posted June 6, 2006 piekrītu par lasāmību, bet dropdowns ir triviāla lieta, un tur tie citi kas lasīs tāpat neko interesantu neieraudzīs. pirncipā redzot vārdu option, ciklu un select taga name/id atribūtu viss par dropdownu ir skaidrs.(pieņemot ka dropdownu mākam bez kļūdām html'ā uztaisīt) likt visas iekavas, rakstīt komentārus, likt tukšas rindas vajag vietās kur tas nerada informācijas troksni un palīdz saprast kas tur notiek. pie echo $a; tak neraksti komentāru ka ar echo tu izvadi mainīgā $a vērtību un linku uz textu ar paskaidrojumiem kas ir termins 'mainīgais' + paskaidrojumu ka php komandu beidz ar ';', to var rakstīt rindas beigā vai jaunā rindā, šinī gadījumā tu izvēlējies rakstīt tajā pašā rindā kurā ir echo $a; :) Link to comment Share on other sites More sharing options...
Robis Posted June 6, 2006 Report Share Posted June 6, 2006 Jā, šai gadījumā varētu arī piekrist, jo tā ir triviāla lieta tas drop down un ļoti vienkāršs nosacījums. Bet pamatā citos gadījumos vajadzētu likt sakarīgi blokos. Lasāmība ievērojami uzlabojas. Pie šī gadījuma - pie while gan vajadzēja izmantot figūriekavas, lai redzams ir bloks {} Link to comment Share on other sites More sharing options...
john.brown Posted June 6, 2006 Report Share Posted June 6, 2006 Nu tad es ar savu artavu šinī dziļi zinātniskajā disputā ienesīšu :) while($row = mysql_fetch_array($result)) { $selected = ($row['id'] == $id)? 'selected':''; echo '<option value="'.$row['id'].'" '.$selected.'>'.$row['id'].'</option>'; } Gan bloks ir, gan ternārais operātors ;) Link to comment Share on other sites More sharing options...
Recommended Posts