TOP ▲ itcore TOPTIPStool_common.php  タグ:tool php ソース

tool 共通 | itcore 2021年

テーブル 環境インクルード 共通インクルード

テーブル

CREATE TABLE `t01_object` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID',
  `type` varchar(100) NOT NULL COMMENT '種類',
  `object` varchar(300) DEFAULT NULL COMMENT 'オブジェクト',
  `name` varchar(300) DEFAULT NULL COMMENT '名前',
  `description` longtext COMMENT '説明',
  `parm1` varchar(300) DEFAULT NULL COMMENT 'パラメタ1',
  `parm2` varchar(300) DEFAULT NULL COMMENT 'パラメタ2',
  `parm3` varchar(300) DEFAULT NULL COMMENT 'パラメタ3',
  `list1` longtext COMMENT 'リスト1',
  `list2` longtext COMMENT 'リスト2',
  `list3` longtext COMMENT 'リスト3',
  `memo` longtext COMMENT '備考',
  `json` longtext COMMENT 'jsonデータ',
  `version` bigint(20) NOT NULL DEFAULT '0' COMMENT 'バージョン',
  `update_dt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最終更新日時',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='オブジェクト';

環境インクルード

<?php
//---------------------------------------------------
// 環境依存ファイル .env.php
//---------------------------------------------------
// DB
$env_db_host = "localhost";
$env_db_user = "xxx";
$env_db_pass = "xxx";
$env_db_db = "xxx";
$env_db_port = "3306";
?>

共通インクルード

<?php
//--------------------------------------
// 共通インクルード inc_common.php
//--------------------------------------
// 初期設定
function uInit()
{
  error_reporting(E_ALL);
  ini_set("display_errors", 1); // エラーを画面に出す。
  session_start();
  // 「フォーム再送信の確認」が出ないようにする。
  header("Expires:-1");
  header("Cache-Control:");
  header("Pragma:");
  date_default_timezone_set("Asia/Tokyo");
  $datetime1 = date("Y-m-d H:i:s"); // 日時 2021-03-05 15:13:57
  $datetime2 = date("Ymd_His"); // 日時 20210110_120801
  $self = basename($_SERVER["PHP_SELF"]); // 自分のプログラム名
  $today = date("Ymd"); // 日 20210110   $menu = "<div>";
  $menu .= "■<a href=.>index</a>";
  $menu .= "■<a href=memo.php>メモ情報</a>";
  $menu .= "■<a href=git.php>git&file情報</a>";
  $menu .= "■<a href=log.php>ログ確認</a>";
  $menu .= "</div>";
  return [$datetime1, $datetime2, $self, $menu, $today];
}
// $style = uStyle(); CSS
function uStyle()
{
  $s1 = <<<EOT
    <!-- Bootstrap CSS -->
    <link
      rel="stylesheet"
      href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css"
      integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T"
      crossorigin="anonymous"
    />
<style>
body {
  padding: 10px;
}
h1 {
  background-color: darkslategray;
  color: white;
  margin: 10px 0;
  padding: 10px;
  border-radius: 10px;
}
h2 {
  background-color: darkgreen;
  color: white;
  margin: 10px 0;
  padding: 10px;
  border-radius: 10px;
}
h3 {
  background-color: palegreen;
  color: black;
  margin: 10px 0;
  padding: 10px;
  border-radius: 10px;
}
table {
 margin: 10px 0;
}
td {
  padding: 5px;
}
</style>
EOT;
  return $s1;
}
// FORM変数取得
function uForm($var, $default = "")
{
  if (isset($_POST[$var])) {
    return $_POST[$var];
  }
  if (isset($_GET[$var])) {
    return $_GET[$var];
  }
  return $default;
}
// フォーム変数取得 mysqlエスケープ trim()
function uFormEscape($var)
{
  global $link;
  $v1 = trim(uForm($var));
  return mysqli_real_escape_string($link, $v1);
}
// フォーム変数取得 セッション変数保存
function uFormKensaku($var, $default = "")
{
  if ("" != uForm("sub_kensaku")) {
    // 検索が実行された場合はその値を有効にしてセッション変数にセットする。
    $value = uForm($var, $default);
    if (!is_array($value)) {
      $value = trim($value);
    } // 配列でなければtrimする。
    $value = uSessionSet($var, $value);
  } else {
    // 検索以外の時はセッション変数から値を取得する。
    $value = uSession($var, $default);
  }
  return $value;
}
// ディレクトリ配下のファイル名を配列に入れる。.と..は除く。
function uOpendirArrayGet($dir)
{
  $a_fname = [];
  $dh = opendir($dir);
  if (false === $dh) {
    echo "オープン出来ません。dir=$dir<br>\n";
    return $a_fname;
  }
  while (false !== ($fname = readdir($dh))) {
    if ("." == $fname) {
      continue;
    } // 対象外
    if (".." == $fname) {
      continue;
    } // 対象外
    $a_fname[] = $fname;
  }
  closedir($dh);
  sort($a_fname);
  return $a_fname;
}
// linkタグを作成する
function uLink($link, $len = 0)
{
  if ("" == $link) {
    return "";
  }
  $s1 = $link;
  if (0 < $len && strlen($s1) > $len) {
    $s1 = substr($s1, 0, $len) . "...";
  }
  return "<a target=_blank href=$link>$s1</a>";
}
// HTMLエスケープ
function uTd($data)
{
  return nl2br(htmlspecialchars($data));
}
// html表示
function uTd_pre($data, $title = "")
{
  if ("リンク" == $title) {
    return uLink($data);
  } else {
    return uHtmlPre($data);
  }
}
// html表示 \nで改行しない
function uTd_line($data, $title = "")
{
  if ("リンク" == $title) {
    return uLink($data, 30);
  } else {
    return htmlspecialchars($data);
  }
}
// HTMLの半角空白を&nbsp;に変換して固定幅フォントにする。
function uHtmlPre($html)
{
  $html = htmlspecialchars($html);
  $html = str_replace(" ", "&nbsp;", $html);
  //$html = "<tt>$html</tt>";
  //$html = "<font size=+1>$html</font>";
  $html = nl2br($html);
  return $html;
}
// session_start 「フォーム再送信の確認」を表示させない。
function uSession_start()
{
  session_start();
  header("Expires:-1");
  header("Cache-Control:");
  header("Pragma:");
}
// セッション変数をセットする。
function uSessionSet($var, $value)
{
  $_SESSION[$var] = $value;
  return $value;
}
// セッション変数の受取。存在しない時は空文字を返す。
function uSession($var, $default = "")
{
  if (isset($_SESSION[$var])) {
    return $_SESSION[$var];
  }
  return $default;
}
//行末の改行コードを取り除く。CRLF LF CR
function uChomp($line)
{
  $cr = chr(13);
  $lf = chr(10);
  $s2 = substr($line, -2);
  $s1 = substr($line, -1);
  if ("$cr$lf" == $s2) {
    return substr($line, 0, strlen($line) - 2);
  }
  if ($lf == $s1) {
    return substr($line, 0, strlen($line) - 1);
  }
  if ($cr == $s1) {
    return substr($line, 0, strlen($line) - 1);
  }
  return $line;
}
// $varが存在しないときは空文字を返す。$request->xxxにも使える。
// $requestは特殊なオブジェクトのようだ。property_exists()が使えない。
function uGet($var, $default = "")
{
  if (!isset($var)) {
    return $default;
  }
  if (null === $var) {
    return $default;
  }
  return $var;
}
// 最後が/ならとる。
function uDir($dir)
{
  if ("/" == substr($dir, -1)) {
    return substr($dir, 0, strlen($dir) - 1);
  }
  return $dir;
}
// DB接続
function uDbConnect($host, $user, $pass, $db, $port)
{
  $link = new mysqli($host, $user, $pass, $db, $port);
  $errno = mysqli_connect_errno();
  if (0 != $errno) {
    echo "ERROR27 errno=$errno error=" . mysqli_connect_error() . "<br>\n";
    exit();
  }
  mysqli_query($link, "SET NAMES utf8");
  //echo "debug23 host_info=".mysqli_get_host_info($link)."<br>\n";
  return $link;
}
// エラーあり mysqli_query
function u_mysqli_query($sql)
{
  global $chk_debug_sql, $link, $html_debug;
  $result = mysqli_query($link, $sql);
  if ($chk_debug_sql) {
    $html_debug .= "<font color=blue>debug652 $sql</font><br>\n";
  }
  if (false === $result) {
    echo "ERROR mysqli_query " . mysqli_error($link) . " sql=$sql<br>\n";
  }
  return $result;
}
// 1件検索■なければエラー エラーにしない:$p1="not_found_ok"
function uQueryOne($sql, $p1 = "")
{
  global $link;
  $result = u_mysqli_query($sql);
  $obj = mysqli_fetch_object($result);
  if (!$obj && "not_found_ok" != $p1) {
    uErrExit("ERROR uQueryOne データが見つかりません。sql=$sql<");
  }
  return $obj;
}
// $object = hs_object_new($link, "todo"); // 新規オブジェクト名 自動発番
function hs_object_new($link, $prefix)
{
  $s1 = $s2 = "";
  if ("" != $prefix) {
    $s2 .= "$prefix-";
  }
  $today = date("Ymd"); // 日 20210115
  $s2 .= "$today-";
  $sql = "select * from t01_object where object like '$s2%' order by object desc limit 1";
  $obj = uQueryOne($sql, "not_found_ok");
  if (!$obj) {
    $s1 = "$prefix-$today-001"; // 存在しない場合
    return $s1;
  }
  $object = $obj->object;
  //$object = "test";
  $ar = explode("-", "$object");
  $num = array_pop($ar); // 最後の要素を取り出す。
  //$num = $ar[count($ar) - 1];
  //echo "debug33 count=". count($ar) ." num=$num<br>\n";
  if (!is_numeric($num)) {
    $s1 = "$object-001"; // 最後が数字ではない場合
    return $s1;
  }
  $num++;
  if (3 > strlen($num)) {
    $num = substr("000$num", -3);
  }
  $s1 = implode("-", $ar) . "-$num";
  return $s1;
}
// フォーム変数などのデバッグ出力
function u_debug_echo()
{
  $chk_debug_sql = true;
  echo "<font color=blue>\n";
  foreach ($_POST as $key => $value) {
    echo "u_debug_echo $key=";
    if (is_array($value)) {
      echo print_r($value, true) . "<br>\n";
    } else {
      echo "$value<br>\n";
    }
  }
  foreach ($_GET as $key => $value) {
    echo "debug16 $key=$value<br>\n";
  }
  if ($_FILES) {
    echo "debug30 _FILES=\n" . print_r($_FILES, true) . "<br>\n";
  }
  echo "</font><br>\n";
}

?>