PHP関連のことを調べてみた2022年09月21日

PHP関連のことを調べてみた2022年09月21日

PHP POSTとGET送信方法について

今回はGET送信方法とPOST送信方法が別々なので、送信方法についてそれぞれ書いて行く。

POST送信を使う場合
“`php
//main.php

“>

“`

“`php
//edit.php
if(isset($_POST[“id”])){ //変数に値が入っているかどうかを確認するためのisset関数
$id = $_POST[“id”];
}
“`

POST送信の場合は
postの意味の中に 「(時間的に) ~の後の」と言う意味があり、
formで送ったものを「POST」で受け取る時に使用する。

GET送信を使う場合
“`php
//main.php
Laravel 9.x ルーティングの解説

## ルーティングとは

LaravelのルーティングはHTTPリクエストのパスや内容に対応するコントローラに処理を渡す役目をします。

## 公式ドキュメント

https://readouble.com/laravel/9.x/ja/routing.html

## ディレクトリ構成

ルーティングファイルは `routes` ディレクトリの中にいくつかあります。

|ファイル|説明|
|—|—|
|api.php|APIのルーティング|
|channels.php|ブロードキャストチャンネルのルーティング|
|console.php|コンソールのルーティング|
|web.php|一般のWebページのルーティング|

主に利用するのは `web.php` または `api.php` になるかと思います。
LaravelをJSONで返すAPIとして利用する場合は `api.php` に書いていくことになります。

## ビューを表示する

### 基本

“`php:routes/web.php
Route::get(‘/’, function () {
retur

元記事を表示

AWS S3に画像をアップロードできない

# はじめに
PHP Laravelを使ってwebアプリを開発しようとしてたところAWS S3に画像をpublicで保存をしようとしたところエラーが出てきてしまいました。
S3の設定の方で変更をすることで直すことが出来たので、そちらの方法を説明いたします。

# AWS S3に画像をアップロード(エラー)
LaravelのControllerに以下のコードで保存をします。
“`
public function store(PlanRequest $request, Plan $plan) {
$input = $request[‘plan’];
$input += [‘user_id’ => $request->user()->id];
$image = $request->file(‘image’);
// S3に画像を保存
$path = Storage::disk(‘s3’)->putFile(‘/’, $image, ‘public’);
$input += [‘image’ =

元記事を表示

Laravelのデバッグ方法について

#### Laravelのデバッグ方法について

#### ddヘルパーを使って、値を出力する

Laravelでもvar_dumpを使うことができますが、もっと見やすく出力できるddヘルパーというものが用意されています。

“`
dd($hogo)
“`

ddヘルパーに変数を渡して値を出力する

#### loggerヘルパーを使って、ログを出力する

loggerヘルパーを使うと簡単にログを出力することができます。

これを使うと、ファイルに出力してくれるので、こちらもデバッグや変数の内容を確認したい時には使うことができます。

“`
logger($hoge)
“`

渡す引数はddヘルパーと同じで、クラスのインスタンス変数でも文字列でも大丈夫です。

storage/logs/laravel.logにログが出力されます。

storage/logs/laravel.logファイルについては、Laravelでエラーが出た時にもログが出力されるので解決する時に役に立ちます。

ログ出力する際には、他にも下記のようなメソッドが使用できるようになっています。

ログ出力する時

元記事を表示

php-html-parser で スクレイピング

スクレイピングしたい
php-html-parser がいいらしい。
embedというライブラリを使ったがヘッダを抜き出すのは良いが本文を抜き出すのは弱そう。

参考
https://www.utakata.work/entry/php/webscraping-with-php-html-parser

# インスコ♡

“`
composer require paquettg/php-html-parser
“`

おや?依存性エラー?
(関連も一気にアップデートする -w コマンドを使う)

“`
composer require paquettg/php-html-parser -w
“`

`OK`

# それでは、ヤフーニュースから タイトル と リンク を抜き出してみよう

“`hoge.php
$options = new Options();
// $options->setEnforceEncoding(‘utf8’);

$url = ‘https://news.yahoo.co.jp/search?ei=UTF-8&p=%E5%A9%9

元記事を表示

PHP デバック方法 var_dump

## はじめに

PHPのデバックに必ず使うといってもいいような方法とちょっとした工夫もつけくわえます。

## var_dump使ってみる

“`

“`
ブラウザで結果はこんな感じで返ってきます。
array(4) { [0]=> string(5) “apple” [1]=> string(6) “orange” [2]=> string(5) “Grape” [3]=> string(5) “melon” }

“`
‘;//ここを追加 var_dump($array); echo ‘

‘;//ここを追加
?>
“`

これをつけると

“`
array(4) {
[0]=>
string(5) “apple”
[1]=>
string(6) “o

元記事を表示

PHP削除機能実装方法

PhPの削除機能が実装できたため、備忘録として説明する。

前提として、削除ボタンの所に〜phpwo

①DBベース接続する
②ゲットデータを取得する
③SQLにデータ登録する
③値をセットをする
④SQLの実行をする
⑤データ登録後の処理をする

“`php

//①DBベース接続
$pdo = new PDO(“mysql:charset={$char_set};dbname={$db};host={$host}”, $user, $password);

// ②新規作成 start このページにアクセスしたら、
// ゲットデータを取得する。
if(isset($_GET[“id”])){ //変数に値が入っているかどうかを確認するためのisset関数
$id = $_GET[“id”]; //main.phpで入れた内容が入ってくる。

try {//try〜catchすることができる。
//途中で何かしらのエラーが起こしたら、その場で処理が止まって、catchより以下がエラーで返却される。
//catchされず、滞りな

元記事を表示

正規表現:曖昧なパターンはエンジンによって動作が変わる(教訓)

検索してどういうことなのか調査してみようとしたのですが、上手に検索できませんでした…。
検索しても全然それっぽい情報が出てこない!
のでとりあえず記事にしてみます。

もし原因をご存じの方いましたらお教えいただけると嬉しいです…!

# 環境
– グループ1(JavaScript系)
– JavaScript (Firefox 104.0.2)
– JavaScript (Google Chrome 105.0.5195.127)
– グループ2(Perl系など)
– PCRE (PHP 7.3.11 & PCRE 10.32 2018-09-10: [RegExr.com](https://regexr.com/))
– Python 3.10 (re モジュール)
– コメントに頂いた検証:Ruby 3.1.2 (Onigmo)
– コメントに頂いた検証:CotEditor 4.3.4 (ICU)

PCREは「PCRE ライブラリは、Perl 5 と同じ文法構文を用いた 正規表現パターンマッチ処理を実装した関数群ですが、多少異なる点もあります (以下を

元記事を表示

PHP、functionの呼び出し方法

function.phpにある関数をmain.phpへ呼び出す方法は下記の方法になる。

※呼び出す〜〜phpの

元記事を表示

#1【PHP】SQL(SELECT count(*))実行時の戻り値パターンと条件分岐

現在エンジニアを目指してPHPを学習中です。
SQL実行結果の分岐を正しく記述できるようになるべく、
戻り値を確認したので、メモ。

## 前提
以下のコードを実行しました。
DBカラム名等の細かい部分は本筋と関係ないため略します。

“`php
$dbh = new PDO(hoge);
$sql = ‘SELECT count(*) FROM table WHERE column = hogehoge’;
//DBのオプションは下記(正直PDOオブジェクトをはじめ、下記設定の意味はまだよく分かってません、、)
PDO::ATTR_ERRMODE => PDO::ERRMODE_SILENT
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true

//SQL実行、結果を$resultに
$stmt = $dbh->prepare($sql);
$stmt->execute;
$result = $stmt -> fetch (PDO::FETCH_ASS

元記事を表示

【PHP8】 PHP8技術者認定初級試験 ベータ試験を受けてきた

先日2022/08/05、PHP技術者認定機構は[PHP8技術者認定初級試験](https://it.impress.co.jp/articles/-/23590)の実施を発表しました。
本試験は2023年春から開始となります。

で、そのベータ試験が[2022/09/11に行われた](https://www.phpexam.jp/2022/08/05/php8bata/)ので受けてきました。

:::note info
一般社団法人BOSS-CON JAPAN(代表理事:吉政忠志、所在:東京都世田谷区、以下「BOSS-CON JAPAN」)は、BOSS-CON JAPAN内組織であるPHP技術者認定機構がPHP8技術者認定初級試験を2023年春より実施することを発表しました。本ベータ試験を2022年9月11日に東京で開催します。問題作成はPHP技術者認定機構 顧問でもある古庄道明氏が担当し、試験問題の監修をPHP技術者認定機構 エバンジェリストの三雲勇二氏(プライム・ストラテジー株式会社)が担当します。
:::

# 試験について

## 試験内容

・問題数40問
・制限時間60分

元記事を表示

PHP データベース接続

#### データベースに接続
##### 前準備
define(‘定数名’, ‘定数に入れる値’);
定数は変数とは違い、一度設定すると中身を変えるとは出来ない
“`
define(‘DB_DSN’, ‘接続先種別:host=ローカルホスト; dbname=データベースの名前; charset=文字コード’);
define(‘DB_USER’, ‘ユーザー名’);
define(‘DB_PASSWORD’, ‘パスワード’);
“`
この形式を基準として、データベースcri_sortableに接続をする。データベース自体はphpmyadminで作成する。

##### 接続
“`

元記事を表示

PHP Laravelを用いてExcel出力を行う

## 概要
PHP(Laravel)を用いてExcel出力を行う方法を共有します。
以前はPHPExcelが主流みたいでしたが、現在はその後継となるPhpspreadsheetというライブラリが一般的です。
(githubの[README](https://github.com/PHPOffice/PhpSpreadsheet#phpexcel-vs-phpspreadsheet-)にも記載されている通りPHPExcelよりもPhpspreadsheetを使うことが望ましいでしょう。)

今回は社員名簿リストをExcelにて出力します。
ゴールイメージは下記のような感じです。
![スクリーンショット 2022-09-19 1.22.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/823188/67c030f6-a545-c7ed-72c0-3992fec2d755.png)

## 今回やること
– Excel出力/ブラウザからダウンロード
– 列幅の調整
– 行の固定

## 環境
“`
PH

元記事を表示

【背伸び初心者授業③】returnの小技!if文内の条件をreturnする

いつもどんな内容をreturnしていますか?
return $user;
return “登録しました”;
このように、何かしらの「結果」を返していることが多いと思います。

以下は、お皿の数が足りているか確認する関数です。
“`php
$plateNum = ‘9’;
echo answerFromIdo($plateNum);

function answerFromIdo($plateNum)
{
if($plateNum < 10){ $less = 10 - $plateNum; return $less . "枚足りなぃぃい!"; } else { return "足りてる。"; } } // 出力結果 1枚足りなぃぃい! ``` なるほど、1枚足りないようです。 if文の中で一度 "$plateNumが10枚より少ないか" を確認していますね。 今回は10枚でしたが、次回は11枚数えないといけなくなるかもしれません。 枚数が変わっても対応できるようにしましょう。 今回の小技はこのif文内を

元記事を表示

【Laravel 9.x】 artisanで失敗するエラーは./vendor/bin/sailが関係しているかも

この現象は、私同様、Laravelを試してみようという人が中心に引っかかる罠だと思われる。

## 背景と対策

Laravelを下記のように立ち上げた際に、その後マニュアルやチュートリアル通りに進めようとすると、artisan呼び出しの際に様々なエラーが発生する。

下記はWindows環境でDocker Desktopを入れた後に、WSLから下記のように入力するだけで環境の構築が終わるとLaravelのマニュアルにあるので、それに倣った形だ。
“`bash
$ curl -s https://laravel.build/sample-app | bash
$ cd sample-app && ./vendor/bin/sail up
$ php artisan about
“`

これらはartisanの呼び出しを `php artisan` から `./vendor/bin/sail artisan`に変更すると解決する。どこかに書いてあるのに、見逃しているんだろうな…。

## 見られる現象

少し試しているだけでもかなり引っかかった。

### 1. .env用のキー

元記事を表示

PHP 配列

#### 配列
“`
$name = “鈴木太郎”;
“`
通常、変数には一つの値しか入れることができないが配列を使えば複数の値を一つの変数に入れることが可能になる。
“`
$name = [“鈴木太郎”,”鈴木次郎”,”鈴木三郎”];
“`
出力の時は添え字(インデックス)をつける
“`
echo $name[0].’

echo $name[1].’

echo $name[2]
配列は左から0,1,2と番号が振り分けされている。
配列内の要素をすべて取り出したいときはprint_rを使用する
print_r ($name);
“`
“`
$name[0] = ‘taro’;
$name[1] = ‘jiro’;
$name[2] = ‘saburo’;
“`
arrayを使わず直接添え字を指定して値を代入することも可能

##### 連想配列
“`

元記事を表示

【Laravel】artisanコマンドでエラーになった時の対処法

## はじめに
– Laravel9でアプリ作成中に、artisanコマンド実行後にエラーになって、色々試したので残しておきます。

## 状況

– Laravel9で、ルート確認するコマンド実行後に、下記エラーあり。

“`
$ php artisan route:list

# エラー内容
PHP Fatal error: Composer detected issues in your platform: Your Composer dependencies require a PHP version “>= 8.0.2”. You are running 7.4.27. in /Users/xxxxxx/Desktop/project/laravel-study/vendor/composer/platform_check.php on line 24

Fatal error: Composer detected issues in your platform: Your Composer dependencies re

元記事を表示

【便利】phpでpdoするときにSQLクエリエラーを表示したいなぁ

## 初めに
僕・phpで無限ループを使って、MySQLサーバーをいじめるプログラムを作ったよ!でも、なんか動かないみたい。サーバーくん、どうして?

サーバー・無限ループを仕掛けて俺をこき使うような奴には教えねーよ

俺・しょぼん

俺・あ、そうだ、MySQLサーバーくんに聞いてみたらいいかもw

俺・MySQLサーバーくーん、教えて〜

## エラー表示の魔法のコード
“`php
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
“`
pdoの途中に、このコードを挟み込みましょう。
例えば、
“`php
try {
// DB接続
$pdo = new PDO(
‘mysql:host=ホスト名;dbname=データベース名;’,
”,
”,
[PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC]
);

$pdo->setAttribute(PD

元記事を表示

PHP 条件分岐 ループ処理

### 条件分岐
##### if文
“`
if ($ageB < 20) { $message = "こどもだ"; } elseif ($ageB < 59) { $message = "おとなだ!"; } else { $message = "おじいちゃんかな?"; } echo $message; ``` 基本的な文法はrubyと同じ。if後が真の条件。elseifでif後が偽の場合、真の条件。そのほか偽の条件をelseで 処理する。 ##### 三項演算子 もう一つの条件分岐の書き方 ``` (条件)? 真のときの処理:偽のときの処理; $message = ($ageB > 20) ? “大人ってことで” : “子どもってことで”;
echo $message;
“`
複数条件は指定できないが、if elseよりもコード量が少ないため便利。

### ループ処理
##### for文
“`
for(最初の値;ループ上限;値の増減){
実行する処理;
}

for($i=0;$i<10;i++){ echo $i; } 出力は0123456789となる

元記事を表示

【背伸び初心者授業②】explode()の小技!explode()したものに変数を振り当てる

## 「ロミオとジュリエット」から読み解くexplode()
ロミオとジュリエットを例に、phpの関数であるexplode()を解説していきます。
“`php
$couple = “ロミオとジュリエット”;
“`
有名なカップルですね。それではこの2人を`引き剥がし`ましょう。
“`php
$couple = ‘ロミオとジュリエット’;

$people = explode(‘と’, $couple);
var_dump($people);

// 出力内容
array(2) {
[0]=>
string(9) “ロミオ”
[1]=>
string(18) “ジュリエット”
}
“`
使い方はなんとなく理解いただけたでしょうか?
これでいろんなカップルを分けることが出来ますね!

## 本題 : explode()したものに変数を振り当てる。
ロミオとジュリエットを男女で分けたいな…そんなあなたに朗報です。
ロミオを`$man`へ、ジュリエットを`$woman`に入れる方法があります。

“`php
$couple = ‘ロミオとジュリエット’;

[$

元記事を表示

OTHERカテゴリの最新記事