PHP_GET_データの受け取り

GET送信されたデータを受け取る

method=”GET” を使ってフォームからGET送信することができます。
このデータを取得するには 「$_GET」を使います。GET送信されたデータはURLの一部として送信されます。
例えば、「namae」という項目に「chie」というデータを入力した場合、
「http://localhost/sample.php?namae=chie」のようなURLになります。

テキストボックスに文字を入力し[送信]をクリックしてください。
<form method="get" action="">
<table>
<tr> 
<td><input type="text" name="namae"></td>
<td><input type="submit" value="送信" name="sub1"></td>
</tr>
</table>
</form> 
<?php
echo "入力内容 (\$_GET) → ".@$_GET["namae"]; 
?>
テキストボックスに文字を入力し[送信]をクリックしてください。

 

入力内容 ($_GET) →

リンクからデータを受け取る

リンクするページから含まれるパラメータを受け取る場合、「$_GET[“key”]」のように、パラメータの項目を指定すると、参照可能になります。

<a href ="<?=$_SERVER["PHP_SELF"]?>?key=Access">Access</a><br>
<a href ="<?=$_SERVER["PHP_SELF"]?>?key=Excel">Excel</a><br>
<a href ="<?=$_SERVER["PHP_SELF"]?>?key=Word">Word</a><br>

<?php
echo "<p>リンクからのパラメータ → ".@$_GET["key"]; 
?> 
Access
Excel
Word

リンクからのパラメータ → Word

フォームのデータをまとめて処理する

POST送信されたデータは、配列 $_POST に格納されています。foreach文を使うと、まとめて処理することができます。
フォームメールとかに役立ちそうですね。

お名前

Email

職種

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

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>
 <center>
 <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>
</center>
<hr>
<p>送信データの表示</p>

<?php
  foreach($_POST as $idx => $val){
  echo "<br>$idx = $val";
}
 ?>

PHP_POST_配列を使う

配列を使う

フォームからのデータを配列にセットするとまとめて処理をすることができます。
配列はこのページで学習しました。

ソースコードがとても見にくいと思います。ごめんなさい。
先頭の空白をすべて削除しています。
オンラインでスクリプトを書いているのですが、すぐに全角が入ってしまい動かなくなるのです(^^; おはずかしい

チェックボックスをオンにし[送信]をクリックしてください。

Dog
Cat
Cow
Monkey

【ソース】

チェックボックスをオンにし[送信]をクリックしてください。

<form method="post" action="">
<table>
<tr>
<td>
<input type="checkbox" name="check1[]" value="Dog">Dog
<input type="checkbox" name="check1[]" value="Cat">Cat
<input type="checkbox" name="check1[]" value="Cow">Cow
<input type="checkbox" name="check1[]" value="Monkey">Monkey
</td>
<td><input type="submit" value="送信" name="sub1"></td>
</tr>
</table>
</form>

<?php
for ($i = 0; $i < count(@$_POST["check1"]); $i++) {
echo $_POST["check1"][$i]."<br>";
} 
?>

PHP_フォーム POST送信

フォームを使うと、いろいろなことがWebでできるということが分かりました。
「あれもやりたい、これもやりたい」と脳裏に浮かびますが、少しずつネ

HTML5 Builder で作ったものをブログで実行させることはまだできません。
ブログはデータベースなので、インクルード方法が違うのだと思います。

できないことにくよくよと時間を取られていてもナンなので、先に進むことにします。

POST送信

フォームからPOST送信されたデータを受け取るには、「$_POST[“text1”]」のように項目を指定します。

テキストボックスに文字を入力し、[送信]をクリックしてください。
<form method="post" action="">
<table>
<tr>
<td><input type="text" name="text1"></td>
<td><input type="submit" value="送信" name="sub1"></td>
</tr>
</table>
</form>

<?php
echo "<p>入力内容 ".@$_POST["text1"]; 
?>
テキストボックスに文字を入力し、[送信]をクリックしてください。

入力内容 

PHP_フォームを使おう

HTMLで作成したページにPHPスクリプトを埋め込むことによって、動的に変化するページを作成することができます。フォームからの送信には通常のPOST送信のほか、URLにデータを含めて送信するGET送信があります。GET送信は、指定されたパラメータでアクセスしてもらう利便性がありますが、いたずらにクリックを呼ぶことがあります。 POST送信ではパラメータが表示されないので、いたずらを回避することができます。

メッセージが変化する

下記サンプルはボタンが押されるたびに、メッセージが変化する「動的」なページです。(GET送信)
ようやく動きました!
自分自身を呼び出すには自分自身のURLを記述する必要があります。この記事のURLをそのまま action に入れてみました。
自分自身のURLを入れたくないので、action に “#” を入れるという方法を見つけました。
いやぁ、難しいというか、奥が深いというか・・・

↓ボタンをクリックしてください。

【ソース】

<form method="GET" action="#">
<p>↓ボタンをクリックしてください。</p>
<p><input type="submit" value="「おはよう」" name="Good_morning"></p>
<p><input type="submit" value="「こんにちは」" name="Good_afternoon"></p>
<p><input type="submit" value="「こんばんは」" name="Good_evening"></p>
<table width="351" border="1" cellpadding="5">
<tr>
<td width="333">
<?php //スクリプトの始まり
error_reporting(0);
if ($_GET["Good_morning"]) { //最初のボタンが押されたら
print("Good morning\n"); //メッセージを表示する
} elseif ($_GET["Good_afternoon"]) { 
print("Good afternoon\n");
} elseif ($_GET["Good_evening"]) { 
 print("Good evening\n");
}
?>
</td>
</tr>
</table>
</form>

1行のテキストボックス

次のサンプルでは、1行目のテキストボックスに入れた値を、2行目にセットします。

(1) のテキストボックスに文字を入力して[送信]をクリックしてください。

(1)

(2)

ラジオボタン

次の例では、性別をチェックするラジオボタンに、PHPスクリプトを組み込みます。
実行するには[男性]か[女性]のボタンをクリックします。


男性

女性


【ソース】

<form method="GET" action="#"><p>
<input type="submit" value="男性" name="man">
<input type="submit" value="女性" name="woman"><p>

<input type="radio" value="1" name="seibetu" <? if ($_GET["man"]) { print("checked"); } ?>>男性</p>
<p><input type="radio" value="2" name="seibetu" <? if ($_GET["woman"]) { print("checked"); } ?>>女性</p>
</form>

チェックボックス

チェックボックスを「ON]」にします。

男性

女性

<p><input type="checkbox" value="ON" name="man" <? if ($_GET["man"] == "ON") { print("checked"); } ?>>男性</p>
<p><input type="checkbox" value="ON" name="woman" <? if ($_GET["woman"] == "ON") { print("checked"); } ?>>女性</p>

PHP基礎_正規表現

正規表現とは、いくつかの文字列を一つの形式で表現するための方法です。
この表現方法を利用すれば、多くの文章から見つけたい文字列を検索することがでます。
入力データの形式チェックをするときに、正規表現によるパターンマッチングがよく使われます。パターンマッチングとは、正規表現で記述された「パターン」と照合して、一致したときに「マッチする」という意味です。特殊な記号を組み合わせて検索パターンを指定することができます。

ereg()関数

引数で与えられた文字列と、パターンの一致するものを検索します。正規表現にマッチした場合Trueを返します。
マニュアルに「この関数は PHP 5.3.0 で 非推奨となりました。 この機能を使用しないことを強く推奨します。」となっているので省きます。

正規表現のマニュアルは、http://php.net/manual/ja/ref.pcre.phpにあります。
検索や置換を行うには、preg_replacepreg_filter を使うようです。

PHPをWordPressで使う

WordPressの中にPHPを埋め込む

プラグインを使うと、簡単にPHPを記事に埋め込むことができます。
Exec-PHP というプラグインを検索してインストール、有効化します。
管理パネルで、「ユーザー」→「あなたのプロフィール」をクリックし、「Disable WYSIWYG Conversion Warning」のチェックボックスをオンにします。
「あなたのプロフィール」の一番上で、「ビジュアルリッチエディターを使用しない」にチェックを入れます。
ビジュアルエディターを使うと、うまく動作しないようです。
これ以降は、ブログの記事内で使うコードはビジュアルエディタが使えなくなり、すべてタグ打ちとなります。

HTMLタグを埋め込む場合、テーマによってはそのままでは思い通りに表示されない場合があります。
CSSで設定されているHTMLタグなどです。
CSSを理解していないと、WordPressでPHPを思い通りに表示するのは難しいかもしれません。

外部からのPHPを読み込む

WordPressへPHPを読み込みます。
方法はこちらのサイト様の記事を参考にさせていただきました。
テーマと同じフォルダに、読み込むファイルを置きます。
カレンダーを読み込んでみます。

まず、テーマの「function.php」に次のコードを追加します。

function Include_my_php($params = array()) {
    extract(shortcode_atts(array(
        'file' => 'default'
    ), $params));
    ob_start();
    include(get_theme_root() . '/' . get_template() . "/$file.php");
    return ob_get_clean();
}
 
add_shortcode('myphp', 'Include_my_php');
 

次のようなタグを記事に埋め込みます。(calendarはファイル名)

[myphp file='calendar']

【結果】

PHP基礎_日付と時刻

PHPには、日付と時刻操作する関数があらかじめ用意されています。

getdate()関数

今日の日付(時間)を求めます
【構文】

getdate (timestamp)

getdate()関数は、次の文字列を要素とする連想配列を返します。

second 現在の秒
minutes 現在の分
hours 現在の時間
mday 現在の日
wday 現在の曜日番号
mon 現在の月
year 現在の年
yday その年の通算日
weekday テキスト形式の曜日
month テキスト形式の月

date()関数

 
引数で与えた日付を指定するフォーマットの文字列に変換します。

a...am または pm  
A... AM または PM  
d... 2桁の日付(01~31) 
D... 3文字の曜日 (Sun ~ Sat) 
F... フルスペルの英字の月(January~December) 
h... 12時間単位 (00 ~ 12) の時間 
H... 24時間単位 (00 ~ 23) の時間 
g... 先頭に 0 をつけない12時間単位 (0 ~ 12)  
G... 先頭に 0 をつけない24時間単位 (0 ~ 23)  
I... 2桁の分 (00 ~ 59)  
j... 先頭に 0 をつけない (0 ~ 31)の日 
l... フルスペルの英字で曜日(Sunday~Saturday) 
L... 閏年では 1 を、それ以外は 0 を返す  
n... 先頭に 0 をつけない (0 ~ 12) の月 
m... 2桁のの月 (01 ~ 12)  
M... 3文字の月 (Jan ~ Dec) 
s... 2桁の秒 (00 ~ 59) 
S... 英文の序数を表わす接尾語 (th ~ nd) 
t... 指定した月の日数 (28 ~ 31)  
U... UNIX時間 (1970年1月1日からの秒数) 
w... 数値で示す曜日 (0 ~ 6) 
y... 西暦の下2桁を示す年 
Y... 西暦を4桁で示す年 
z... その年の1月1日からの通算日 
Z...タイムゾーンのオフセット秒 ( -43200 ~ 43200まで)  

【サンプル】

<?php
   $hiduke = date("Y/m/d");
   echo ("$hiduke<br>\n");
   $hiduke = date("Y/m/d H:i:s a");
   echo ("$hiduke<br>\n");
   $hiduke = date("y/n/j G:i:s");
   echo ("$hiduke<br>\n");
   $hiduke = date("Y F l");
   echo ("$hiduke<br>\n");
?>
2024/11/24
2024/11/24 02:04:34 am
24/11/24 2:04:34
2024 November Sunday

【サンプル】カレンダー

<?php
//今日の日付を取得
$today = getdate();
$yyyy = $today[year];//年
$mm = $today[mon];//月
$dd = $today[mday];//日

// カレンダーを表示する
 echo "<p><img src='line_heart.gif'>";
 echo "<table>";
 echo "<tr align='center'><td colspan='7'>$yyyy 年 $mm 月</td></tr>";
 echo "<tr>";
 echo "<td width='20'>日</td>";
 echo "<td width='20'>月</td>";
 echo "<td width='20'>火</td>";
 echo "<td width='20'>水</td>";
 echo "<td width='20'>木</td>";
 echo "<td width='20'>金</td>";
 echo "<td width='20'>土</td>";
 echo "</tr>";

// 1日の曜日を取得する
$wd1 = date("w", mktime(0, 0, 0, $mm, 1, $yyyy));
 $d = 0;
 $lastd = date("d", mktime(0, 0, 0, $mm + 1, 0, $yyyy));

for ($i = 0; $i <= 5; $i++) {
 if ($d > $lastd) {break;}
 echo "<tr>";
 for ($j = 0; $j <= 6; $j++) {
 $d = $i * 7 + $j - $wd1 + 1;
 if ($d > $lastd or $d < 1) {
 echo "<td> </td>";
 }
 //今日の日付の場合はセルに色をつける
else {
 if ($d == $dd ) {
 echo "<td align='center' bgcolor='#efb457'>$d</td>";
 }
 else {
 echo "<td align='center'>$d</td>";
 }
 }
 }
 echo "</tr>";
 }
 echo "</table>";
 echo "<p><img src='line_heart.gif'>";
?>

2024 年 11 月
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
             

mktime()関数

指定日した日数後の日付を求めることができます。
日のパラメータを「指定日+経過日数」とすると、経過日数後の日付を求めることができます。

【サンプル】

<?php
 //本日の日付
 $today = getdate();
 $yyyy = $today[year];
 $mm = $today[mon];
 $dd = $today[mday]; 
//間隔日数
$kankaku = 30;

//タイムスタンプを取得
$date = date("Y/m/d", mktime(0,0,0, $mm,$dd + $kankaku,$yyyy));
 echo "$yyyy 年 $mm 月 $dd 日 の $kankaku 日後 → ".$date ;
 ?>
2024 年 11 月 24 日 の 30 日後 → 2024/12/24

mktime()関数で、「日」に「0」を指定すると、前月末の日付を取得することができます。「月」+1で、今月末を求めることができます。

【サンプル】

<?php
 //今日の日付を求める
 $today = getdate();
 $yyyy = $today[year];
 $mm = $today[mon];
 $kongetu = $mm + 1;

 $date = date("Y/m/d", mktime(0,0,0, $mm,0,$yyyy));
 echo "$yyyy 年 $mm 月 1 日 の 前日 → ".$date."(前月末)" ;

 $date = date("Y/m/d", mktime(0,0,0, $mm + 1,0,$yyyy));
 echo "<p>$yyyy 年 $kongetu 月 1 日 の 前日 → ".$date."(今月末)" ;
 ?>
2024 年 11 月 1 日 の 前日 → 2024/10/31(前月末)

2024 年 12 月 1 日 の 前日 → 2024/11/30(今月末)

PHPの基礎_演算子

演算子ってずいぶんいっぱいあるんだわぁ
詳細は公式マニュアルにお任せするとして、すぐに使いそうなものだけを書いておきます。

代入演算子

  • 代入演算子は、変数に定数やほかの変数、演算結果などを代入します。
  • 代入演算子の基本となるものは、「変数 = 値」または「変数 = 変数」です。

文字列連結演算子

文字列結合演算子(ピリオド)は、2つ以上の文字列を1つの文字列に結合させるときに使います.

<?php
 $last_name ="Chie";
 $first_name = "Nonomura";
 $full_name = $last_name. " " . $first_name;
 echo ("My Name is $full_name");
 ?>
My Name is Chie Nonomura

代数演算子

演算子
意味
記述例
+ 加算 100 + 100
減算 100 – 50
* 乗算 100 * 5
/ 除算 100 / 50
% 剰余算 10 % 3 (余りを求める)
<?php
 $num1 = 100 + 100;
 $num2 = 100 - 50;
 $sum3 = 100 * 5; 
 echo "100 + 100 = $num1<br>\n";
 echo "100 - 50 = $num2<br>\n";
 ?>
100 + 100 = 200
100 – 50 = 50

比較演算子

比較演算子では、論理値(True か False)を返します。

演算子
意味
記述例
== 等しい $a == 10
< 小さい $a < 10
> 大きい $a > 10
<= 小さいか等しい $a <= 10
>= 大きいか等しい $a >= 10
!= 等しくない $a != 10
<> 等しくない $a <> 10
<?php
 $num = 101;
 if ($num >100) echo ("変数の値$num は100よりも大きい");
 ?>
変数の値101 は100よりも大きい

論理演算子

演算子
意味
記述例
説明
&& 論理積 $a && $b $aと$bの両方が成り立つとき
|| 論理和 $a || $b 片方かもしくは両方が成り立つとき
and 論理積 $a and $b 2つの両方が成り立つとき
or 論理和 $a or $b 片方かもしくは両方が成り立つとき
xor 排他的論理和 $a xor $b $aと$bの片方が成り立ち、両方が成り立たない
! 否定 !$a $aが成り立たない

“and” および “or” 演算子が 2 種類あるのは、演算が行われる際の優先順位が 異なっているためです

<?php
$a = true;
$b = false;
if($a && $b) echo "a and b";
if($a || $b) echo "a or b";
if(!$a) echo "not a ";
 ?>
a or b

PHPの基礎_変数と型

変数

  1. PHP の変数はドル($)記号の後に変数名が続く形式で表されます。 $変数名 = 変数に代入する値
  2. 変数名は大文字小文字を区別します。
  3. PHPの変数は、代入されるデータによって型が自動的に変わります。
  4. 普通は数値同士で演算を行いますが、PHPでは文字列を算術演算の対象にすると、数値として解釈します。
  5. 変数の宣言をする必要がありません。必要に応じてキャスト(型変換)します。
  6. 変数名に数字やアンダースコアを使えますが、先頭文字はアルファベットにします。
    アンダースコアから始まる変数には特殊な使いかたがあります。

変数の型

 

論理値 Boolean True か False の値を持つ
整数 Integer 少数や指数を含まない値
浮動小数点数 float 少数点以下の値を持ち14桁の数値が扱える
文字列 String 文字列の長さに制限がない

数値型の相互変換

PHPでそれぞれ違った型同士で演算をすると、「型の相互変換」が行われます。例えば、下記のように整数と実数を演算すると、変数の型は「倍精度実数」に変換されます。

<?php
$kingaku = 1234;//整数
$zeikin = 0.08;//実数
$zeikomi = $kingaku * $zeikin;
 echo("$kingaku × $zeikin = $zeikomi");
 ?> 
1234 × 0.08 = 98.72

変数のデータ型を明示する

変数の型をあらかじめ明示するには、変数の型を括弧()で囲みます。

<?php
 $num = 123.45;
 $seisu = (int) $num;   //整数
 $jissu = (double) $num;//倍精度実数
 $moji = (string) $num; //文字列
 echo("$seisu (整数) + $jissu(実数) + $moji(文字列)");
 ?>
123 (整数) + 123.45(実数) + 123.45(文字列)

可変変数

可変変数は、変数名を動的に変更することができる変数です。「$$」をつけることにより変数名が置き換えられます。

<?php
 $hensu = "myname"; 
 $$hensu = "Chie"; // myname ← Chie 
 echo ("My name is $myname");// myname が出力される
?>
</p>
My name is Chie

配列変数(添え字が数字の場合)

変数の末尾に[](角カッコ)をつけます。添え字を指定しないときには、ディフォルト値(0)が自動で割り当てられます。

<?php
 $fruit[] = "りんご";
 $fruit[] = "めろん";
 $fruit[] = "おれんじ";
 echo ("$fruit[0] $fruit[1] $fruit[2] <br>\n");
 ?>
りんご めろん おれんじ

配列変数(添え字が文字の場合)

文字を添え字に指定することができます。この配列を「連想配列」といいます。

<?php
 $drink["sake"] = "八海山";
 $drink["juice"] = "カルピス";
 $drink["coffee"] = "ブルーマウンテン";
 echo ("酒:$drink[sake] <br>\n");
 echo ("ジュース:$drink[juice] <br>\n");
 echo ("コーヒー:$drink[coffee] <br>\n");
 ?> 
酒:八海山
ジュース:カルピス
コーヒー:ブルーマウンテン

変数のスコープ

変数のスコープとは、変数の有効範囲のことです。PHPにはグローバルスコープとローカルスコープがあります。
ローカル変数は有効範囲の限られている変数、グローバル変数は有効範囲の限られていない変数です。
関数内で作成された変数は基本的に関数外で参照する事はできません。

PHPの基礎 文字列

スクリプトを囲むタグ

PHPはHTMLで作成したページに、スクリプトを埋め込む形でプログラミングを行います。PHPコードの開始を示すタグからコードの終了を示すタグの間のコードを実行します。

1.<? ...?>
2.<?php ... ?>
3.<script language ="php"> ... </script>

文字列を表示する

PHPでは、文字列は二重引用符、またはシングルコーテーションで括ります。
文字列をブラウザに表示するには「echo」と「print」があります。
echoは複数の引数を取ることができます。
printは1つの引数を取ります。戻り値として常に1を返します。
※引数は括弧でくくらなくてもよい。

サンプル
こんにちは 千絵です。
現住所は埼玉です
ソース
 <?php
  print ("こんにちは 千絵です。");
 ?>
 <?php
  echo '現住所は', '埼玉です';
 ?>


文字列をつなげる

文字列演算子(.)を使うと文字列の結合ができます。

<?php
 $str1 = "Mccoy";
 $str2 = "Jeanluc";
 echo $str1. " と ".$str2. " はうちのワンコ";
 ?>
Mccoy と Jeanluc はうちのワンコ

文字列と数値を足す

<?php
 $str = "1500";
 $tmp = 1000 + $str;
 echo ("文字列変数+数値変数。合計は $tmp 円です<br>");
 ?>
文字列変数+数値変数。合計は 2500 円です

シングルコーテーションを含む文字列

文字列の中でシングルコーテーションを使うときは、全体をダブルコーテーションで囲むと、ゴチャゴチャにならずに済みます。

<?php
  print ("I'm a girl");
 ?>
I’m a girl

エスケープシーケンス

¥マーク(バックスラッシュの場合もある)を使うと、その直後の記号はPHPの要素としては無視されます。
これをエスケープシーケンスといい、PHPの制御に使う記号をパラメータとして使うときに記述します。
エスケープシーケンスを使うときは、その両端をダブルコーテーションで囲みます。

\n 改行(LF)
\r キャリッジリターン(CR)
\t タブ
\\
\$
\”
\’
サンプル
<?php 
  print('1行目');
  print("\n");//改行
  print('2行目');
1行目
2行目