BreathTake/ホームページ作成の小技・PHPの小技篇

*
ホームページ作成の小技タイトル・PHPの小技篇・イメージ写真
PHP-その他のポイント

PHP豆知識

変数の値を取得

拡張子PHPのファイルの中で、HTML文書を書いていて変数を取得する場合に使います
   <?= $変数名 ?>
   <?PHP
     echo $変数名;
   ?>
と同じ意味になります

数値を三桁区切りで表示

$price=9999999999999
$price = number_format($price);
echo $price;

■実行結果…9,999,999,999,999

ディレクトリ作成

##ディレクトリの位置指定
   $dir = "../$変数";
##ディレクトリの作成
   $rc = mkdir($dir,0777);
##メッセージ
   if ($rc) {
      echo $dir."に、ディレクトリを作成しました";
   }else{
      echo $dir."に、ディレクトリを作成しようとして失敗しました";

テスト表示

   print_r( $配列名 );

フォーム入力で自身に戻る設定

<?=$_SERVER["PHP_SELF"]?>

一行メモ

■$a <= $b より少ないか等しい $a が $b より少ないか等しい時に TRUE。
■$a >= $b より多いか等しい $a が $b より多いか等しい時に TRUE。
##改行文字の前に HTML の改行タグを挿入する
nl2br
##インクルードファイル 文字コード変換
function _mbc_se($_val){
  $_val= mb_convert_encoding($_val,"SJIS","EUC-JP");
  return($_val);
}
function _mbc_es($_val){
  $_val= mb_convert_encoding($_val,"EUC-JP","SJIS");
  return($_val); }
##JISコードをEUC_JPに変換
$message = mb_convert_encoding($message, "JIS", "EUC-JP");
##変数の型変換
settype($SQL_PrimaryID, "string");
##HTML構文文字を置換
   htmlspecialchars()関数
   …< → <
   …> → >
   …& → &
   …" → "
## \\を除去
   stripslashes()関数
   strip_tags()関数
   …タグを取り除く
##SQLに含まれるとエラーになる文字を加工
   mysql_escape_string関数
   addslashes()関数
   …'→\'
##処理の繰り返し
for ( $i = 1; $i <= 5 ; $i ++) {
   処理条件
   break;
}
while ($i <= 5 ) {
  処理条件
  $i++;
  break;
}
#イメージの送信ボタン
<input type = "image" src="image.jpg" align="bottom" alt="登録・修正">
##■PHPをCGIとして動かす
下記ファイルを.htaccessで保存
<files upload.php>
AddHandler application/x-httpd-phpcgi .php
</files>

時刻の設定

##****************************************************************************
//現在の「年月日」を取得
##****************************************************************************
$date_today = date("Y-m-d");
##****************************************************************************
//今日
   $today00= date("Y-m-d",strtotime("0 year",strtotime($date_today)));
//今月の開始日
   $firstday00= date("Y-m-01", strtotime("0 year",strtotime($date_today)));
//今月の終了日
   $lastday00= date("Y-m-t", strtotime("0 year",strtotime($date_today)));
##****************************************************************************
//一年前の今日
   $today01= date("Y-m-d",strtotime("-1 year",strtotime($date_today)));
//一年前の今月の開始日
   $firstday01= date("Y-m-01", strtotime("-1 year",strtotime($date_today)));
//一年前の今月の終了日
   $lastday01= date("Y-m-t", strtotime("-1 year",strtotime($date_today)));
##****************************************************************************
//二年前の今日
   $today02= date("Y-m-d",strtotime("-2 year",strtotime($date_today)));
//二年前の今月の開始日
   $firstday02= date("Y-m-01", strtotime("-2 year",strtotime($date_today)));
//二年前の今月の終了日
   $lastday02= date("Y-m-t", strtotime("-2 year",strtotime($date_today)));

年号取得のアルゴリズム


<?php
##****************************************************************************
//日付関数の設定
##****************************************************************************
//現在の「年月」を取得
$now_year = date("Y");
//POST送信のパラメータ
$name_post = "car_year";
#和暦取得用のパラメータ
$jap_param = $now_year - 1988;
//POSTで受け取った値
if ( $car_year !="" ) {
  $name_post2 = substr($car_year, 0 , 4);
} else {
  $name_post2 = $now_year;
}
?>
本年<?= $now_year ?>
<br>
日本年<?= $jap_param ?>
<br>
POST年<?= $name_post2 ?>
<select name="<?= $name_post ?>">
<?php
##****************************************************************************
##平成22年(2010)〜平成1年(1989)
##****************************************************************************
for( $i=0; $i<$jap_param; $i++ ) {
   $christiani = $now_year - $i;
   $japani = $jap_param - $i;
?>
<option value="<?= $christiani ?>年/平成<?= $japani ?>" <?php if (isset ($christiani) && $christiani == $name_post2 ) { print " selected=\"selected\""; }?>><?= $christiani ?>年/平成<?= $japani ?>年</option>
<?php
}
##****************************************************************************
##昭和63年(1989)〜昭和34年(1960)
##****************************************************************************
for( $i=0; $i<29; $i++ ) {
   $christiani = 1988 - $i;
   $japani = 62 - $i;
?>
<option value="<?= $christiani ?>年/昭和<?= $japani ?>" <?php if (isset ($christiani) && $christiani == $name_post2 ) { print " selected=\"selected\""; }?>><?= $christiani ?>年/昭和<?= $japani ?>年</option>
<?php
}
?>
</select>

MySQLファイルをCSVファイルにコンバート

##****************************************************************************
// 定義
$dir = '/public_html/'
$mcsv = '2006-01';
$t_table = 'log';
##****************************************************************************
// $t_tableテーブルを呼び出す
$rs = mysql_query("SELECT * FROM ".$t_table);
##****************************************************************************
// $t_tableテーブルのフィールド数
$fields = mysql_num_fields($rs);
if(!$fields) return;
##****************************************************************************
// ループ処理
while($row = mysql_fetch_array($rs)) {
  for($j=0; $j<$fields; $j++) {
  // $dataにデータを蓄積
     $data .= '"'.addslashes($row[$j]).'"';
     if($j<$fields-1) $data .= ',';
  }
  $data .= "\n";
}
##****************************************************************************
// $dataから余計な文字列を取り除く
$a = substr($data, 0, 5);
if($a == 'Array') $data = strstr($data, 'Array');
##****************************************************************************
// CSVファイルを呼び出す(※なければ新たに作成)
$fp = @fopen($dir.$mcsv.".csv", "a");
##****************************************************************************
// CSVファイルに$dataを追加挿入
@fputs($fp, $data);
##****************************************************************************
// CSVファイルを閉じる
@fclose($fp);

パスワードの生成


function create_password($len = 8){
   for ($pw = '', $i = 0; $i < $len; $i++){
      $str = base_convert((string) rand(0, 35), 10, 36);
      $pw .= (rand(0, 1) ? strtoupper($str) : $str);
   }
   return $pw;
}
$password =create_password();

現在のパスの取得


$path = getcwd() . "/blog.php";
$current_dir = basename(dirname($path));
$member_no = $current_dir;

isset関数

if (isset($_POST["name"]) && isset($_POST["age"]) && isset($_POST["comment"])) {
処理
}
if (isset($_POST["name"], $_POST["age"], $_POST["comment"])) {
処理
}
//ちなみに指定する変数はすべてAND条件になります

数字のみかどうかのチェック

$pat = "[^0-9]";
if($POST_age !="" ){
   if (ereg($pat, $POST_age)) {
      $caption="年齢に半角数字以外の文字が含まれています";
   }
}

文字列のエンコードとデコード

送信時(エンコード)
   $string = urlencode($string);
受信時(デコード)
   $string = urldecode($string);

全角・半角変換

string mb_convert_kana ( string str, string option [, mixed encoding] )
mb_convert_kana()は、文字列strに関して「半角」-「全角」変換を行い、変換された文字列を返します。
■この関数は、日本語のみで使用可能です。
option は変換オプションです。デフォルト値 は、"KV"です
encodingは文字エンコーディングで、省略された場合は内部文字エンコーディングが使用されます。
■使用可能な変換オプション : 以下のオプションを変換時に指定します。
  "r" : 「全角」英字を「半角」に変換
  "R" : 「半角」英字を「全角」に変換
  "n" : 「全角」数字を「半角」に変換
  "N" : 「半角」数字を「全角」に変換
  "a" : 「全角」英数字を「半角」に変換
  "A" : 「半角」英数字を「全角」に変換
  ("a","A"オプションに含まれる文字は、U+0022,U+0027,U+005C,U+007Eを除くU+0021-U+007Eの範囲です)
  "s" : 「全角」スペースを「半角」に変換 (U+3000 -> U+0020)
  "S" : 「半角」スペースを「全角」に変換 (U+0020 -> U+3000)
  "k" : 「全角片仮名」を「半角片仮名」に変換
  "K" : 「半角片仮名」を「全角片仮名」に変換
  "h" : 「全角ひら仮名」を「半角片仮名」に変換
  "H" : 「半角片仮名」を「全角ひら仮名」に変換
  "c" : 「全角かた仮名」を「全角ひら仮名」に変換
  "C" : 「全角ひら仮名」を「全角かた仮名」に変換
  "V" : 濁点付きの文字を一文字に変換。"K","H"と共に使用します。
■mb_convert_kana() の例
  「仮名」を全て「全角カタカナ」に変換
  $str = mb_convert_kana($str, "KVC");
  「半角カタカナ」を「全角カタカナ」に変換し、「全角」英数字を「半角」に変換
  $str = mb_convert_kana($str, "KVa");

ディレクトリ作成

//ディレクトリ指定
$dir = "../schedule/$POST_ID";
//ディレクトリ作成
$rc = mkdir($dir,0777);
//メッセージ
if ($rc) {
echo $dir."に、ディレクトリを作成しました";
}else{
echo $dir."に、ディレクトリを作成しようとして失敗しました";
}

自動送信


注文個数…




<?php
  $POST_kosu = $_POST["POST_kosu"];
?>
<h3>自動送信</h3>
<p></p>
<form action="<?=$_SERVER["PHP_SELF"]?>" method="post" name="MyForm">
<br />
注文個数…<?= $POST_kosu ?>
<br />
<select name="POST_kosu" onChange="MyForm.submit()">;
<br />
<option value = "1" selected>1個</option>
<br />
<option value = "2" selected>2個</option>
<br />
<option value = "3" selected>3個</option>
<br />
<option value = "4" selected>4個</option>
<br />
<option value = "5" selected>5個</option>
<br />
</select>
<br />
<input type="hidden" name="POST_mainselector" value="01php">
<input type="hidden" name="POST_selector" value="convenient">
<input type="hidden" name="send_num" value="<?= $send_num ?>">
</form>
<br />
Copyright © 2011 BreathTake All Rights Reserved