Jump to content
php.lv forumi

Select


Jackal

Recommended Posts

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

// 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

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

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 by Robis
Link to comment
Share on other sites

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

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

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

×
×
  • Create New...