PHP関連のことを調べてみた2020年12月30日

PHP関連のことを調べてみた2020年12月30日
目次

DBのデータを連想配列で取得し、そのデータをoptionタグに使う

ポイントは
・$result->fetch_assoc()により、連想配列としてデータを取得
・optionタグを記述する箇所は、whileの中

“`php

// DB接続の記述は省略


“`

元記事を表示

Github ActionsでPHPバージョンを指定する方法

## 既存Actionsの定義
GithubのActionsを使用し始めてあまり経ってないのでいつも以下のようにシステムOSを最新をして使っていました。

“`

jobs:
build:
name: Testing
runs-on: ubuntu-latest

“`
でも、Composerを利用しているLaravelを使用するとphpのバージョンでVendorのインストール次第ができなくなることがありました。

最初はphpをインストールし直す方法を考えましたが、速度的にも手間が掛かります。

## 改善されたActionsの定義
ところでActionsのモジュールが色々出ているもんで、使えやすいものがありました。

https://github.com/shivammathur/setup-php

上記のものを利用すると簡単に問題が解決されました。

“`

jobs:
build:
name: Testing
runs-on: ubuntu-latest

steps:
– uses:

元記事を表示

Laravelでsession(カート機能実装)についてまとめてみた

#0.はじめに
####この記事について

#####この記事は**「Requestインスタンス」**を用いたセッションに関する記事です。

Laravelを用いた共同開発講座に参加させていただきました。
その中で一際難しく感じたセッションを用いたカート機能の実装についてまとめたいと思います。
同じように悩む誰かの一助になれば幸いです。

転職前の若造の乱筆ですがよろしくお願いいたします。
間違い等あれば喜んで訂正させていただきます。

####簡単に自己紹介
・医療職5年目
・完全独学6ヶ月後、共同開発講座に参加
・転職まであと○○(?)

ではさっそく参ります。
#1.セッションとは

####セッションて何?
**【セッション = データを保存しておく仕組み】**
です。

よくある”session”の説明   >>>  「アクセスの開始から終了までの一連の通信」   
実際の”session”のイメージ  >>>   「カギ」とか「合言葉」みたいな

という感じに、よくある説明と実際の掴みどころが少し違うような気がします。
よくある説明の通り、実現したいことは「アクセスの開

元記事を表示

【Laravel】エラーが出ないのにDBに値が保存できない(割り当ての許可かも)

## 困りごと
PHP歴3ヶ月、Laravel歴1ヶ月の初学者です。LaravelのDBに値が保存できずにハマってしまったので、同じような方が減ることを祈って投稿します。「データの入力→DB保存→DB呼び出し→データの表示」をしようとした際、下図の赤枠のように値が一項目だけ表示されず、エラーも吐き出されないという事象が発生しました。
![example.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/969534/6e38ad07-4b2e-1713-5c67-3b7156dfe12d.png)
(この事象に何度かハマったことが何度かあり、その度に少し悲しくなります…)

## 開発環境
PHP 7.2.34 / Laravel 6.20.5 / phpMyAdmin 4.9.3

## 結論
Eloquentモデルを使ってcreateする際は、Modelクラスに割り当ての許可が必要。
許可の方法はホワイトリスト方式(`$fillable`) or ブラックリスト方式(`$guarded`) 。

##

元記事を表示

PHPでも動的サイトをスクレイピングしたい夜

# はじめに

これはジーズアカデミーAdvent Calendar 2020の記事です!

# 序章 -俺はスクレイピングやるぜ、PHPで。-

だいたいスクレイピングって言うと、相場は`python`って決まってます。
けど、普段PHPを触っているボクは、PHPでスクレイピングしたいんです。

で、PHPでスクレイピングって言うとだいたい`phpQuery`というものが言及されがちです。
確かに、jQueryみたいに操作できるのでかんたんです。
けど、これ**動的サイトにはうまく利用できない**んですね。

だから、他の方法が必要になってきます。

## 今回の対象。
某海外の買い物サイト(一応名前は伏せます。)
以下の様に
1. 検索
2. 一覧表示(一部だけ)
3. 下にスクロールするとスクロールした分だけ情報を取得する
という動きです。
![scraping.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307585/61756928-98bd-b4f9-1fa7-450348f9edbe.g

元記事を表示

Twitter、Google、メールでのログインを実装しよう。

これらの技術を使えば、簡単に実装できます。

## 自前で実装(Twitter,Google)

PHPでTwitterログインを実装しよう
https://dotinstall.com/lessons/tw_connect_php_v3#!lessons

GoogleでログインするWebサービスを作ろう
https://dotinstall.com/lessons/google_connect_php_v2

## BaaS/MBaaS環境を使う。

Firebase
https://firebase.google.com/?hl=ja

## Ruby on Railsを使う

【Rails】ログイン機能を実装する
https://qiita.com/d0ne1s/items/7c4d2be3f53e34a9dec7

## シンプルなPHPでのログイン実装

phpで作る簡素なログイン機能
https://qiita.com/qwertyuiopngsdfg/items/597da67387723a5aedad

PHP5.6でログイン機能を実装しよう
https://doti

元記事を表示

forループで集計処理していた箇所をsqlで改善した

## 改善前

laravelプロダクトの過去の誰かの実装箇所で、レコード数が多くなると劇的に遅くなる箇所あったので、以下発掘したその原因のコード。

(分かりやすさのため、コードの一部改変とコメント追加)

“`php:
// カラム1~10の各値から、$minimum以上の個数を持つものを集計して抽出
$count_array = array_fill(0, 11, array());
$array = $query->get();
foreach ($array as $item) {
for ($i = 0; $i <= 10; ++$i) { if ($item["col{$i}"]) { if (!array_key_exists($item["col{$i}"], $count_array[$i])){ // col{$i}が未出ならカウントを1に初期化 $count_array[$i][$item["col{$i}"]] = 1;

元記事を表示

【GAS】GASにcurlでPOSTしてjsonを送ろうとしたらエラーが出たのでメモ

どうも。
今日はGASにPOSTでjson送ろうとしたらエラーが出てそれにはまってしまったのでメモ。

ソース

“`main.php
$url = “GASのりんく”;
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(‘Content-Type: application/json’));
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, ‘POST’);
curl_setopt($ch, CURLOPT_POSTFIELDS, $senddata_json);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_URL, ‘GASのリンク’);
$result = curl_exec($ch);
var_dump($resu

元記事を表示

【PHP】「mb_strposが使えない」を解決

##背景
php導入後、mb_strpos関数でエラーが出たので備忘録として記載します。

##環境
CentOS Linux release 8.2.2004 (Core)
PHP 7.2.24 (cli) (built: Oct 22 2019 08:28:36) ( NTS )

##エラー情報
コンソール内でmb_strpos関数を利用後、定義されていないとエラー

“`php
php > echo mb_strpos(“ontama”, “a”);
php > mb_strpos PHP Warning: Uncaught Error: Call to undefined function mb_strpos() in php shell code:1 Stack trace:
“`

##原因
Centosの場合デフォルトはmb_strposは利用できないらしく、パッケージをインストールする必要がある模様
マルチバイト文字列関連の関数を使うときに必要なphp-mbstringをインストール

“`bash
[root@localhost etc]# yum ins

元記事を表示

if、else、elsif(elseif)!

#はじめに
駆け出しのプログラミング初心者。
条件分岐(じょうけんぶんき)について、まとめたので投稿しますわ。

##じょうけんぶんきって????
ある条件を指定して、その条件に合っていればコードを実行し、
違ったら別のコードを実行するというような、条件によって実行される処理を分岐させるヤツ?

##if
条件分岐文の代表格。
「もしこの変数が1以上であれば」のような条件を付けて、処理を分岐させる。

★Rubyの場合

“`ruby
number = 2
if number > 1 && number < 10 puts '条件分岐' end ``` ★PHPの場合 ```php 1 && $number < 10){ echo $text ; } ?>
“`
##else
if文の条件式がfalseで実行されない場合に実行させる処理を記述することができる。
if文が実行されるとelse文は実行されず、if文が実行されないとelse文が実行されない。
ちな、else

元記事を表示

【サルが書く】PHP8のunion typesとmixedについて考える

わきゃ!

GIGアドベントカレンダー23日目になります(遅れてすみません!)
GIGメンバーの投稿はこちら? から見てみてね!
https://qiita.com/organizations/gig-inc

PHP8がついにリリースされましたね!

そこで気になった新機能であるUnionTypesとmixed型についてまとめてみました。

# 1. UnionTypes

PHP8以前はプロパティ、パラメーター、および戻り値の型に対して単一の型しか宣言できませんでした。
またPHP7.1以降のバージョンではnull許容型があります。
PHP8以前は限定的なUnionTypesしかできませんでした。
ちなみにnull許容で書く場合は型の前に?をつけることでできます。 `例) ?string`

PHP8以前ではPHPDocを使用してのUnionTypesはありました。

“`php
class Test {

/**
* @var int|float
*/
private $test;

/**
* @param int|float

元記事を表示

PHPのページ遷移で

タグを1つにまとめる方法

お疲れ様です!TaYです:open_hands:

今PHPでECサイトを製作中で、商品の一覧ページから編集、削除、追加などをできるボタンを設置しています。

![スクリーンショット 2020-12-29 15.24.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/957298/932bfa9d-1b1e-9f08-7896-7b7a4c7d7585.png)
↑こんな感じ

通常ボタンを使う場合はボタン1つにつきformタグ1個が定番ですが、このように何個もボタンを追加するとその都度formタグをかかなければなりません:sweat:

“`php:sample_1.php
‘;
echo ‘

‘;
echo ‘‘;

元記事を表示

LaravelとVue.jsを使った見積作成アプリ その2

前回の復習

前回は見積一覧ページと見積編集ページのコントローラーを作成しました。今回はVue.jsを使用し見積編集ページのテンプレートを作成します。

Vue.jsの導入

以下のサイトからnodeをインストールします。

https://nodejs.org/ja/download/

その後ライブラリを使ってnpmをインストールします。

“`
$ npm install
“`

これから、resoueces/js/app.jsの以下の部分を編集することで内容を追加していきます。

“`app.js
const app = new Vue({
el: ‘#app’
});
“`

ターミナルで以下のコマンドを実行することでコンパイルが可能

元記事を表示

remi php74で、PDOないって言われる。

[php7でpdoのmysqlドライバーがない!?](https://teratail.com/questions/37882)より、

“`
yum install –enablerepo=remi,remi-php70 php php-devel php-mbstring php-pdo php-gd
“`

70のところは既にインストールされたremi phpの数値と合わせましょう。
これ使ったらいけました。

元記事を表示

AWS EC2でPHPのexec()でpython3系実行

[Amazon LinuxでPython3系を使う](https://michimani.net/post/aws-using-python3-on-amazonlinux/)
こちらのブログの方法で解決しましたが、少し自分なりに足りないと思ったところを補足して紹介します。

### 大前提:Pyenvのインストール先は、/usr/bin/..にしよう。

他のブログでは、pyenvのインストール先は/home/ec2-user/…のところにあると思うのですが、ec2-userディレクトリは権限が厳しいので、その中にpython3をインストールして、例えば、exec(/home/ec2-user/…/bin/python3.7)とかしても、

“`
permission denied
“`

になります。
だからといって、homeディレクトリや、ec2-userディレクトリの権限を書き換えると、セキュリティの仕様?か何かで、scpやsshでサーバーに入れなくなるという恐ろしいことが起きます。(もしそうなっちゃったら、AWS ec2のインスタンスページからターミナルを開けば解

元記事を表示

AWS EC2のPHP関連でよく使うターミナルコマンド

インストールしたphp一覧

“`
yum list installed | grep php
“`

Apache再起動

“`
sudo service httpd restart
“`

php.iniファイルの編集

“`
sudo vim /etc/php.ini
“`

元記事を表示

データベースを使用して処理を書いてみる備忘録(同じ事前も書いたけど)

データベースの処理を前の記事でも書いたが再度復習として備忘録します。まとめます。

マイグレーションファイルを作成する。

今回は投稿記事としてarticleテーブルを作成します。

“`terminal:ターミナル
php artisan make:migration create_articles_table –create=articles
“`

パスは

database/migrations/2020_12_23_191814_create_article_table
で作られています。

中身は少し書き換えたんでデフォルトより書き換わってますが、

“`php:2020_12_23_191814_create_article_table

元記事を表示

【Laravel ver.8.x】ルーティングの設定(7.xからの変更点)

Laravelの勉強を始めた。
のはいいのだが、使っている本がver6.xベースである為
最新版である8.xからだいぶ様変わりしていて絶賛混乱中。

ということで、自分のためのメモ代わりとして記録。

初学者のため、間違い等ありましたらご指摘いただけるとありがたいです。

##開発環境
MacOS Catalina 10.15.7
Laravel 8.20.1
PHP 7.4.12
Apache 2.4.41
MySQL 5.7.32

##作成したコントローラのルーティング
MVCに準拠した形でコントローラを作成し、そのコントローラへのルーティングを通したい。

ver8.xからルーティングの書き方に大きな変更が加わった。
なぜこんな変更をしたのかはまるで分からない。
Railsしか触ったことがないので、~~めんどくさくて仕方がない。~~

想定しているコントローラはこんな感じ

“`HelloController.php

元記事を表示

Vagrant + Virtulbox CentOS7.8 を構築そして共有フォルダを作成した時にエラーで詰まった話

# Vagrant + Virtulbox CentOS7.8 + Laravel6系
上記の構成で環境構築した時によくホストOSとゲストOSとの
共有を設定する時にエラーで詰まって解決まで3日ぐらいを使って
やった事を書きます。

Vagrant関連はVersionに依存しまくるので
Version記載は意識して備忘録投稿します。

訳あってmacOS Mojaveです。
・ProductName: Mac OS X
・ProductVersion: 10.14.6
・BuildVersion: 18G6042

Homevrew で cask 一元管理
・vagrant 2.2.13
・virtualbox 6.1.16,140961

LAMP環境
CentOS7.8構成
・Apache/2.4.6 (CentOS)
・PHP 7.3.24 (cli)
・mysql  Ver 14.14 Distrib 5.7.32
※conf設定はそれぞれだと思うので省きます。

Composerをインストール
※インストール方法は長くなるので省きます。
・Composer version

元記事を表示

Laravelを使いSendGridでメールを送信する

#SendGridのアカウント登録

###アカウント登録時の注意点
SendGridのアカウント登録の窓口はいくつかありますが、今回は[公式日本サイト](https://sendgrid.kke.co.jp/)から登録を行います。

ほかの窓口としては[sendgrid.com](https://sendgrid.com/)やMicrosoft Azureから登録ができるようです。

※[sendgrid.com](https://sendgrid.com/)からアカウント登録を行うと、[公式日本サイト](https://sendgrid.kke.co.jp/)からはログインができないようです。
おそらく直接sendgrid.comに登録するものと、日本向けの正規販売代理店(KKE)を介して登録する違いによるものと思われます。

###アカウント登録
[公式日本サイト](https://sendgrid.kke.co.jp/)にアクセスし、メールアドレスを入力すると仮登録完了メールが届きます。

![3.png](https://qiita-image-store.s3.ap-nor

元記事を表示

OTHERカテゴリの最新記事