湿度表を作成するPHPコード

これ http://hum.uah.jp/table.php のソース。



tatle.php

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<META name="GENERATOR" content="IBM WebSphere Studio Homepage Builder Version 12.0.1.0 for Windows">
<META http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<META http-equiv="Content-Style-Type" content="text/css">
<TITLE>乾湿計 => 湿度換算表出力 PHP版</TITLE>

<?php
function humid($dry,$dif,$atm,$wind,$freeze,$output)
{
    if ($freeze) {
        $a = 9.5;
        $b = 265.5;

        if ($wind) {
            $k = 0.44;    //  蒸気圧乗数
            $m = 755;     //  通風乗数
        } else {
            $k = 0.0007;
            $m = 1;
        }
    } else {
        $a = 7.5;
        $b = 237.3;

        if ($wind) {
            $k = 0.5;
            $m = 755;
        } else {
            $k = 0.0008;
            $m = 1;
        }
    }

    $t1 = $dry;
    $t2 = $dry - $dif;
    $p0 = $atm;

    $e_t1 = 6.11 * pow(10 , 7.5 * $t1 /(237.3 + $t1));  //  飽和水蒸気圧(t1℃,vs水)
    $e_t2 = 6.11 * pow(10 , $a  * $t2 /($b    + $t2));  //  飽和水蒸気圧(t2℃,vs水or氷)
    $e_now = $e_t2 - $k * $p0 * ($t1 - $t2) / $m;        //  現在の水蒸気圧

    $rh = $e_now / $e_t1 * 100.0;                       //  相対湿度

    if ($e_now == 6.11) { $t_dp = 0; }
      elseif ($e_now <= 0) {$t_dp = -273.15;}
      else { $t_dp = $b / (($a / log10($e_now / 6.11)) - 1); }    //  露点温度
    $h_abs_v = 216.7 * $e_now / (273.15 + $t1);              //  容積絶対湿度 [g/m^3]
    $h_abs_w = (18.015 * $e_now) / (29.064 * ($p0 - $e_now)) * 1000; //  重量絶対湿度 [g/kgDA]

    switch ($output) {
    case 0:
        $hu = $rh;
        break;
    case 1:
        $hu = $h_abs_v;
        break;
    case 2:
        $hu = $h_abs_w;
        break;
    case 3:
        $hu = $e_now;
        break;
    case 4:
        $hu = $t_dp;
        break;
    }
    return $hu;
}

    if (isset($_POST['mnu_degree'])) {
        $df = $_POST['mnu_diff'];
        $dg = (float) $_POST['mnu_degree'];
        $rdh = $_POST['rdo_humid'];
        $ckw = $_POST['chk_wind'];
        $ckf = $_POST['chk_freeze'];
        $tt0 = $_POST['txt_temp0'];
        $tt1 = $_POST['txt_temp1'];
        $atm = (float) $_POST['txt_p0'];
        $dt = $_POST['mnu_digit'];
        }
    else {
        $df = 7;
        $dg = 0.5;
        $rdh = 0;
        $ckw = false;
        $ckf = true;
        $tt0 = -20;
        $tt1 = 45;
        $atm = 1013.25;
        $dt = 0;
        }

    if ($tt1 < -30) { $tt0 = -30; }
    if ($tt1 > 100) { $tt1 = 100; }
    if ($tt0 < -30) { $tt0 = -30; }
    if ($tt0 > 100) { $tt0 = 100; }
    if ($tt0 > $tt1) { $tt1 = $tt0; }
    if (($tt1 - $tt0) / $dg >= 500) { $dg = 0.5; }
    if ($df / $dg >= 100) { $dg = 0.5; }

    if (($atm <= 300) or ($atm >= 10000)) { $atm = 1013.25; }

    $s_rdh = array("", "", "", "", "");
        $s_rdh[$rdh] = "checked ";
    if ($ckw) { $s_ckw = "checked "; } else { $s_ckw = ""; }
    if ($ckf) { $s_ckf = "checked "; } else { $s_ckf = ""; }
    $s_tt0 = sprintf("%1d" , htmlspecialchars($tt0));
    $s_tt1 = sprintf("%1d" , htmlspecialchars($tt1));
    $s_dg = array("0.1" =>"", "0.2" =>"", "0.5" =>"", "1.0" =>"", "2.0" => "");
        $s_dg[sprintf("%1.1f", $dg)] = "selected";
    $s_atm = sprintf("%1.2f" , htmlspecialchars($atm));
    $s_df = array(5 =>"", 7 =>"", 10 =>"", 15 =>"", 20 =>"");
        $s_df[$df] = "selected";
    $s_dt = array("", "", "", "");
        $s_dt[$dt] = "selected";

    $n_col = $df / $dg + 1;
    $color_a = array(0 => "#ffcccc", 1 => "#99ffcc");
    $color_b = array(0 => "#99ccff", 1 => "#cc99ff");
    $c = 0;
    $s_output = array("相対湿度", "容積絶対湿度", "重量絶対湿度", "水蒸気圧", "露点温度");
    $s_unit = array("", "g/&#13221;", "g/kgDA", "hPa", "");
    $limit = array(0, 0, 0, 0, -273.15);         // 各計算値の下限

?> 

</HEAD>
<BODY bgcolor="#ccccff">
<H1>乾湿計 => 湿度換算表</H1>
<p>
<font size="-1" color="#666699">
※ このページは、(通風・非通風)湿度表を計算して表示するツールです。</font><br>
</p>
<FORM action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<TABLE>
  <TBODY>
    <TR>
        <?php
            for ($i = 0; $i <= 4; $i++) {
                echo '<TD nowrap valign="top">';
                echo '<INPUT type="radio" '.$s_rdh[$i].'name="rdo_humid" value="'.$i.'"></TD>';
                echo '<TD valign="top">'.$s_output[$i];
                echo '<IMG src="img/Image2.gif" width="15" height="4" border="0">';
                echo '<BR>('.$s_unit[$i].')</TD>';
            }
        ?>
    </TR>
  </TBODY>
</TABLE>
<INPUT type="checkbox" name="chk_wind" <?php echo $s_ckw; ?>> 通風計用
<IMG src="img/Image2.gif" width="30" height="4" border="0">
<INPUT type="checkbox" name="chk_freeze"  <?php echo $s_ckf; ?>> 湿球凍結時の値も表示
<BR><br>
<INPUT size="8" type="text" maxlength="8" name="txt_temp0" value="<?php echo $s_tt0; ?>" style="text-align : right;">
℃〜
<INPUT size="8" type="text" maxlength="8" name="txt_temp1" value="<?php echo $s_tt1; ?>" style="text-align : right;"><IMG src="img/Image2.gif" width="30" height="4" border="0">
きざみ:
<SELECT name="mnu_degree" style="text-align : right;">
  <OPTION value="0.1" <?php echo $s_dg["0.1"]; ?>>0.1</OPTION>
  <OPTION value="0.2" <?php echo $s_dg["0.2"]; ?>>0.2</OPTION>
  <OPTION value="0.5" <?php echo $s_dg["0.5"]; ?>>0.5</OPTION>
  <OPTION value="1"   <?php echo $s_dg["1.0"]; ?>  >  1</OPTION>
  <OPTION value="2"   <?php echo $s_dg["2.0"]; ?>  >  2</OPTION>
</SELECT><IMG src="img/Image2.gif" width="30" height="4" border="0">大気圧:
<INPUT size="10" type="text" maxlength="10" name="txt_p0" value="<?php echo $s_atm; ?>" style="text-align : right;">
hPa <BR>
乾湿差:
<SELECT name="mnu_diff" style="text-align : right;">
  <OPTION value="5"  <?php echo $s_df[5]; ?> > 5</OPTION>
  <OPTION value="7"  <?php echo $s_df[7]; ?> > 7</OPTION>
  <OPTION value="10" <?php echo $s_df[10]; ?>>10</OPTION>
  <OPTION value="15" <?php echo $s_df[15]; ?>>15</OPTION>
  <OPTION value="20" <?php echo $s_df[20]; ?>>20</OPTION>
<!--  -->
</SELECT>℃まで表示<IMG src="img/Image2.gif" width="30" height="4" border="0">
小数点以下 
<SELECT name="mnu_digit" style="text-align : right;">
  <OPTION value="0" <?php echo $s_dt[0]; ?>>0</OPTION>
  <OPTION value="1" <?php echo $s_dt[1]; ?>>1</OPTION>
  <OPTION value="2" <?php echo $s_dt[2]; ?>>2</OPTION>
  <OPTION value="3" <?php echo $s_dt[3]; ?>>3</OPTION>
</SELECT>桁まで表示<BR>
<BR>
<INPUT type="submit" name="sub_" value="換算表の出力↓">
<br>
<font size="1" color="#cc0000">
<b>注意:</b>きざみ値を小さくし、温度範囲を広げると、表が必要以上に巨大になり処理時間もかかります。
<br><IMG src="img/Image2.gif" width="15" height="4" border="0">
(強制的にきざみ値が変更される場合は、温度範囲や乾湿差を減らして再試行してください。)</font>
</FORM>


<?php
    //echo '$df='.$df.' $dg='.$dg.'$atm='.$atm;
?>


<TABLE border="1" bgcolor="#ccccff" cellpadding="2">
  <TBODY>

        <?php
            echo '<TR><TH colspan="'.($n_col + 1 - 2).'" align="center">';
            echo '<font size="+2">'.$s_output[$rdh];
            echo '</font></TH>';

            echo '<TD colspan="2" align="center">';
            echo '<font size="-1">('.$s_unit[$rdh].')';
            echo '</font></TD>';

            echo '</TR>';
        ?>

    <TR>
      <TD align="center" rowspan="2" bgcolor="<?php echo $color_a[0]; ?>">乾球示度 ℃<BR>
      (DRY)</TD>
      <TD colspan="<?php echo $n_col; ?>" align="center" bgcolor="<?php echo $color_a[1]; ?>">
      乾湿差 ℃ (DRY-WET)</TD>
    </TR>

    <TR>
        <?php
            for ($i = 0; $i <= $df + .05; $i += $dg) {
                echo '<TD align="center" bgcolor="'.$color_a[1].'">';
                if ($dg >= 1) {
                    printf ("%2d", $i);
                    }
                else {
                    printf ("%2.1f", $i);
                    }
                echo '</TD>';
            }
        ?>
    </TR>

    <?php
        for ($i = $tt1; $i >= $tt0 - .05; $i -= $dg) {
            $c = 0;
            echo '<TR><TD align="center" bgcolor="'.$color_a[0].'">';
            if ($dg >= 1) {
                printf ("%2d", $i);
                }
            else {
                printf ("%2.1f", $i);
                }
            echo '</TD>';
            for ($j = 0; $j <= $df + .05; $j += $dg) {
                echo '<TD align="center" bgcolor="'.$color_b[$c].'">';
                $h = humid($i, $j, $atm, $ckw, false, $rdh);
                if ($h > $limit[$rdh]) {
                    switch ($dt) {
                        case 0:
                            printf ("%1.0f", $h);
                            break;
                        case 1:
                            printf ("%1.1f", $h);
                            break;
                        case 2:
                            printf ("%1.2f", $h);
                            break;
                        case 3:
                            printf ("%1.3f", $h);
                            break;
                        }
                    }
                else {
                    echo '--';
                    }
                $c = 1 - $c;
                if (($ckf) and ($i <= 0)) {
                    $h = humid($i, $j, $atm, $ckw, true, $rdh);
                    echo '<BR><font color="#cc0000">(';
                    if ($h > $limit[$rdh]) {
                        switch ($dt) {
                            case 0:
                                printf ("%1.0f", $h);
                                break;
                            case 1:
                                printf ("%1.1f", $h);
                                break;
                            case 2:
                                printf ("%1.2f", $h);
                                break;
                            case 3:
                                printf ("%1.3f", $h);
                                break;
                            }
                        }
                    else {
                        echo '--';
                        }
                    echo ')</font>';
                    }
                echo '</TD>';
            }
            echo '</TR>';
        }
    ?>

    <TR>
      <TD colspan="<?php echo $n_col + 1; ?>" align="right">
        <?php
            if ($ckw) {
                echo '<b>通風計用</b>';
                echo '<IMG src="img/Image2.gif" width="20" height="4" border="0">';
                }
            echo '単位:'.$s_unit[$rdh];
            if (($atm < 1010) or ($atm > 1016)) {
                echo '<IMG src="img/Image2.gif" width="20" height="4" border="0">';
                echo '<b>大気圧:'.$atm.'hPa</b>';
                }
            if (($tt0 <= 0) and ($ckf)) {
                echo '<IMG src="img/Image2.gif" width="20" height="4" border="0">';
                echo '<font color="#cc0000">湿球凍結時:(括弧内)</font>';
                }
        ?>
      </TD>
    </TR>
    <TR>
      <TD colspan="<?php echo $n_col + 1; ?>" align="right">http://hum.uah.jp/table.php</TD>
    </TR>
  </TBODY>
</TABLE>

<P>
<IMG src="BBY_icn4.gif" width="32" height="32" border="0"> 
<A href="http://d.hatena.ne.jp/owl/19760704">熾火研究所</A>謹製 v1.0/2008/01/01<br>
</P>

</BODY>
</HTML>


データベース使ってないからいろいろと酷い









おまけ


「さかさまにするよ!」( http://hum.uah.jp/r.php )の PHP ソース

r.php

<?php echo '<?xml version="1.0" encoding="utf-8"?>' . "\n"; ?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<META name="GENERATOR" content="Mery 1.0.2.1671 for Windows">
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<META http-equiv="Content-Style-Type" content="text/css">
<TITLE>さかさまにするよ!</TITLE>
</HEAD>
<BODY bgcolor="#eeffcc">
<P><b>さかさまにするよ</b> <font color="#cc3399">PHP版</font><BR>

<?php

function mb_strrev($str,$encoding)
// Special TNX to http://ja.doukaku.org/comment/2970/
{
    return mb_convert_encoding(strrev(mb_convert_encoding($str,"UTF-16BE",$encoding)),$encoding,"UTF-16LE");
}

    $st = "(゚ー゚ )さかさま";

    if (($t == "")||($t != $st)) {
        $t = $_POST['t_org'];
    }

    if (($t == "")||($t == $st)) {
        $t = $_GET['t'];

        $t = mb_convert_encoding(rawurldecode($t), "UTF-8");
    }

    if ($t == "")  {
        $t = $st;
    }


    $yt = htmlspecialchars(mb_strrev($t, "UTF-8"));
    $xt = htmlspecialchars($t);

    

?>

<FORM action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post" accept-charset="UTF-8">
<INPUT size="25" type="text" name="t_org" tabindex="1" value="<?php echo $xt; ?>"><BR>
<INPUT type="submit" accesskey="#" tabindex="3" name="btn_calc" value=" SUBMIT "><BR> 
<INPUT size="25" type="text" name="T_rev" tabindex="2" value="<?php echo $yt; ?>"><BR>
</FORM>

<p>
<font size="2">
OkibiWorksLabo 謹製 2011/04/17<br><br>
<a href="http://hum.uah.jp/r.php"><img src="qr_www_uah_jp_r_php.png" alt="QR Code"></a><br>
携帯でもOK</font>
</p>
</BODY>
</HTML>