- 1. Aランク問題に挑戦した経緯
- 1.1. WordPessのテンプレートファイル
- 1.2. PHP初心者っぽい書き方の掲示板型メモ帳をリファクタリングしてDDDっぽくする
- 1.3. CSVインポート(Ajax)
- 1.4. [PHP]DatetimeImmutableのコンストラクタはタイムゾーン判定において文字列を優先する
- 1.5. HTTPのPOSTメソッドの「Content-Type」について備忘録
- 1.6. DBのデータを連想配列で取得し、そのデータをoptionタグに使う
- 1.7. Github ActionsでPHPバージョンを指定する方法
- 1.8. Laravelでsession(カート機能実装)についてまとめてみた
- 1.9. 【Laravel】エラーが出ないのにDBに値が保存できない(原因は割り当て許可かも)
- 1.10. PHPでも動的サイトをスクレイピングしたい夜
- 1.11. Twitter、Google、メールでのログインを実装しよう。
- 1.12. forループで集計処理していた箇所をsqlで改善した
- 1.13. 【GAS】GASにcurlでPOSTしてjsonを送ろうとしたらエラーが出たのでメモ
- 1.14. 【PHP】「mb_strposが使えない」を解決
- 1.15. if、else、elsif(elseif)!
- 1.16. 【サルが書く】PHP8のunion typesとmixedについて考える
- 1.17. LaravelとVue.jsを使った見積作成アプリ その2
- 2. 前回の復習
- 3. Vue.jsの導入
?PHP?だけで動くwebパラパラアニメを表現してみた…!!
※PHPアドベントカレンダー大遅刻で申し訳ありません。。。>< ## PHPでアニメーション表現できないのかな..? PHPではサーバーサイドの言語だからアニメーションは無理、どうにかしてjavascriptのようにアニメーションが表現できないか、 ましては、php-cliでコマンドライン上でもなく**ブラウザ上で表現**できないか、完全に誰得なのかわからないものに挑戦してみました。。汗 で完成したものがこれ.. [**▶完成したデモはこちら**](https://matsudapress.com/lab/sandbox/php/red.php?id=0) ※だいぶカクカクですが:upside_down: javascriptやCSS、HTMLもつかっていません。 gif画像など組み合わせたり、遅延時間を調整すればかなり無理矢理だけどアニメーションっぽいことできそう。 キーボード入力情報をうまく連携させれば、無理やり動きのあるゲームっぽいのも可? ## アニメーションっぽく表現するために色々やった試行錯誤 #### 検証① sleepを使って遅延でアニメーションで
PaizaスキルチェックAランクにボコボコにされた話
お疲れ様です!TaYです:open_hands:
今日はタイトルにもある通りPaizaスキルチェックのAランクに挑戦したのでそのお話です。
結果はもう出てますが
__ボコボコにされました。。。:tired_face:__Aランク問題に挑戦した経緯
スキルチェックをやったことがある人ならわかると思うんですが、問題を終えると結果画面(レーティングとかが表示される画面)に移りますよね?
そこでスキルチェック問題一覧へを押すと現在のランクより1つ高いランクの問題ページに移る仕様なんですよ。
ここで脳死でやっていた僕はCランクのつもりで挑戦したら圧倒的に難易度が違う問題がでてきて
__あっ、やらかしたなこれ:rolling_eyes:__
となったわけです。
スキルチェック問題はスタートするともう後戻りができないため、とにかくやるしかありませんでした。
現在僕はBランクの問題をなんとか解けるレベルだったので、100点クリアは無理でも時間内にクリアはできるかな〜と思っていましたが、、、
WordPessのテンプレートファイル
#WordPressのテンプレートファイル
**テンプレートファイル**とは?
WordPressのルールに沿って書かれた**PHPファイル**のことである。##主なテンプレートファイル
| **テンプレートファイル名** | **概要** |
|:— |:— |
| front-page.php | Webサイトのトップページを表示
| single.php | 投稿の記事ページを表示 |
| page.php | 固定ページを表示 |
| category.php | カテゴリーページを表示 |
| search.php | 検索結果ページを表示 |
| archive.php | 記事一覧を表示 |
| 404.php | 404エラーページを表示 |カスタム投稿タイプが「cat」の場合
single-cat.phpがテンプレートファイル名となる
PHP初心者っぽい書き方の掲示板型メモ帳をリファクタリングしてDDDっぽくする
# はじめに
これから新しくPHPで何かを作る場合、どういう構造が良いだろうか。
確認と使い勝手を見るために小さなサンプルアプリを作りリファクタリングで少しずつ変更していくことで違いを体感する。# まずベタ書きで作る
DB定義
“`sql:db/tables.sql
create table article(
article_id integer primary key autoincrement,
title text not null,
body text not null,
created_at timestamp not null default current_timestamp,
updated_at timestamp
);create table tag(
article_id integer not null,
tag text not null,
primary key(article_id, tag)
);
“`最初は全て一つのファイルに書くこととする。
“`php:public/index.php
CSVインポート(Ajax)
#はじめに
非同期通信を用いてCSVファイルのインポート機能にバリデーションチェックまでを含めた手順を記事にしています## 開発環境
– Laravel 8.0
– php 7.3
– goodby/csv: 1.3# UML

## Goodby/CSVのインストール
>Goodby/CSVとはCSVをインポート/エクスポートするためのPHPライブラリまずはターミナル・またはコマンドプロンプトでプロジェクト直下に下記コマンドを打ち込んでください。
composer require goodby/csv上記コマンド後にcomposer.jsonにgoodby/csvが入ってることを確認
“`ruby:composer.json
“goodby/csv”: “^1.3”,
“`## Mo
[PHP]DatetimeImmutableのコンストラクタはタイムゾーン判定において文字列を優先する
この前ハマったので。
結論を先に言うと、`new DateTimeImmutable($time, $timezone);`では`$timezone`よりも、文字列の`$time`のタイムゾーンを優先して判定するということらしいです。# 想定通りに動作したケース
“`PHP:new_jst_datetime_immutable.php
HTTPのPOSTメソッドの「Content-Type」について備忘録
HTTPでのやり取りを実装する中でContent-Typeについて調べたので、備忘録として残しておきます。
## Content-Typeとは
> Content-Type エンティティヘッダーは、リソースのメディア種別を示すために使用します。
> 要求においては (POST または PUT などで)、クライアントがサーバーにどのような種類のデータが実際に送られたかを伝えます。[Content-Type – HTTP | MDN](https://developer.mozilla.org/ja/docs/Web/HTTP/Headers/Content-Type)
構文例:
`Content-Type: application/json;charset=utf8`
`Content-Type: application/x-www-form-urlencoded`
`Content-Type: text/html; charset=UTF-8`実際のリクエストはこんな感じになる。
“`
POST /test HTTP/1.1
Host: xxx.xx.xx.x
Con
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呼び出し→データの表示」をしようとした際、下図の赤枠のように値が一項目だけ表示されず、エラーも吐き出されないという事象が発生しました。

(この事象に何度かハマったことが何度かあり、その度に少し悲しくなります…)## 開発環境
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. 下にスクロールするとスクロールした分だけ情報を取得する
という動きです。

PHPでTwitterログインを実装しよう
https://dotinstall.com/lessons/tw_connect_php_v3#!lessonsGoogleでログインする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/597da67387723a5aedadPHP5.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-incPHP8がついにリリースされましたね!
そこで気になった新機能である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のページ遷移で
お疲れ様です!TaYです:open_hands:
今PHPでECサイトを製作中で、商品の一覧ページから編集、削除、追加などをできるボタンを設置しています。

↑こんな感じ通常ボタンを使う場合はボタン1つにつきformタグ1個が定番ですが、このように何個もボタンを追加するとその都度formタグをかかなければなりません:sweat:
“`php:sample_1.php
‘;
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’
});
“`ターミナルで以下のコマンドを実行することでコンパイルが可能