根据mySQL结果选择Option

时间:2012-07-03 21:38:47

标签: php 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
}
?>

我想要做的是根据数据库结果设置选择值。因此,如果select id是EventHour1,那么我想将select选项设为1,如果它是Event_2,那么我希望select选项为Take Down。

如何使用PHP进行此操作?任何帮助将不胜感激!

提前致谢

1 个答案:

答案 0 :(得分: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

然后,当您显示事件时,您需要以有意义的方式呈现它,即以带有下拉列表或文本框的表格格式进行数据输入。