PHP 表の行に色を付ける

1行おきに背景色を付ける

余りを求める式(%)を使います。
2で割ると奇数のときに余りがでるので、色を塗ります。

1 1行目の背景色です
2 2行目の背景色です
3 3行目の背景色です
4 4行目の背景色です
5 5行目の背景色です
6 6行目の背景色です
7 7行目の背景色です
8 8行目の背景色です
9 9行目の背景色です
10 10行目の背景色です
ソース
<table>
<?php
	for($i=1; $i<=10; $i++) {//10回繰り返す
		if ($i % 2) {//余りがなければ
			print('<tr style="background-color: #21BDDE">');//背景色をつける
		} else {//それ以外の場合
			print('<tr>');//行をとじるだけ
		}
		print('<td>' .$i .'</td>');
		print('<td>' .$i . '行目の背景色です</td>');
		print('</tr>');
	}
?>
</table>

PHP_郵便番号のチェック

郵便番号を正規表現を使ってチェックする

正規表現を利用するには、preg_match 関数を使用します。
【書式】
preg_match(“/検索パターンを表す文字列/”, 比較文字列)
これで「比較文字列 に 検索パターンを表す文字列 が含まれるか?」を調べることができます。

サンプル
郵便番号を「111-2222の形で入力して[送信]をクリックしてください。


まだ何も入力されていません。

ソース
<form action="" method=post>
郵便番号を「111-2222の形で入力して[送信]をクリックしてください。
<input type="text" name ="zip" size="10" maxlength="8" id="zip" />
<input type="submit" value="送信" />
</form>


<?php
$zip = mb_convert_kana($_REQUEST['zip'],'a','utf-8');
if (preg_match("/^\d{3}\-\d{4}$/",$zip)) {
echo ('成功です! 郵便番号が入力されました! 〒:'. $zip);
} elseif (empty($zip)) {
echo ('まだ何も入力されていません。');
} else {
echo('入力形式が違います。郵便番号は「123-4567」の形式で記入してください。');
}
?>

【preg_matchのパラメータ】

  • 先頭と最後のスラッシュは正規表現の始まりと終わりを示します。
  • 次の^と\dは、「先頭に数字がある」ということを示します
  • d{3}は、数字が3つ続くことを表し、その次にはハイフンがきます。
  • 最後は数字が4つ続きます

PHP_半角数字かどうかをチェックする

半角数字かどうかをチェックする

is_numeric()関数を使うと、データが数字かどうかを調べることができます。
数値または数値文字列であれば True が返されます

サンプル
数値を入力して「送信」をクリックしてください。


数値を入力して「送信」をクリックしてください

ソース
数値を入力して「送信」をクリックしてください。
<form method=post action="<?=$_SERVER["PHP_SELF"]?>">
	<input type="text" name="namae">
	<input type="submit" value="送信" name="sub1">
	
</form>

<?php
   $namae = @$_POST["namae"]; //データを受け取る
   $maxlen = 6; //最大文字数を指定 
  
   if (empty($namae)) {
     echo "数値を入力して「送信」をクリックしてください<br> ";
	}
   
    else {
   	  //is_numeric()を使って数値かどうかで調べます
     if (is_numeric($namae)) {
	  $keisan = $namae + $namae;
       echo "$namae は 半角数値です " ."$namae + $namae =".$keisan ;
     }
     else {
       echo "「 $namae 」は 数値ではありません。";
	 }
    }
?>

半角数値に変換してからチェックする

mb_convert_kana()関数mb_convert_kana()関数を使うと、文字列を指定した変換モードで変換することができます。
サンプルの場合は、「n」をパラメータとして使っているので、全角数字→半角数字へ変換しています。

R 半角英字→全角英字
n 全角数字→半角数字
N 半角数字→全角数字
a 全角英数字→半角英数字
A 半角英数字→全角英数字
s 全角スペース→半角スペース
S 半角スペース→全角スペース
k 全角カタカナ→半角カタカナ
K 半角カタカナ→全角カタカナ
h 全角ひらがな→半角カタカナ
H 半角カタカナ→全角ひらがな
c 全角カタカナ→全角ひらがな
C 全角ひらがな→全角カタカナ
V KまたはHと一緒に使用し濁点付きの半角文字を全角の1文字に変換する
サンプル
年齢を入力し「送信」をクリックしてください。


ソース
年齢を入力し「送信」をクリックしてください。
<form method="post" action="">
	<input type="text" name="age">
	<input type="submit" value="送信" name="sub1">
	
</form>

<?php

if (isset($_POST["age"])) { //フォーム入力値が入っている場合のみ処理を実行
   
   $age = mb_convert_kana($_REQUEST['age'], 'n','UTF-8'); //数値に変換 
   if(is_numeric($age)){ //半角数値なら
   	  print($age .' 歳');//年齢を表示
   } else {
     print('数値で入力してください');
   }
}
?>

PHP_文字列のバイト数を調べる

文字列のバイト数を調べるには

文字列のバイト数を調べるには、strlen()関数 を使います。
全角文字の場合、文字コードによってバイト数が違います。
必ずしも2バイト文字とはなりません。

サンプル
任意の文字列(半角6文字まで)を入力して「送信」をクリックしてください。

  

データが入力されていません。文字列を入力して「送信」をクリックしてください

ソース
任意の文字列(半角6文字まで)を入力して「送信」をクリックしてください。
<form method=post action="">
  <table>
      <tr>
	    <td><input type="text" name="namae"></td>
		<td><input type="submit" value="送信" name="sub1"></td>
	  </tr>
	</table>
</form>

<?php
   $namae = @$_POST["namae"]; //データを受け取る
   $maxlen = 6; //最大文字数を指定 
  
   if (empty($namae)) {
     echo "データが入力されていません。文字列を入力して「送信」をクリックしてください<br> ";
	}
   
    else {
      //strlen()関数で調べる
	  $bytes = strlen($namae);

     if (strlen($namae) > $maxlen) {
       echo "$maxlen バイト以内で入力してください<br>";
	   echo "「 $namae 」は $bytes バイト です。<br>";
     }
     else {
       echo "「 $namae 」は $maxlen バイト以内です";
	 }
    }
?>

PHP_文字が含まれているかを調べる

文字が含まれているかを調べる

stristr()関数を使うと、フォームからのデータに指定した文字列が含まれているかを調べることができます。
含まれていれば見つかった文字列を返し、含まれていないときには FALSE を返します。大文字と小文字の区別はしません。
大文字と小文字を区別する場合はstrstr()関数を使います。

【書式】

stristr(処理対象の文字列,検索する文字列)
サンプル
住所を入力し「送信」をクリックしてください。

  

埼玉県 は含まれていません

住所を入力し「送信」をクリックしてください。
 <form method=post action="<?=$_SERVER["PHP_SELF"]?>">
  <table>
      <tr>
	    <td><input type="text" name="namae"></td>
		<td><input type="submit" value="送信" name="sub1"></td>
	  </tr>
	</table>
</form>
<h6>ソース</h6>
<?php
   $namae = @$_POST["namae"]; //データを受け取る
   $sagasu = "埼玉県";//探す文字列
   
   //stristr()関数で探す
   if (!stristr($namae, $sagasu)) {
     echo " $sagasu  は含まれていません <br />";
    }
   else {
     echo "$namae の中に $sagasu が含まれています<br>";
	}
?>

PHP_データが空かを調べる

データが入力されたかチェックするには 

strlen()関数は、文字列の長さを調べる関数です。長さがゼロであればデータが入力されてないと判断します。

サンプル
 

文字列を入力して「送信」をクリックしてください

<form method="post" action="">
<table>
<tr> 
<td><input type="text" name="namae"></td>
<td><input type="submit" value="送信" name="sub1"></td>
</tr>
</table>
</form>
<?php

//strlen()関数でチェック
$namae = @$_POST["namae"];

	if (!strlen($namae)) {
		print "文字列を入力して「送信」をクリックしてください";
	}
	else {
	print $namae;
	}
 ?>

empty()関数でデータが空かどうか調べる

empty()関数は、フォームから受け取ったデータが空または0であるときにTRUEが返されます。
【書式】

ブール値 = empty(調べたい変数);
サンプル
 

データが入力されていません。文字列を入力して「送信」をクリックしてください
※0(ゼロ)は無効です

ソース
<form method="post" action="">
<table>
<tr> 
<td><input type="text" name="namae"></td>
<td><input type="submit" value="送信" name="sub1"></td>
</tr>
</table>
</form>
<?php
  //empty()関数でチェック
  $namae = @$_POST["namae"];
  if (empty($namae)) {
    echo "データが入力されていません。文字列を入力して「送信」をクリックしてください<br>
          ※0(ゼロ)は無効です";
    }
   else {
   echo "入力文字 :".$namae;
  }
?>

PHP_チェックボックス

チェックの内容を表示する

チェックボックスで複数選択が可能なものを作るときには、neme属性に[]記号をつけなければなりません。
こうすると、チェックボックスの値が「配列」としてPHPに渡されます。

チェックしてから「送信」をクリックしてください。

メロン
イチゴ
モモ

あなたの好きな果物:

ソース
<p>チェックしてから「送信」をクリックしてください。</p>
<form method="post" action="">
  <input type="checkbox" name="fruit[]" value="メロン">メロン
  <input type="checkbox" name="fruit[]" value="イチゴ">イチゴ
  <input type="checkbox" name="fruit[]" value="モモ">モモ
  <input type="submit" value="送信" name="btn">
</form>
 あなたの好きな果物:<br /> 
<?php
//入力内容を表示する
for ($i = 0; $i < count(@$_POST["fruit"]); $i++){
  echo @$_POST["fruit"][$i]." ";
}
echo "</p>\n";
?>

連想配列を使ってチェックボックスを表示する

連想配列は、文字を添え字として使う配列です。

【書式】

$変数名 = array ('キー1' => 値1, 'キー2' => 値2, ...);

連想配列はキーが数字ではないため複雑になるので、基本的にはforeachを使って取り出します。

【書式】

foreach (配列変数 as キー => 値){
  処理;
}
サンプル
ソース
<form action="#" method="get">
<?php
//連想配列にデータを入れる
$items = array('果物1' =>'桃', '果物2' => 'メロン', '野菜1'=>'トマト','野菜2'=>'レタス');

//配列の内容を取り出す
foreach($items as $itemKey => $itemValue){
	print ('<input type="checkbox" id="'. $itemKey .'"value="' .$itemKey .'" /><label for="'. $itemKey . '"> '. $itemValue. '</label> ');
	}
?>
</form>

PHP_ドロップダウン

ドロップダウンボックスを表示する。

ドロップダウンボックスを作るには、

<SELECT>~</SELECT>

で範囲を指定し、この中に、項目数分

<OPTION>~</OPTION>

を記入します。

次の例では、1から10までをドロップダウンに表示させています。上のサンプルを少し変更しました。

サンプル
ソース
<select name="days" id="days">
<?php
for ($i = 1; $i <=10; $i++) {
   print ('<option value="' . $i. '">' . $i . '日</option>');
   }
   ?>
</select>

今月の日をドロップダウンに表示

date関数を使って、今月の日を取得します。

サンプル
5月
ソース
<?php print(date('n')); ?>月
<select name="days" id="days">
<?php
for ($day = 1; $day <=date('t'); $day++) {
   print ('<option value="' .$day. '">' . $day . '日</option>');
   }
   ?>
</select>

配列を使って都道府県をドロップダウンに表示

サンプル

kenmeiという変数に、配列の内容を格納し、foreach文を使って、配列の内容を順番に取り出しています。

foreachの構文
foreach(配列 as 取り出す要素の変数) {
   処理
}
ソース
<select name="kenmei" id="kenmei">
<?php
$kenmei = array('北海道', '青森県', '岩手県', '宮城県', '秋田県', '山形県', '福島県',
'茨城県','栃木県','群馬県', '埼玉県','千葉県', '東京都', '神奈川県','新潟県',' 富山県',
 '石川県','福井県','山梨県','長野県','岐阜県','静岡県','愛知県','三重県','滋賀県',
 '京都府','大阪府','兵庫県','奈良県','和歌山県','鳥取県','島根県','岡山県','広島県',
 '山口県','徳島県','香川県','愛媛県','高知県','福岡県','佐賀県','長崎県','熊本県',
 '大分県','宮崎県','鹿児島県','沖縄県');
 
 foreach($kenmei as $kenmei) {
 	print('<option value="' . $kenmei . '">' . $kenmei . '</option>');
	}
?>
</select>

PHPをローカルで動かす

DelphiのHTML5 Builder で作るPHPファイルは、ブログでうまく使えないので、当分(ずっとかも)やらないことにしました。

そこで、ローカルでPHPを動かしてみることに。
xamppはすでにインストールしてあったので、xamppのコントロールパネルから、Apache の「Start」をクリックして、サーバーを起動しました。
20140712-1

ブラウザから「http://localhost:81/php/calendar.php」と入力し、カレンダーを実行しました。
calender.php のある場所は、xamppをインストールしたフォルダの、「htdocs/php/」です。

すると見たこともないエラーが・・・
カレンダーはちゃんと動くのに。

Notice: Use of undefined constant year - assumed 'year' in ~
Notice: Use of undefined constant mon - assumed 'mon' in ~
Notice: Use of undefined constant mday - assumed 'mday' in ~

次のカッコの中のyearの前後をシングルコーテーションで括ったらエラーが出なくなりました。

$yyyy = $today[year];
$mm = $today[mon];
$dd = $today[mday];

これでローカルでスクリプトを実行する環境が整いました。
後は前へ進むのみですが、前途多難。

ローカルで作成したPHPファイル「calc.php」を、サーバーに転送し、このブログに読み込んでみました。
実行方法は、ボックスに半角で数値を入力し、ラジオボタンで演算を選び「計算」をクリックします。


Warning: include(/home/zoomyc/www/blog/wp-content/themes/govpress/calc.php): failed to open stream: No such file or directory in /home/zoomyc/www/blog/wp-content/themes/govpress/functions.php on line 216

Warning: include(): Failed opening '/home/zoomyc/www/blog/wp-content/themes/govpress/calc.php' for inclusion (include_path='.:/usr/local/php/5.6/lib/php') in /home/zoomyc/www/blog/wp-content/themes/govpress/functions.php on line 216

【ソース】

<form method=post action="">
<table bgcolor="#FFFFFF">
  <tr>
    <td width="100">数値Aを入力:</td>
    <td width="41"><input size="5" type="text" name="num_a">
    </td>
    <td width="100">数値Bを入力:</td>
    <td width="40"><p>
      <input size="5" type="text" name="num_b">
    </p>
      </td>
  </tr>
 </table>
<table width="400">
<tr>
 <td width="50"><label><input type="radio" name="calc" value="tasu">加算</label></td>
 <td width="50"><label><input type="radio" name="calc" value="hiku">減算</label></td>
 <td width="50"><label><input type="radio" name="calc" value="kakeru">乗算</label></td>
 <td width="50"><label><input type="radio" name="calc" value="waru">除算</label></td>
 <td width="70"><label><input type="radio" name="calc" value="amari">剰余算</label></td>
</tr>
</table>
 <INPUT name="submit2" TYPE="submit" VALUE="計算">
</FORM>

<?php
    extract($_POST);
   //四則計算の種類(ラジオボタンから取得)
   $kind = @$calc;
   
   //半角数値かを判定
   if (is_numeric(@$num_a) and is_numeric(@$num_b)) {
	  
	  //四則計算の種類を判定して計算する     
	switch ($kind) {
		case "tasu": 
			$ans = @$num_a + @$num_b;
			$text = @$num_a."+".@$num_b."= ";
			break; 
		case "hiku":
			$ans = @$num_a - @$num_b;
			$text = @$num_a."-".@$num_b."= ";
			break; 
		case "kakeru":
			$ans = @$num_a * @$num_b;
			$text = @$num_a."*".@$num_b."= ";
			break; 
		case "waru":
			$ans = @$num_a / @$num_b;
			$text = @$num_a."/".@$num_b."= ";
			break;
		case "amari":
			$ans = @$num_a % @$num_b;
			$text = @$num_a."%".@$num_b."= ";
			break; 
	}
 
	echo "<table>";
	echo "<tr>";
	echo "<td>$text $ans </td>";
	echo "</tr>";
	echo "</table>";
   } else {
      echo "数値を半角で入力してください。<br>";
   }
?> 

PHP_フォームデータを変数に格納

フォームのデータを変数に入れる

extract()関数は、配列のインデックス名と同じ変数名に配列の値をセットする関数です。
フォームから受け取ったデータを、フォーム要素と同じ名前の変数に格納することができます。

お名前

Email

職種

ワープロ・入力
DTP
CAD
プログラム
その他
コメント

URL



送信データの表示

名前:
メール:
種別:
コメント:
URL:

<form method=post action="">
<table>
  <tr><td>お名前<td><INPUT SIZE="50" TYPE="text" NAME="namae"></tr> 
  <tr><td>Email<td><INPUT SIZE="50" TYPE="text" NAME="email"></tr>
</table>

<table>
 <tr><td>職種<td><input type="radio" NAME="janre" value="WP">ワープロ・入力
   <input type="radio" NAME="janre" value="DTP">DTP
   <input type="radio" NAME="janre" value="CAD">CAD
   <input type="radio" NAME="janre" value="PROG">プログラム
   <input type="radio" NAME="janre" value="OTHER">その他
 </tr>
 <tr><td align="center">コメント<br><br><td><TEXTAREA NAME="comment" ROWS="10" COLS="60"></TEXTAREA><p></tr>
 <tr><td>URL<td><INPUT size="60" TYPE="text" NAME="url"></tr>
</table>

<INPUT TYPE="submit" VALUE="送信">
<INPUT TYPE="reset" VALUE="リセット">
</FORM>

<p>送信データの表示</p>

<?php
   extract($_POST);
   echo "名前:".@$namae."<br>";
   echo "メール:".@$email."<br>";
   echo "種別:".@$janre."<br>";
   echo "コメント:".@$comment."<br>";
   echo "URL:".@$url;
?>