0

毎年更新されるフォームがあるので、ユーザーが日付やその他の情報を入力してから、データベースに保存されるフォームを送信します。彼らが1年後に戻ってきたとき、彼らは古い記録を上書きするために同じことをします、問題は彼らが戻ったときに古い日付がエコーされているということです、それは起こらないはずです。他のすべてのフィールドは空白であり、発生するはずです。コードにエコーされる日付を要求していませんが、それでもエコーされます。

日付プルダウンを定義するためのコード

// parameters: $fname - main name of field
//             $date - actual date value from database
//             $beginYear - first value in year list
//             $endYear - last value in year list
//     return: none
function make_date_pulldown($fname, $date, $beginYear, $endYear)
{
  // read the date and break it up into $Year, $Month and $Day
  // so that we can set the "SELECTED" in the option list
  if ($date == ""){
    // set some default values to be safe
$Year = 0;
$Month = 0;
$Day = 0;
} else {
$Year = (int) substr($date,0,4);
$Month = (int) substr($date,5,2);
$Day = (int) substr($date,8,2);
}

// need to build a table around these guys so that there won't
// be any word wrap... it's going to be a 1 row by 5 cols.
echo "<table border=0 cellspacing=0 cellpadding=0>\n";
echo "<tr>\n";

// build month list
echo "  <td><font class=bluetext face=verdana,arial size=-2>\n";
echo "  <center>Month<br>\n";
echo "<select name='month_$fname'>\n";
echo "  <option value='00'></option>\n";
for ($i=1;$i<=12;$i++){
printf ("  <option value='%02d'",$i);
if ($i == $Month) {
  printf (" SELECTED");
}
printf (">%02d</option>\n",$i);
}
echo "</select>\n";
echo "  </center>\n";
echo "  </td>\n";

echo "  <td><font class=bluetext face=verdana,arial size=-2>\n";
echo "/";
echo "  </td>\n";

// build day list
echo "  <td><font class=bluetext face=verdana,arial size=-2>\n";
echo "  <center>Day<br>\n";
echo "<select name='day_$fname'>\n";
echo "  <option value='00'></option>\n";
for ($i=1;$i<=31;$i++){
printf ("  <option value='%02d'",$i);
if ($i == $Day) {
  printf (" SELECTED");
}
printf (">%02d</option>\n",$i);
}
echo "</select>\n";
echo "  </center>\n";
echo "  </td>\n";

echo "  <td><font class=bluetext face=verdana,arial size=-2>\n";
echo "/";
echo "  </td>\n";

// build year list
echo "  <td><font class=bluetext face=verdana,arial size=-2>\n";
echo "  <center>Year<br>\n";
echo "<select name='year_$fname'>\n";
echo "  <option value='0000'></option>\n";
for ($i=$beginYear;$i<=$endYear;$i++){
printf ("  <option value='%d'",$i);
if ($i == $Year) {
  printf (" SELECTED");
}
printf (">%d</option>\n",$i);
}
echo "</select>\n";
echo "  </center>\n";
echo "  </td>\n";

echo "</tr>\n";
echo "</table>\n";
}

WebサイトのPHPフォームのコード

<u>Date Of Submittal</u><br>
<?php
$startYear  =   date("Y")-1;
$endYear    =   date("Y")+1;
make_date_pulldown("submitdate", $submitdate, $startYear, $endYear);
?>
4

2 に答える 2

0

データベース テーブルを呼び出す get_() 関数で、submitdate の行を読み取っていて、そのコマンドと make_date_pulldown の関数に基づいて日付を取得して表示していました。

その関数は次のようになります (明らかにトリミングされています)。

<?
function get_submit($id, &$submitdate)
{                                                             
$query = "select * from submit where id = $id";
$result = mysql_query($query);                              
if ($result) {                                              
$total_rows = mysql_numrows($result);                     
} else { $total_rows = 0; }                                 
if ($total_rows > 0) {                                      
$submitdate = trim(mysql_result($result, "", "submitdate"));
} else {
$submitdate = "";
$found = 1;
}            
}              
?>             
于 2012-10-30T20:33:05.000 に答える
0

年に基づいてドロップダウンメニューを作成したいようです....

$date = new DateTime();

//Years
echo makeSelect($date->format("Y")-1, $date->format("Y")+1,$date->format("Y"));

//Month
echo makeSelect(1, 12,$date->format("m"));

//Day
echo makeSelect(1, $date->format("t"),$date->format("d"));

使用する機能

function makeSelect($start, $end, $default = null) {
    $content = "<select>";
    $range = range($start, $end);
    $selected = "";
    foreach ( $range as $value ) {
        $selected = ($default == $value) ? "selected" : null;
        $content .= sprintf('<option value="%s" %s>%1$s</option>', $value, $selected);
    }
    $content .= "</select>";
    return $content;
}
于 2012-10-30T16:24:29.317 に答える