2012-07-03 112 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 

然後,當您顯示的事件,你把介紹它以一種有意義的方式,即在一個表中的護理格式下拉或文本框輸入數據。