2012-07-03 57 views
1

所有, 如果我去下面的数据库字段/值:基于MySQL的选择选项导致

 
user_id  field_name  field_value 
1   EventHour1  1 
1   EventMinute1 30 
1   EventAMPM1  am 
1   Event_1  Set Up 
1   EventHour2  5 
1   EventMinute2 30 
1   EventAMPM2  am 
1   Event_2  Take Down 

然后,我有以下的HTML/PHP:

<?php 
for($i=0;$i<50;$i++){ 
if ($i%2==0){ 
    echo '<tr bgcolor="#CCCCCC">'; 
} else { 
echo '<tr>'; 
} 
?> 
<td><select size="1" id="EventHour<?php echo $i; ?>" name="EventHour<?php echo $i; ?>" > 
    <option>1</option> 
    <option>2</option> 
    <option>3</option> 
    <option>4</option> 
    <option>5</option> 
    <option>6</option> 
    <option>7</option> 
    <option>8</option> 
    <option>9</option> 
    <option>10</option> 
    <option>11</option> 
    <option>12</option> 
    </select> : <select size="1" name="EventMinute<?php echo $i; ?>" id="EventMinute<?php echo $i; ?>" > 
    <option>00</option> 
    <option>05</option> 
    <option>10</option> 
    <option>15</option> 
    <option>20</option> 
    <option>25</option> 
    <option>30</option> 
    <option>35</option> 
    <option>40</option> 
    <option>45</option> 
    <option>50</option> 
    <option>55</option> 
    </select> 
    <select size="1" name="EventAMPM<?php echo $i; ?>" id="EventAMPM<?php echo $i; ?>"> 
    <option>PM</option> 
    <option>AM</option> 
    </select></td> 
<td><b>&nbsp; 
    <select size="1" name="Event_<?php echo $i; ?>" id="Event_<?php echo $i; ?>" class="event_selection"> 
    <option>Select Event...</option> 
    <option value="Set Up">Set Up</option> 
    <option value="Take Down">Take Down</option> 

    </select> 
    </b></td> 
<td>&nbsp;Note: 
    <input type="text" name="Note<?php echo $i; ?>" id="Note<?php echo $i; ?>"> 
    </td> 
</tr> 
<?php 
} 
?> 

我”什么d喜欢做的是根据数据库结果设置选择值。因此,如果选择ID是EventHour1,那么我想让select选项为1,如果是Event_2,那么我希望选择选项为Take Down。

我该如何解决这个问题?任何帮助将不胜感激!

在此先感谢

+0

你是否也从数据库加载你的选项,或者它们是否真的是硬编码的? – mellamokb

+0

@mellamokb截至目前,它们是硬编码的,但我可以最终从数据库中选择它们。 – user1048676

+0

我肯定会让他们在数据库或数组中。然后循环生成选项,如果该值与数据库中的当前值匹配,则使用下面显示的@ Mike的代码标记选定的代码。 – mellamokb

回答

1

下面是使用数组的基本思想。理想情况下,选项会从一个数据库,而不是被读取(在\t\n只是为了保持输出HTML格式干净当你查看源代码调试 - 你也可以使用<?php echo $i?>方法来输出,如果你喜欢):

$curVal = /* lookup curVal from database for event */ 
echo "<select size='1' id='EventHour$i' name='EventHour$i'>\n"; 
$options = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12); 
foreach ($options as $option) { 
    if ($curVal == $option) 
     $selected = " selected='selected'"; 
    else 
     $selected = ""; 
    echo "\t<option$selected>$option</option>\n"; 
} 
echo "</select>\n\n"; 

哪些应该呈现这样的事件2,例如:

<select size='1' id='EventHour2' name='EventHour2'> 
    <option>1</option> 
    <option>2</option> 
    <option>3</option> 
    <option>4</option> 
    <option selected='selected'>5</option> 
    <option>6</option> 
    <option>7</option> 
    <option>8</option> 
    <option>9</option> 
    <option>10</option> 
    <option>11</option> 
    <option>12</option> 
</select> 

演示:http://ideone.com/BoEfr


我也质疑你的数据库设计。如果您试图将事件存储在数据库中,我认为您将表示问题(字段ID等)与数据存储混淆了。你的数据库只需要采集的基础数据的语义,这是事件的细节:

event_id | user_id | event_name | hour | minute | am_pm 
1  | 1  | Set Up  | 1 | 30  | am 
2  | 1  | Take Down | 5 | 30  | am 

然后,当您显示的事件,你把介绍它以一种有意义的方式,即在一个表中的护理格式下拉或文本框输入数据。