1

すべて、次のデータベースフィールド/値を使用した場合:

user_id field_name field_value
1 EventHour1 1
1 EventMinute1 30
1 EventAMPM1 am
1Event_1セットアップ
1 EventHour2 5
1 EventMinute2 30
1 EventAMPM2 am
1Event_2テイクダウン

次に、次の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
}
?>

私がやりたいのは、データベースの結果に基づいて選択値を設定することです。したがって、選択IDがEventHour1の場合、選択オプションを1にし、Event_2の場合、選択オプションを削除します。

PHPでこれを行うにはどうすればよいですか?どんな助けでも大歓迎です!

前もって感謝します

4

1 に答える 1

1

配列を使用する基本的な考え方は次のとおりです。理想的には、オプションは代わりにデータベースから読み取られます(デバッグするソースを表示する必要がある場合は、出力HTML形式をクリーンに保つためだけです。必要に応じてメソッドを使用して出力することもでき\tます)。\n<?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

次に、イベントを表示するときに、意味のある方法で、つまり、データ入力用のドロップダウンまたはテキストボックスを備えたテーブル形式でイベントを表示するように注意します。

于 2012-07-03T22:01:38.573 に答える