「php」を含む日記 RSS

はてなキーワード: phpとは

2018-12-11

ガッキーを嫁に貰いたいのにPHP仕事がないないお・・・

月収30万円+ボーナス2回が欲しい

増田では年収高い人が多いので羨ましくなっている現在絶望の30台前半の男です。

そして非正規雇用です。高卒です。

pc(windows)のユーザーサポート業務ばかりやってきました。

pcキッティングや初期セットアップは得意です。

プログラミングはできません。

(phpMySQL大分昔に触れただけです)

HTMLCSSちょっとだけ。wordpressちょっと使える程度です。

サーバードメインコントローラーやらwsusやらがなんちゃってレベルです。

windows10の大型アップデート動作検証などやっています

動画編集aviutlで少しできるくらいです。

ざっくり書きました。

こんなんですが現在地方年収260万円です。

転職したら収入が上がったなどと景気のいい話を聞きますが、私のような人材では難しいと思っています

関東ではそんなに仕事があるのでしょうか。

率直な感想を聞きたいです。

anond:20181211132700

PHPが使えるなら、FTPで丸ごとアップロードできるCMSがあるだろ

Wordpressとか

2018-12-04

増田プログラマー養成講座 その23 SQLを巡る物語

前回は、データベース設計について学びました。

今回は、その他のデータベース話題について見てみましょう。

 

 

リレーショナル・データベース理論

問合型言語SQLは、「関係代数」という計算モデルを基に作られたプログラミング言語

一度「関係代数」について学んでおくと、RDBの使い方について、理解が深まる。

↑このスライド作者さんは他にもDB関係資料作成されてるので見ておくといいかも?

 

 

SQL以外の問合型言語

SQL以外にも「SPARQL」、「TMQL」(Topic Maps Query Language)等、いろいろな問合型言語がある。

実際に使う機会は少ないかもしれないが、「問い合わせ」で処理するという発想は参考になるかも?

 

Datalog

Datalogは「Prolog」(論理言語)を源流にもつ宣言的なデータベース問合せ言語。DatalogはSQLと同等の表現力を持つ。

Datalogは様々なプログラミング言語で利用できる。

 

トピックマップ

トピックマップ」は、本の索引もっと機能にしたような仕組みで、RDBとは違う形でデータを蓄積/検索できる。

 

 

RDB以外のデータベース

SQLを使わないデータベースもある。

 

NoSQL

NoSQL一般に "Not only SQL" と解釈される)とは、関係データベース管理システム (RDBMS) 以外のデータベース管理システムを指すおおまかな分類語である

関係モデルではないデータストアの特徴として、固定されたスキーマに縛られないこと、関係モデルの結合操作を利用しないこと(場合によっては単にそのような機能が欠落しているだけ)、水平スケーラビティが確保しやすい事が多いこと、トランザクションを利用できないものが多いことなどが挙げられる。

学術的な世界では、この種のデータベースのことを構造ストレージ (structured storage) と呼ぶことが多い。

 

NoSQLデータベースは、関係データベースのような汎用性は欠くものの、その制約された条件下ではRDBMSより高いパフォーマンスを持つ。

そのためビッグデータソリューションでしばしば活用される。

NoSQLデータベース管理システム有用な場面は、関係モデル必要としないデータを扱う時や、大量のデータを扱う時である

 

有名な実装として、GoogleBigTableアマゾンAmazon DynamoDBなどがある。オープンソース実装も数多く存在し、例えばMongoDBRedisApache HBase、HyperTable, Apache Cassandraなどがある。

 

 

SQLRDBに慣れたら、NoSQLも調べてみよう!

 

 

その他、データベース関係話題

DB運用管理で学んでおきたい話題を列挙してみよう。

 

 

SQL開発物語

問合型言語学習最後に、SQLを巡る物語も見てみよう。(SQL学習ドラマチックで楽しいものにしたいねw)

 

 

RDB活用すれば、大量のデータを処理して、多くの仕事効率化できる。(金持ちへの扉が開かれる。)

暇があったら、SQL物語登場人物も見ておこう。

 

エドガーフランク・コッド(Edgar Frank "Ted" Codd, 1923年8月23日 - 2003年4月18日)は、イングランドまれ計算機科学者

関係データベース理論的基盤であるデータベース管理関係モデル発明した。

 

1960年代から1970年代、コッドはデータ配置に関する理論を構築し、1970年 "A Relational Model of Data for Large Shared Data Banks" (大規模共有データバンクのデータ関係モデル)という論文を発表した(IBM内ではその1年前に公表している)。

しかし、IBMライバルがそれを実装し始めるまで彼の提案を実行に移そうとせず、コッドは失望した。

当初、IBMはIMS/DB収益を守るため、関係モデル実装することを拒んだ。

コッドはIBM顧客自身モデル実装した場合可能性を提示し、顧客からIBM圧力をかけさせた。

そこでIBM関係モデル実装を開発する System R プロジェクトを Future Systems プロジェクトに含める形で立ち上げたが、その開発チームとコッドは分離され、しかもコッドの理論精通した者はチーム内にいなかった。

結果として彼らはコッドの Alpha 言語を使わずリレーショナルでないSEQUEL言語を開発した。

 

ラリーエリソンSEQUEL 完成前に発表された論文に基づいて Oracle を完成させ、先に発売している。

IBMは、SQL/DS を発売した。

幹部技術音痴だと、部下の名案も却下してしまうんですね?

 

ローレンス・ジョセフ・エリソン(Lawrence Joseph Ellison、1944年8月17日 - )は、データベースソフトをはじめとする大手ビジネスソフトウェア企業オラクルコーポレーションの共同設立者であり、元CEO会長CTOである

2014年現在総資産は500億ドルで、世界で5番目の富豪である

 

ニューヨーク出身アシュケナジムユダヤ人母親フローレンススペルマン(Florence Spellman)は出産当時未婚の19歳で、生後9ヶ月のラリーシカゴに住む叔母リリアンエリソンとその夫である義理叔父ルイスエリソン養子として引き取ってもらった。ラリーは実の母の名も知らず育ったが、48歳の時に初めて対面した。

 

高校時代秀才だが、無愛想な生徒だった。イリノイ大学アーバナシャンペーン校に二年生まで通っていたが、リリアンの死後まもなく退学。カリフォルニア州北部で夏を過ごした後、シカゴ大学で学ぶために実家に戻ったものの三ヶ月でまたも退学し、カリフォルニア移住。この頃、コンピュータに触れ始めている。

 

1970年代エリソンはアンペックスで働いた。彼の関わったプロジェクトのひとつCIA向けデータベース開発があり、彼はそれに「オラクル (Oracle)」と名づけた。

エリソンエドガー・F・コッドのリレーショナルデータベースシステムに関する論文 A Relational Model of Data for Large Shared Data Banks に触発され、1977年自己資金1400ドルオラクル設立した。

彼はIBMのSystem Rデータベースがコッドの理論に基づいたものであると聞き、Oracleもこれと互換性のある製品にしたかったのだが、IBMエラーコード秘密にすることによって互換製品が出てくるのを防いでいた。

オラクル最初製品Oracle 2であり、Oracle 1は存在しない。このリリース番号は、それ以前のバージョンバグが全て解決されていることを暗示しようとして付けられた。

 

1997年8月ラリーエリソン親友スティーブ・ジョブズアップルに戻った後、同社の取締役就任した。2002年9月20日取締役会に出席する時間が充分に取れないことを理由アップル取締役を辞任した。

この人、キャラクター的にはあまりきじゃないけど、行動力はすごいね

コッド博士論文を見て自分RDBを作っちゃった!

Oracleバージョンを「2」から始めて、改良されているように見せかける。~ちょっと詐欺っぽいけど、商売うまい?w

 

 

 

SQLデータベース活用して、素敵なアプリWebサービスを開発してください。

では、これでいったん、増田プログラマー養成講座を終了します。

御清聴いただき、どうもありがとうございました。

 


anond:20181015215004 未経験からプログラマーなんだが全然からない

anond:20181016015826 増田プログラマー養成講座 その1 パソコンの用意

anond:20181016164341 増田プログラマー養成講座 その2 プログラム=データ+処理、プログラム言語の種類

anond:20181016180059 増田プログラマー養成講座 その3 構造プログラミングの基本(順次、反復、分岐

anond:20181016193144 増田プログラマー養成講座 その4 子ども向け教材「Scratch」で構造プログラミングの練習

anond:20181017161003 増田プログラマー養成講座 その5 オブジェクトとは何か?

anond:20181017191404 増田プログラマー養成講座 その6 OOPの種類、PHPの準備

anond:20181019181549 増田プログラマー養成講座 その7 OOPの仕組み(前半)

anond:20181020230044 増田プログラマー養成講座 その8 OOPの仕組み(後半)

anond:20181022232327 増田プログラマー養成講座 その9 MVCフレームワークを使ってみよう

anond:20181023184616 増田プログラマー養成講座 その10 OOP参考書

anond:20181024214133 増田プログラマー養成講座 その11 データベースを使ってみよう

anond:20181026145516 増田プログラマー養成講座 その12 データベース参考書

anond:20181028152656 増田プログラマー養成講座 その13 SQL文法

anond:20181031014212 増田プログラマー養成講座 その14 Webアプリの試作品作成

anond:20181101225335 増田プログラマー養成講座 その15 Webアプリの完成見本

anond:20181101230220 増田プログラマー養成講座 その16 Webアプリの完成見本(続き)

anond:20181104161900 増田プログラマー養成講座 その17 Webアプリの骨組み

anond:20181104233013 増田プログラマー養成講座 その18 SQLデータの追加と取得

anond:20181110120715 増田プログラマー養成講座 その19 SQLデータ更新

anond:20181110182445 増田プログラマー養成講座 その20 SQLデータの削除

anond:20181111205255 増田プログラマー養成講座 その21 データベース設計 (1)要件定義

anond:20181119224031 増田プログラマー養成講座 その22 データベース設計 概念物理

anond:20181204142213 増田プログラマー養成講座 その23 SQLを巡る物語 ←★今ここ★

anond:20181024214737 増田プログラマー養成講座 コンテンツ一覧

2018-12-03

平成最後だしポンコツSE転職事情さら

平成最後だし、なんかい不況が来るかもわからない状況な気もするし、

今のうちに年収上げておきたいなんて考えている人もいるのかなと思い、

本当に普通な感じで埋もれているエンジニア転職した時の話をしようと思う。

現在私は同業界大手企業で働いている。転職結果としては年収も大きく上がったし、

職場環境も申し分ないので成功したと思っている。

 

スペック転職時)

 年齢:39歳

 

 <前職>

 中堅の独立系SI企業WEBSierもやってるような感じ)社員600名程度

 に所属していた。勤続は7年目

 

 <技術力>

 技術力はほんとに並の下程度。

 JavaとかPHPとかやっていて、PHPがメインだったかな。主にWEBサービスを作ったり、社内WEBシステム作ったりしてた。

 プログラミングの基礎はあるし、SQLやその他DB知識もそれなりにある。サーバー知識あんまりないし、

 Linuxコマンドは正直ちょっと苦手だし、AWSとか触ってないし、なんならApacheだってそんなに詳しくない。

 ググっていつも解決する。フルスタックエンジニア?なんだそれ?こちサーバーサイドエンジニアだ、文句あんのか?

 

 新しい技術言語は基礎があるので飲み込みは早い方だと思う。なので対応力はある方だ。Rubyでもpythonでもコード見れば読めるし、

 大抵のことは理解できると思う。でも業務では使ってない。JQureyもまぁ普通に使えるけどJSコードとかたぶん汚いと思う。

 

 色々と新しい技術をググって記事見たりして「わかった気になるタイプ」だと思う。36歳くらいでやっと「デザインパターン

 知らないとやばいんだ。勉強しないと!と焦って本だけ一応読んで「わかった気」になった。

 

 ここまで読めばわかると思うけどエンジニアとしてはだいぶ「ポンコツ」だ。

 でも仕事のためにやってるエンジニアとか結構こういう人が大半な気もするんだよね。

 立ち位置は開発リードとか設計とか上流も少しやってた。年齢のせいもあると思うけど、

 まぁうまく立ち回って仕事してた感じだと思う。コミュ力はそれなりにある方だと思う。

 もうエンジニアとかお前が名乗るなよとか言われそうだな。。。すまん。

  

転職活動の経緯

転職理由

 このまま、今のポジション仕事を続けてたら永遠に新しいこととか他の言語を使って業務をすることができそうになかったから。

 嘘だ、人間関係だ。ほとほと同僚、後輩、パートナーに愛想が尽きたからだ。それと上司やその上の部長にもだ。

 客先で顧客と一緒に仕事をしてたが顧客側の人はほんとにまともで良い人ばっかりだった。転職する時にそれだけ、ちょっと寂しくなったな。

 ポンコツながらプロジェクトでは納期を守り何とかやり抜いてきたが、全く評価されない現実もあり、それも嫌だった。あと、給料安い。

 表向きはいろんな理由があるだろうけど、転職する人の理由はきっとこれが現実だと思う。

 

概要

 転職を決意

 ↓

 とりあえずビズリーチよさそうねとか何も吟味せず登録

 ↓

 エン転職にも登録(以前使ったから)

 ↓

 DODAリクルート系は良い思い出が一切ないので登録してない。

 ↓

 ギークリーというところからビズリーチ経由で勧誘

 ↓

 一応そこの担当面談してギークリー利用

 ↓

 ビズリーチギークリーとエン転職転職活動

 ↓

 ビズリーチ経由でA社で外資強めの転職エージェントに会う。

 ↓

 ビズリーチ経由でB社で金融ITに強めの転職エージェントに会う

 ↓

 最終的にA社で3社応募して、2社内定をもらい転職した。

<詳細と雑感>

 転職しよう!と思ってからとりあず動けーーー!って感じで動いた感じです。

 総応募数は覚えてないけど30~50社くらいだったと思う。書類で超落ちる。年齢のせいも大きい。

 エン転職スカウト全然ダメだった。めぼしい企業がなかったし、年齢のせいか知らんけど、

 タクシーちゃんとかトラック運転とかそういうのも来てた。

 ギークリーから応募したのが一番多いと思うけど、とにかく手あたり次第に紹介してくる。

 よさそうな企業もあったけど、面接まで行ったのは4社程度ですべてお祈りだった。

 2次や最終までは行くが、いまいち紹介された企業自分志望動機を合わせる作業がどうにも苦手でうまく行かなかった。

 ギークリーはほんとに求人が多いから、たくさん見て選びたい人には向いてると思うけど、自分には向いてなかったな。

 他にもビズリーチ経由で4社くらい直接カジュアル面談があったけど、有名なY社とか、運輸系のY社のシステム会社とか、

 印刷系のD社の子会社とか、どれも最初カジュアル面談で、それ以後連絡なかったなぁ。

 カジュアルと言いながらガチ面接なこともあったな。

 

 そんな感じで行き詰って2か月。心機一転また別のところ!というのと、

 自分でもう一度ポンコツなりに職務経歴書を頑張ってブラッシュアップし、面接対策もして、改めてA社とB社とつながった。

 B社からの紹介はとても面白い会社だったし、一次面接もかなり好感触だったのだが、なぜかその後に論文筆記があり、

 書いて出したら、落ちた。どうやら思想が合わなかったらしい。

 A社から紹介されたのが、医療系のWEBサービスの会社と誰もが知ってる大手企業

 どうやら大手企業とは結構つながりのあるエージェント会社だったみたい。

 自分大手に行けるか半信半疑だったが、面接対策結構しっかりしてくれて助かった。

 同じ質問面接でされたので、うまく答えることができたと思うし、職務経歴書も一緒に見てくれた。

 そして、2か月でこの医療系の会社大手から内定を頂いた。転職活動は実質4か月くらい。

 どちらも良い会社だったので、本当に迷ったが、大手の方にした。

 断るのもエージェントがやってくれるのでこれも結構気持ちが楽だった。

 

<振り返って思うこと>

 ポンコツなりにアピールできるポイントがあれば、それをしっかりアピールするような職務経歴書を作ったり、

 私の場合は3回目の転職だったので、今までの経歴をきちんとよどみなくアピールできるような練習有効だった。

 転職活動初期は全然対策してないこともあって、やっぱり落ちたのかなと思う。

 だんだんエンジンがかかって、面接にも慣れていき、最終的に大物ゲットできた感じだ。

 そして、面接ではやっぱり自分はできる奴だ!ということをちゃんアピールした方がいいと思った。

 謙遜かいらないし、こういう職務なんですができますか?と言われても、普通に全然問題ないです。くらいに言ってもいいと思う。

 

 ハイスペックエンジニアかいやいや十分すごいですわ的なエンジニアは、自分活動して、普通に交渉もして、

 自分がより有利な環境を手に入れることができると思うけど、私のようなポンコツ普通にエージェント使って、

 普通に応募して、面接対策しっかりして、志望動機ちゃんと頑張ってたくさん考えて、ちゃんと喋る練習して、それで行けば結構いけると思う。

 落ちるのはやっぱり職務経歴書がまだちゃんと練れてないのと、面接練習や、志望動機が甘いんだと思う。そこを頑張れば良い環境転職できると思う。

 

 おススメのエージェントとかは特にいかな。自分に合ったもの自分転職活動しながら、見つけるのが良いと思う。

 1つ言うならエージェントを1つに絞らないことかな。忙しくなるけど、いろんな所と付き合って、自分に合うところを見つければいいと思う。

 そういう意味ではビズリーチは大小さまざまなエージェント会社があり、そこから連絡がバシバシ来るので登録しておくとよいかもしれないです。

 

<まとめ>

こんな感じだ。読み返すとあんまり参考にならないかもしれない。。。

私は前の会社全然評価されなかったが、今の大手に移ったら、普通に評価が上がって、給料もしっかり上がった。

環境次第で人の評価って全然変わるし、所詮評価する側のフィルターをかけた評価なんてやっぱり気にしなくていいんだと思った。

実際前職の部長退職の旨と転職先の話をした時に「子会社ですか?」とか言われたし、「いえ、本体です。」と答えたら「マジで?」という顔をしてた。

部長フィルターでは自分評価はそんな感じだったんだなと実感した。

ももちろん良いフィルターをかけて評価してもらっていると思うけど、自分にとってどっちが良いかは明白だし

その良いフィルターが本当になるようにもっと努力したいと思う。

 

今の市況ならほんとに転職すれば年収上がるくらいの状況だし、勤続3~5年以上で、

自分の現状に不満があるなら、いっちょやってみるのも良いかもしれません。

誰かの参考になれば幸いです。

2018-12-01

最初から完璧を目指すから着手できない罠

最初はβ版と割り切って、適当に作ればいい。

WebサービスなんてPHPMySQL簡単に作れる。

流行ったら、改善はその後でもいい。(利益が出るなら外注してもいい)

2018-11-29

anond:20181129152300

Javaよりマシ

JavaEclipseだとかのデバッガ使うより、var_dumpで全部出してくれるPHPのほうがよほど楽

PHP+Javascript環境

JSのほうはブラウザデバッガがついてるけど、PHPのほうはデバッグ環境を整えてくれなくてひたすらログ出力でデバッグさせられてつらい。

ほかの人は、ログ出力さえほとんど使わずに開発してるっぽい。

コードの動きを頭脳だけでトレースできちゃうんだろうな。

2018-11-25

早く滅びてほしい言語

PythonRubyJavascriptPHP

Perlは許した。

anond:20181125023506

知り合いのPHP使いと俺のやりとりまんまだわwww

まあPHP使い皆んながこうだとは言わんがw

中小SI屋の弊社の新人研修言語、今はなんなんだろう

COBOL→C→JavaPHP

と変遷したはず

今はC#あたりだろうか

PHPerのコンプレックスは異常

ぼく「OOP…」

PHPer「PHPはもはや5系の頃とは違う!別言語と言っても良い!(フンガー!」

ぼく「お、おう。。どの辺が変わったの?」

PHPer「致命的エラー例外投げるようになった!戻り値の型を指定できる!匿名型が使えるようになった!」

ぼく「へ、へえ〜。。結構OOPやすくなってそうだねえ。。(他のOOP言語にはふつうにありそうな機能ばかりだけどな...)」

PHPer「だからRubyはクソ!」

ぼく「???

2018-11-19

増田プログラマー養成講座 その22 データベース設計 概念物理

前回は、DB設計の(1)要件定義を学びました。

今回は、DB設計の(2)概念設計、(3)論理設計、(4)物理設計を見てみましょう。

 

DB設計の流れ

  1. 要件定義
  2. 概念設計
  3. 論理設計
  4. 物理設計

 

DB設計の教材

データベース解説本やWeb記事を調べてみた。

  1. 本「スッキリわかるSQL入門」 第12章 テーブル設計 https://book.impress.co.jp/books/1111101167
  2. Web記事「できるエンジニアになるためのちょい上DB術」 https://www.edifist.co.jp/lecture/dbdesign/

 

スッキリわかるSQL入門」のDB設計説明コンパクトにまとまっていて、分かりやすいと思いました。(是非一度読んでみてください。)

 

 

 

概念設計論理設計物理設計概要

スッキリわかるSQL入門」第12章の説明(p.374)を参考にしてみよう。(詳しくは本を読んでみてください。)

 

概念設計

管理すべき情報はどのようなものなのかを整理します。

データベースシステムに関することは考えず、要件に登場する情報だけをザックリと把握します。

たとえば、家計簿データベースであれば、扱うべき情報として「利用者情報」や「入出金情報」などがあることを明確にします。

また、情報間で関連がある場合、どのような関係があるかも併せて整理します。

 

論理設計

概念設計で明らかになった各情報について、RDBを使う前提で構造を整理し詳しく具体化していきます

論理設計では「どのようなテーブルを作り、それぞれのテーブルにどのような列を作るか」まで明らかにすれば十分です。

型や制約など、付随的な部分については考えません。

 

物理設計

特定DBMS製品(たとえばMySQL)を使う前提に立ち、論理設計で明らかになった各テーブルについて、その内容を詳しく具体化していきます

すべてのテーブルのすべての列について、型、インデックス、制約、デフォルト値など、テーブル作成必要なすべての要素を確定させます

この物理設計に基づいて、CREATE TABLE文などを含む一連のDDL文を作成し、最終的にデータベース内にテーブル作成することができます

 

本書の「図12-4 データベース構築のおおまかな流れ」も参考にして欲しい。

入力 お客様要件(全国の倉庫商品があって、その在庫管理したいんだけど~)

 

 

●処理 DB設計作業

 ・概念設計:(商品)(在庫)(倉庫) …ER図を作成

 ・論理設計:[商品][在庫][倉庫]    …正規化

 ・物理設計:[SHOHIN][ZAIKO][SOUKO]  …使うDB仕様に合わせてテーブル定義表を作成

 

 

●出力 DDL

 ・CREATE TABLE

 ・CREATE VIEW

 ・CREATE INDEX

 

 

 

(2) 概念設計

 

ER図とは?

ER図とは、「Entity-relationship Diagram」(実体関連図)の省略形だ。

 

ER図の用語

コンピューター用語英語ばっかりだから日本語にして欲しいよねw

 

ER図の書き方
  1. エンティティ―」は四角い箱で書く。
  2. 箱の中にエンティティ―の詳細な中身=「アトリビュート」を書く。
  3. 箱と箱を「リレーション」の線でつなぐ。
  4. 線の両端に「カーディナリティー」「オプショナリティー」の記号を書く。

 

ER図で使う記号は、「IE記法」や「IDEF1X記法」など、いろいろな規格がある。

情報処理技術者試験のデータベーススペシャリストの問題では、「UML」という図の記法も使われる。

 

 

 

(3) 論理設計

 

正規化とは?

正規化 Normalization」とは、データの形を「正規形」(Normal form)に変えること。

ざっくり言うと、テーブル(表)を分割して、データの重複や不整合を解消する作業だ。

 

テーブルの形を変えていくステップには、第1~第5まで5段階ある。

  1. 第1正規
  2. 第2正規
  3. 第3正規
  4. 第4正規
  5. 第5正規

それぞれの変形方法について理解しておこう。

実務では第3正規形まで正規化できればとりあえずOK

 

第3.5正規形(ボイス-コッド正規形)

第3正規形をより厳密にした「ボイス-コッド正規形」という形もある。

第3と第4の間なので「第3.5正規形」とも呼ばれている。

(ボイス-コッド形もカウントに入れたら、第1~第5、+第3.5で計6段階になる。)

 

非正規

正規化を進めると、SQLJOIN」の利用が増えてくる。JOINを多用する処理は遅い=DBの性能低下につながる。

第3正規形まで分割しても、実際に使ってみて遅い場合は、第2正規形や第1正規形に戻して使うこともある。これを「非正規化」とか「正規化を崩す」などという。

 

RDBでは処理速度が遅くなる場合、代わりに「NoSQL」を使う場合もある。

 

 

 

(4) 物理設計

 

時間がない場合、先にGUIDB管理ツールでデータベース作成してしまい、その後でテーブル定義表を作成することもある。

 

DB設計に慣れてきたら上記の各段階はすっ飛ばして、いきなりデータベースを作れるようになるだろう。

 

ここまで、SQLの使い方やデータベース設計について学びました。

次回は、その他のSQLに関連する話も見てみよう。

 


anond:20181015215004 未経験からプログラマーなんだが全然からない

anond:20181016015826 増田プログラマー養成講座 その1 パソコンの用意

anond:20181016164341 増田プログラマー養成講座 その2 プログラムデータ+処理、プログラム言語の種類

anond:20181016180059 増田プログラマー養成講座 その3 構造プログラミングの基本(順次、反復、分岐

anond:20181016193144 増田プログラマー養成講座 その4 子ども向け教材「Scratch」で構造プログラミング練習

anond:20181017161003 増田プログラマー養成講座 その5 オブジェクトとは何か?

anond:20181017191404 増田プログラマー養成講座 その6 OOPの種類、PHPの準備

anond:20181019181549 増田プログラマー養成講座 その7 OOPの仕組み(前半)

anond:20181020230044 増田プログラマー養成講座 その8 OOPの仕組み(後半)

anond:20181022232327 増田プログラマー養成講座 その9 MVCフレームワークを使ってみよう

anond:20181023184616 増田プログラマー養成講座 その10 OOP参考書

anond:20181024214133 増田プログラマー養成講座 その11 データベースを使ってみよう

anond:20181026145516 増田プログラマー養成講座 その12 データベース参考書

anond:20181028152656 増田プログラマー養成講座 その13 SQL文法

anond:20181031014212 増田プログラマー養成講座 その14 Webアプリの試作品作成

anond:20181101225335 増田プログラマー養成講座 その15 Webアプリの完成見本

anond:20181101230220 増田プログラマー養成講座 その16 Webアプリの完成見本(続き)

anond:20181104161900 増田プログラマー養成講座 その17 Webアプリの骨組み

anond:20181104233013 増田プログラマー養成講座 その18 SQLデータの追加と取得

anond:20181110120715 増田プログラマー養成講座 その19 SQLデータ更新

anond:20181110182445 増田プログラマー養成講座 その20 SQLデータの削除

anond:20181111205255 増田プログラマー養成講座 その21 データベース設計 (1)要件定義

anond:20181119224031 増田プログラマー養成講座 その22 データベース設計 概念物理 ←★今ここ★

anond:20181024214737 増田プログラマー養成講座 コンテンツ一覧

2018-11-13

CもC++C#F#GoPythonPHP,Perl,Java,JavaSCRIPT,80アセンブラ,68アセンブラ,Bash,Csh,Powershellも書けるというのに

英語がぜんぜん使えないのはなぜだ。

2018-11-11

増田プログラマー養成講座 その21 データベース設計 (1)要件定義

前回まで、データベースを使ったWebアプリ作成して、SQLの使い方を学びました。

今回からデータベース設計について学んでみよう。

 

参考書

これらの参考書ガッツリ読めば、データベース設計のやり方は分かる。

 

リレーショナル・データベースは昔からある枯れた(=安定した)技術なので、鉄板ノウハウが蓄積されている。

先人の知恵に沿って使うなら、データベース設計で悩む余地は少ない。=攻略は意外と簡単

 

データベーススペシャリスト教科書

経済産業省認定情報処理技術者試験で「データベーススペシャリスト」という資格もある。

 

データベースエンジニア」という肩書きを名乗れば、ただのプログラマーよりも高給取りになれる。勉強した後、自分知識棚卸してみるつもりで資格を取ってみるのもいいだろう。

データベーススペシャリスト試験教科書には、浅く広くDB知識網羅されているので、1度眺めてみたらいいかも。

 

 

 

データベース設計の流れ

データベース設計(database design)は、ソフトウェア開発工程においてデータベースの詳細なデータモデルを作る工程である

 

  1. 要件定義:「CRUD表」の作成
  2. 概念設計:「概念モデル」の作成 → ER図(実体参照モデル)の作成
  3. 論理設計:「論理モデル」の作成 → テーブル定義表の作成
  4. 物理設計:「物理モデル」の作成 → 論理モデルを実際にデータベース上で作成インデックス作成など

(分類方法にもよるけど)データベース設計は、このようなステップを経る。それでは順番に見ていこう。

 

 

 

1.1 永続化するデータを決定する

いわゆる「要件定義」だ。

実際にシステムを使うことになるユーザーヒアリング調査して、データベース内に永続化(格納)すべきデータを決定する。

 

CRUD表とは?

データCRUD操作(Create 追加、Read 参照、Update 更新Delete 削除)が、いつ、どこで発生するか?をまとめた表のこと。

 

データベース 設計 CRUD表」等のキーワードGoogle画像検索してみよう。どんな表か分かる。

↑このページの「図2 標準的CRUD図(例)」みたいな表を作って確認すれば、扱うデータの過不足がなくなる。

 

複雑なシステムだと、完全なCRUD表を作るのは面倒だよねw

だが安心して欲しい!

押さえておくべきポイントはあるので、そこだけ手抜きをしなければ、大失敗は避けられるだろう。

 

マスタートランザクションの違い

実は、後でテーブルを作るときに、データ更新頻度によって2種類に分類できるんだ。

 

 

トランザクションデータの扱いは、気を付けないとデータベースの性能低下に直結する。

どっちのタイプデータなのか?要件定義の段階から見分ける癖を付けておこう。

 

要件定義練習

試しに、Amazonのような通販サイトなら、どんなデータを扱うことになるのか?想像してみよう。

仕入先、在庫数、受発注配送会社顧客情報商品カテゴリー、商品スペック、などいろいろあるだろう。

いつどこでCRUDが発生するか?どれがマスターデータで、どれがトランザクションデータだろうか?

 

 

 

(ここまでの説明URLを8個も貼ってしまったので、続きは次回にしよう。)

次回は「概念設計」以降のステップを見てみよう。

 


anond:20181015215004 未経験からプログラマーなんだが全然からない

anond:20181016015826 増田プログラマー養成講座 その1 パソコンの用意

anond:20181016164341 増田プログラマー養成講座 その2 プログラムデータ+処理、プログラム言語の種類

anond:20181016180059 増田プログラマー養成講座 その3 構造プログラミングの基本(順次、反復、分岐

anond:20181016193144 増田プログラマー養成講座 その4 子ども向け教材「Scratch」で構造プログラミング練習

anond:20181017161003 増田プログラマー養成講座 その5 オブジェクトとは何か?

anond:20181017191404 増田プログラマー養成講座 その6 OOPの種類、PHPの準備

anond:20181019181549 増田プログラマー養成講座 その7 OOPの仕組み(前半)

anond:20181020230044 増田プログラマー養成講座 その8 OOPの仕組み(後半)

anond:20181022232327 増田プログラマー養成講座 その9 MVCフレームワークを使ってみよう

anond:20181023184616 増田プログラマー養成講座 その10 OOP参考書

anond:20181024214133 増田プログラマー養成講座 その11 データベースを使ってみよう

anond:20181026145516 増田プログラマー養成講座 その12 データベース参考書

anond:20181028152656 増田プログラマー養成講座 その13 SQL文法

anond:20181031014212 増田プログラマー養成講座 その14 Webアプリの試作品作成

anond:20181101225335 増田プログラマー養成講座 その15 Webアプリの完成見本

anond:20181101230220 増田プログラマー養成講座 その16 Webアプリの完成見本(続き)

anond:20181104161900 増田プログラマー養成講座 その17 Webアプリの骨組み

anond:20181104233013 増田プログラマー養成講座 その18 SQLデータの追加と取得

anond:20181110120715 増田プログラマー養成講座 その19 SQLデータ更新

anond:20181110182445 増田プログラマー養成講座 その20 SQLデータの削除

anond:20181111205255 増田プログラマー養成講座 その21 データベース設計 (1)要件定義 ←★今ここ★

anond:20181119224031 増田プログラマー養成講座 その22 データベース設計 概念物理

anond:20181024214737 増田プログラマー養成講座 コンテンツ一覧

[]2018年11月10日土曜日増田

時間記事文字数文字数平均文字数中央値
006710683159.449
01508608172.248
02223825173.948.5
03215617267.525
041985745.138
051157452.240
0622204492.940.5
0731295795.457
08548958165.974
09749056122.450.5
1093889995.743
11130916770.538
127915319193.948
139310214109.847
14769001118.442.5
159814516148.153
16105955791.058
1785401447.232
186210497169.360.5
1985499258.731
20616124100.448
211451073974.141
2211917378146.038
231421145980.744
1日1744195055111.845

頻出名詞 ()内の数字単語が含まれ記事

人(175), 自分(145), 今(91), 日本(77), 話(58), 増田(57), 前(53), 仕事(52), 女(51), 相手(50), 好き(50), 必要(49), 女性(47), 人間(47), あと(45), 男(44), ー(44), 意味(42), フェミ(42), 普通(41), 問題(38), 気(38), 理由(37), 感じ(36), 日本人(36), 子供(35), 原爆(35), 他人(33), 気持ち(33), 金(32), オタク(32), 頭(31), 目(30), 内容(30), 時間(29), 世界(28), 男性(27), レベル(27), 英語(27), 親(27), 大学(26), 言葉(26), 関係(26), 無理(26), 全部(26), しよう(25), 他(25), ネット(25), 最近(25), 一番(24), 自由(24), 国(24), 結婚(23), 理解(23), 手(23), 迷惑(23), 美人(23), 存在(22), 趣味(22), 今日(22), ゲーム(22), 昔(22), 嫌(21), じゃなくて(20), 場合(20), b(20), 世の中(20), 幸せ(20), 結局(20), お金(20), 漫画(19), 完全(19), 状態(19), 社会(19), 無料(19), 会社(19), 車(18), 結果(18), 事実(18), 説明(18), 心(18), 一人(18), 子(18), 時代(18), 最初(18), 誰か(18), アニメ(18), 映画(18), 別(18), 表現(17), 人生(17), ダメ(17), しない(17), タイプ(17), 正直(17), 勉強(17), シコ(17), ファン(17), バカ(17), 土(17), 家(17), 無駄(17), 先(17)

頻出固有名詞 ()内の数字単語が含まれ記事

日本(77), 増田(57), フェミ(42), じゃなくて(20), 表現自由(16), BTS(15), ネトウヨ(14), KKO(13), 韓国(13), 東京(13), 可能性(12), わからん(12), アメリカ(11), 外国人(11), 中国(11), いない(11), 京都(10), いいね(10), 基本的人権(10), OK(10), Twitter(9), 婚活(9), 価値観(9), hatena(9), 20代(9), 基本的(9), 元増田(9), アプリ(9), いいんじゃない(9), キモ(9), biz(9), 自分自身(8), なのか(8), ぶっちゃけ(8), f8(8), f6(8), d1(8), s(8), なんだろう(8), …。(8), にも(8), 自己紹介(8), b6(8), ブクマ(8), SNS(8), twitter(8), 10年(8), php(8), 個人的(8), 専業主婦(7), お気持ち(7), 精神的(7), 毎日(7), 被害者(7), f1(7), w(7), b1(7), a(7), 奨学金(7), b2(7), なんの(7), f5(7), な!(7), キズナアイ(6), ポリコレ(6), ttp://(6), 笑(6), bb(6), 生産性(6), fe(6), amp(6), トラバ(6), ゾーニング(6), 2人(6), ブクマカ(6), フレームワーク(6), ガチ(6), スマホ(6), ニート(6), 1年(6), ブコメ(6), 5年(6), 下方婚(5), individual(5), 14億(5), コレ(5), アレ(5), 30代(5), 昭和(5), 最低賃金(5), 1週間(5), PC(5), 一般的(5), reception(5), cytbunxi(5), ホッテントリ(5), コチラ(5), 夫婦(5), ブログ(5), member(5), マジで(5), ディオ(5), e4(5), AI(5), b4(5), aa(5), 異世界(5), チョコパイ(5), メルカリ(5), 論理的(5), 1人(5), キモい(5), ナチス(5), key(5), 一緒に(5), 100%(5), 何度(5), 3p(5), 自分たち(5), n/(5), Web(5), おまえら(5), 1回(5), URL(5), p(5), パティシエ(5), 犯罪者(5), ラノベ(5), キチガイ(5), スマブラ(5), ???(5), mkey(5), 仕方がない(5), 萌え絵(5)

本日の注目単語 ()内の数字単語が含まれ記事

恋文(6), individual(5), ディオ(5), パティシエ(5), bb(6), チョコパイ(5), f8(8), コチラ(5), 3p(5), d1(8), スクウェア(4), 原爆(35), 土(17), 戦士(12), 基本的人権(10), y(7), シコ(17), o(7), e(15), フレームワーク(6), Tシャツ(12), h(10), d(15), 反日(9), c(12), 奨学金(7), 指定(13), 運転(12), 表現自由(16), 美人(23), 学ん(10), 無料(19), 借金(9), 返信(9), 食う(11), 20代(9)

頻出トラックバック先(簡易)

40代KKO必死婚活アプリを一か月間使ってみた結果 /20181110151336(20), ■悪質サイトからメールを晒そう /20181110075713(19), ■営業してるとやたらナンパされる /20181109185912(15), ■サンマの内蔵って食べるのが普通? /20181110001043(11), ■車酔いする奴面倒くさすぎ /20181109204321(10), ■未だに特撮ものの偉大さがよくわからない /20181109222920(8), ■結局1番強いキャラってなんなの? /20181110181336(7), ■スクウェア黄金期ってそんなすごかったの? /20181110085030(7), ■日本人が英語能力が低いのを /20181109174335(7), ■汚れちまった悲しみって /20181110034243(6), ■才能のない人間人生ってつまんねーわ /20181109024136(6), ■表現自由十字軍の苦手なモノ /20181110214012(6), ■クレジットカード債務が支払えず裁判まで行ったやばい人達の例 /20181110025858(6), ■ニコニコオススメ動画 /20181109105536(5), ■ /20181110100229(5), ■例の原爆の件って典型的正義の反対はまた別の正義案件だよな /20181110033210(5), ■日本テレビ番組あるある /20181017172802(5), ■高校生はチンチンチャンバラするってマジ? /20181110004841(5), ■スマブラの話 /20181110120600(5), ■ぶっちゃけ日本廃止して英語公用語にした方がいい /20181108223659(4), (タイトル不明) /20151030013920(4), ■いよいよ日本語がわからなくなってきた /20181110131131(4), ■何故か部屋貸してくれないんだけど心当たりがない /20181110121914(4), ■趣味演劇をやったら面白かった事あれこれ /20181110030720(4), ■勉強しに日本に来ている外国人への援助が批判されていることについて /20181110201532(4), ■彼女200円以下のゲロマズ牛乳を買ってきた! /20181110224118(4), ■ /20181110082352(4)

増田合計ブックマーク数 ()内の数字は1日の増減

5781155(3071)

2018-11-10

anond:20181110182445

正直、SQL説明は失敗だった。ごめんねw

SQL説明じゃなくて、MVCフレームワークの使い方の説明の方が長くなって、自分でも見にくいと思った。

 

やり直すなら、まずはフレームワークを使わずに、素のPHP構造プログラミング)で掲示板を作り、SQL説明をメインにすべきだった。

その後、フレームワークを使わない場合と、フレームワークを使った場合比較して、フレームワークを使った方が便利だと説明すれば良かった。

=順番がまずかったね。

最高にシンプルなWebフレームワークって何だろね?

増田プログラマー養成講座 その20 SQLデータの削除

前回は、SQLデータ更新をやりました。

今回は、SQLデータの削除をやりましょう。

 

メッセージの削除

基本は、同じなので前回やった更新処理をちょっと変えれば削除もすぐできます

 

投稿されたメッセージを削除する機能を、Webページに付けてみよう。

 

削除ページにジャンプするリンク

前々回作ったメッセージの一覧の中に、削除ページにジャンプするリンクも入れておいた。

<td><a href="welcome/delete/<?php echo $item['id']; ?>">削除</a></td>

という1行が削除ページにジャンプするためのリンクになる。

ブラウザーHTMLソースを見ると、ここが以下のようなHTMLに書き換わってる。

<td><a href="welcome/delete/2">削除</a></td>

これは「メッセージID番号が2のメッセージ」を削除対象にして、削除ページにジャンプする。

 

Controllerの改造

ユーザーが「http://localhost/waf/welcome/delete/2」というURLで、削除ページにアクセスしたら、コントローラーで「2」を受け取って使いたい。

CodeIgniterでは、URL文字列を解析して、使うことができる。

以下のようにコントローラーを改造してみよう。

 

// 削除画面

public function delete($id = '')

{

 echo "ID=".$id;

 $this->load->view('chat_delete');

}

 

Controllerの改造の解説

delete()メソッド引数で、URL中の「2」の部分を受け取れる。

これは前回の編集ページ(更新の処理)と同じ。

「$id = $this->uri->segment(3);」でも受け取れる。

 

Viewの改造

削除ページでは、確認する質問を入れてみよう。

ユーザーに「本当に削除しますか?」みたいな注意喚起をしておきたい。

 

ファイルの内容を以下のように編集する。

<?php defined('BASEPATH') or exit('No direct script access allowed');?>

<!DOCTYPE html>

<html>

 <head>

  <meta charset="utf-8">

  <title>増田チャット</title>

  <base href="<?php echo base_url(); ?>">

 </head>

 <body>

  <h1>増田チャット</h1>

  <h2>削除</h2>

  <p>以下のメッセージを削除しますか?</p>

  <form action="welcome/delete" method="post" accept-charset="utf-8">

   <?php if (isset($talk)): ?>

   <p style="background-color:lightpink"><?php echo $talk['message']; ?></p>

   <input type="hidden" name="id" value="<?php echo $talk['id']; ?>">

   <input type="hidden" name="action" value="delete">

   <?php else: ?>

   <p>※該当するメッセージがありません。(または削除済です。)</p>

   <?php endif;?>

   <button>削除する</button>

  </form>

  <p><a href="welcome/index">戻る</a></p>

 </body>

</html>

 

Viewの改造の解説

<p style="background-color:lightpink"><?php echo $talk['message']; ?></p>

削除するメッセージを色付きで強調して、ユーザー確認してもらう。

 

<input type="hidden" name="id" value="<?php echo $talk['id']; ?>">

コントローラー削除対象メッセージID番号を送るため、inputタグの「type="hidden"」でメッセージID番号を仕込んでおく。

 

Controllerの改造

ファイルの内容を以下のように編集する。

// 削除画面

public function delete($id = '')

{

 $id = $id ? $id : $this->input->post('id');

 $action = $this->input->post('action');

 if ($action == 'delete') {

  $this->chat_model->delete_message($id);

 }

 $data['talk'] = $this->chat_model->read_message_by_id($id);

 $this->load->view('chat_delete', $data);

}

 

Controllerの改造の解説

やってることは、前回のデータ更新場合とほぼ同じ。

$this->chat_model->delete_message($id);

で、モデルに用意したデータ削除用メソッドを呼び出しているだけ。

次は、モデルdelete_message()メソッドを用意しよう。

 

Modelの改造

ファイルの内容を以下のように編集する。

// Delete

public function delete_message($id = 0)

{

 $sql = "DELETE FROM talk WHERE id = ?";

 $param = array($id);

 $this->db->query($sql, $param);

 return $this->db->affected_rows();

}

 

Modelの改造の解説

SQLの「DELETE」を使えば、指定したレコード(1件分のデータ)を削除できる。

DELETE FROM talk WHERE id = ?」で、talkテーブルmessageid指定して削除している。

 

データを削除した後の挙動は、メッセージID番号がなくなるので、削除ページに表示できるメッセージデータがなくなる。

(例)id=2のデータを削除したら、SQLで「SELECT * FROM talk WHERE id = 2」を取得しても、空のデータデータがない状態

その場合は、

<p>※該当するメッセージがありません。(または削除済です。)</p>

と表示させてる。

 

まとめ

以上で、SQLの「DELETE」を使ったデータの削除ができた。

長々と説明したが、今回の大事な点は、SQLの「DELETE」の使い方だ。

 

以上で、MVCフレームワークを使ったOOPの使い方とSQLの使い方を見てきた。

SQLSQLだけで説明したほうが良かったね!MVCフレームワーク説明SQL説明が混在すると要点が分かりづらくなる?)

ちょっと失敗だったかも。m(__)m)

 

次回は、データベースの設計について学んでみよう。

 


anond:20181015215004 未経験からプログラマーなんだが全然からない

anond:20181016015826 増田プログラマー養成講座 その1 パソコンの用意

anond:20181016164341 増田プログラマー養成講座 その2 プログラムデータ+処理、プログラム言語の種類

anond:20181016180059 増田プログラマー養成講座 その3 構造プログラミングの基本(順次、反復、分岐

anond:20181016193144 増田プログラマー養成講座 その4 子ども向け教材「Scratch」で構造プログラミング練習

anond:20181017161003 増田プログラマー養成講座 その5 オブジェクトとは何か?

anond:20181017191404 増田プログラマー養成講座 その6 OOPの種類、PHPの準備

anond:20181019181549 増田プログラマー養成講座 その7 OOPの仕組み(前半)

anond:20181020230044 増田プログラマー養成講座 その8 OOPの仕組み(後半)

anond:20181022232327 増田プログラマー養成講座 その9 MVCフレームワークを使ってみよう

anond:20181023184616 増田プログラマー養成講座 その10 OOP参考書

anond:20181024214133 増田プログラマー養成講座 その11 データベースを使ってみよう

anond:20181026145516 増田プログラマー養成講座 その12 データベースの参考書

anond:20181028152656 増田プログラマー養成講座 その13 SQL文法

anond:20181031014212 増田プログラマー養成講座 その14 Webアプリの試作品作成

anond:20181101225335 増田プログラマー養成講座 その15 Webアプリの完成見本

anond:20181101230220 増田プログラマー養成講座 その16 Webアプリの完成見本(続き)

anond:20181104161900 増田プログラマー養成講座 その17 Webアプリの骨組み

anond:20181104233013 増田プログラマー養成講座 その18 SQLデータの追加と取得

anond:20181110120715 増田プログラマー養成講座 その19 SQLデータ更新

anond:20181110182445 増田プログラマー養成講座 その20 SQLデータの削除 ←★今ここ★

anond:20181111205255 増田プログラマー養成講座 その21 データベース設計 (1)要件定義

anond:20181024214737 増田プログラマー養成講座 コンテンツ一覧

増田プログラマー養成講座 その19 SQLデータ更新

前回は、Webアプリの骨組み(スケルトン)に、SQLデータの追加と取得をやりました。

今回は、SQLデータ更新をやりましょう。

 

メッセージ更新

 

編集ページにジャンプするリンク

前回作ったメッセージ一覧に、[編集]のリンクも入れておいた。

<td><a href="welcome/update/<?php echo $item['id']; ?>">編集</a></td>

という1行の部分。

[編集]をクリックすると、編集用ページにジャンプする。

ブラウザーHTMLソースを見ると、以下のようなHTMLになってるはず。

<td><a href="welcome/update/2">編集</a></td>

これは「メッセージID番号が2」を対象にして、編集ページにジャンプすることを意味する。

 

Controllerの改造

編集用ページのコントローラーを作ろう。

「http://localhost/waf/welcome/update/2」というURL編集ページにアクセスしたら、メッセージID番号の「2」を受け取れるようにしたい。

URL文字列を処理して「2」を取り出せるようにしよう。

 

// 更新画面

public function update($id = '')

{

 echo "ID=".$id;

 $this->load->view('chat_update');

}

 

CodeIgniterでは、URLから文字列を取り出す方法がいくつか用意されている。

  1. 「update($id = '')」のようにメソッド引数「$id」を用意すれば、「2」の部分を取り出せる。
  2. 引数を使う以外の方法も用意されていて、「$id = $this->uri->segment(3);」のように書けば、「2」の部分を取り出せる。

// 更新画面

public function update()

{

 $id = $this->uri->segment(3);

 echo "<hr> ID=".$id;

 $this->load->view('chat_update');

}

 

Controllerの改造の解説

CodeIgniterで、URL文字列から特定部分の文字列を取り出す方法を見ておこう。

 

例えば、「http://localhost/waf/welcome/update/aaa/bbb/ccc」というURLアクセスしたときCodeIgniterではURL中の「aaa」「bbb」「ccc」という部分は、以下のようにして取り出せる。

$seg1 = $this->uri->segment(1); // → 1番目のURL文字列:「welcome」=コントローラークラス

$seg2 = $this->uri->segment(2); // → 2番目のURL文字列:「update」=クラスの中のメソッド

$seg3 = $this->uri->segment(3); // → 3番目のURL文字列:「aaa」の部分

$seg4 = $this->uri->segment(4); // → 4番目のURL文字列:「bbb」の部分

$seg5 = $this->uri->segment(5); // → 5番目のURL文字列:「ccc」の部分

URLを「/」で区切って、base_url(http://localhost/waf/)の次から順番に、1番目のURL文字列、2番目のURL文字列、3番目のURL文字列、…とsegment()メソッドで順番を指定すれば取得できる。

 

Modelの改造

データベースでメッセージID指定して、メッセージを取り出す機能を用意しよう。

 

ファイルに以下のメソッドを追加する。

// Read by Id

public function read_message_by_id($id = 0)

{

 $sql = "SELECT * FROM talk WHERE id = ?";

 $param = array($id);

 $query = $this->db->query($sql, $param);

 return $query->row_array();

}

 

Modelの改造の解説

SQLの「WHERE」句で、絞り込む条件を指定できる。

 

SELECT * FROM talk WHERE id = ?

「WHERE id = 2」とすれば、メッセージID番号が2のメッセージデータが「talkテーブルから取り出せる。

もし該当するデータがなければ、返されるデータは空になる。(データが返ってこない。)

 

CodeIgniterの「row_array()」は、1件分のデータ配列の形にして返すメソッドだ。

 

Viewの改造

ファイルの内容を以下のように編集する。

<?php defined('BASEPATH') or exit('No direct script access allowed');?>

<!DOCTYPE html>

<html>

 <head>

  <meta charset="utf-8">

  <title>増田チャット</title>

  <base href="<?php echo base_url(); ?>">

 </head>

 <body>

  <h1>増田チャット</h1>

  <h2>編集</h2>

  <p>メッセージを変更して「更新する」ボタンを押してください。</p>

  <form action="welcome/update" method="post" accept-charset="utf-8">

   <label>メッセージ</label>

   <?php if (isset($talk)): ?>

   <input type="text" name="message" value="<?php echo $talk['message']; ?>">

   <input type="hidden" name="id" value="<?php echo $talk['id']; ?>">

   <input type="hidden" name="action" value="update">

   <?php else: ?>

   <p>※該当するメッセージがありません。</p>

   <?php endif;?>

   <button>更新する</button>

  </form>

  <p><a href="welcome/index">戻る</a></p>

 </body>

</html>

 

Viewの改造の解説

データベースから取り出した1件分のメッセージを表示する部分を追加した。

<input type="text" name="message" value="<?php echo $talk['message']; ?>">

の「<?php echo $talk['message']; ?>」という部分だ。

これで変更したいメッセージの本文を表示できる。

 

あと、編集したメッセージWebサーバーに送信できるように、Formタグ送信ボタン(「更新する」の部分)も追加した。

このときメッセージID番号も送信できるように、

<input type="hidden" name="id" value="<?php echo $talk['id']; ?>">

という1行も仕込んである

 

Controllerの改造

ファイルの内容を以下のように編集する。

// 更新画面

public function update($id = '')

{

 $id = $id ? $id : $this->input->post('id'); // id -> segment or post

 $action = $this->input->post('action');

 if ($action == 'update') {

  $message = $this->input->post('message');

  $this->chat_model->update_message($id, $message);

 }

 $data['talk'] = $this->chat_model->read_message_by_id($id);

 $this->load->view('chat_update', $data);

}

 

Controllerの改造の解説

メッセージID番号を指定して、データベースから取り出し、Viewに渡すデータを用意している。

$data['talk'] = $this->chat_model->read_message_by_id($id);

 

ユーザーメッセージ編集をしてWebサーバーに送信したら、データ更新する指示を出す部分も追加した。

$action = $this->input->post('action');

if ($action == 'update') {

 $message = $this->input->post('message');

 $this->chat_model->update_message($id, $message);

}

モデルにupdate_message()メソッドを用意して、$idと$messageを渡せば、該当データ更新するようにしたい。

次は、モデルでupdate_message()メソッドを用意しよう。

 

Modelの改造

ファイルの内容を以下のように編集する。

// Update

public function update_message($id = 0, $message = '')

{

 $sql = "UPDATE talk SET message = ? WHERE id = ?";

 $param = array($message, $id);

 $this->db->query($sql, $param);

 return $this->db->affected_rows();

}

 

Modelの改造の解説

SQLの「UPDATE」を使えば、指定したレコード(1件分のデータ)を更新できる。

「UPDATE talk SET message = ? WHERE id = ?」で、talkテーブルmessageid指定して更新している。

 

CodeIgniterの「affected_rows()」メソッドは、更新した行数を返す。=成功なら1行、失敗なら0行となる。

 

補足

コントローラーの「$id = $id ? $id : $this->input->post('id');」という行は、$idの受け取り方が2パターンあるので、それに対応している。

編集ページの表示で、1回目の表示と、2回目以降の表示で、$idの受け渡し方が変わっている。

  • 1回目:URLに埋め込まれID番号をupdate($id = '')の引数$idで受け取っている。($this->uri->segment(3)で受け取るのと同じ)
  • 2回目以降:Formタグで送られてきた$idを$this->input->post('id')で受け取っている。

URLに埋め込む方法上記の1回目のような方法)は、ユーザー勝手に値をいじれるので、基本的には使わない方が良い。

 

まとめ

以上で、SQLの「UPDATE」を使った、データ更新ができた。

長々と説明したが、今回の大事な点は、SQLの「UPDATE」の使い方だ。

CodeIgniterの使い方や、Webサイトの作り方(FormタグなどのHTML知識)は、オマケ程度に見ておいて欲しい。

 

次回は、データを削除するSQLDELETE」の使い方を見てみよう。

 


anond:20181015215004 未経験からプログラマーなんだが全然からない

anond:20181016015826 増田プログラマー養成講座 その1 パソコンの用意

anond:20181016164341 増田プログラマー養成講座 その2 プログラムデータ+処理、プログラム言語の種類

anond:20181016180059 増田プログラマー養成講座 その3 構造プログラミングの基本(順次、反復、分岐

anond:20181016193144 増田プログラマー養成講座 その4 子ども向け教材「Scratch」で構造プログラミング練習

anond:20181017161003 増田プログラマー養成講座 その5 オブジェクトとは何か?

anond:20181017191404 増田プログラマー養成講座 その6 OOPの種類、PHPの準備

anond:20181019181549 増田プログラマー養成講座 その7 OOPの仕組み(前半)

anond:20181020230044 増田プログラマー養成講座 その8 OOPの仕組み(後半)

anond:20181022232327 増田プログラマー養成講座 その9 MVCフレームワークを使ってみよう

anond:20181023184616 増田プログラマー養成講座 その10 OOP参考書

anond:20181024214133 増田プログラマー養成講座 その11 データベースを使ってみよう

anond:20181026145516 増田プログラマー養成講座 その12 データベースの参考書

anond:20181028152656 増田プログラマー養成講座 その13 SQL文法

anond:20181031014212 増田プログラマー養成講座 その14 Webアプリの試作品作成

anond:20181101225335 増田プログラマー養成講座 その15 Webアプリの完成見本

anond:20181101230220 増田プログラマー養成講座 その16 Webアプリの完成見本(続き)

anond:20181104161900 増田プログラマー養成講座 その17 Webアプリの骨組み

anond:20181104233013 増田プログラマー養成講座 その18 SQLデータの追加と取得

anond:20181110120715 増田プログラマー養成講座 その19 SQLデータ更新 ←★今ここ★

anond:20181110182445 増田プログラマー養成講座 その20 SQLデータの削除

anond:20181024214737 増田プログラマー養成講座 コンテンツ一覧

2018-11-07

映画館の上映スケジュール一覧サイトがよくあるけど、手打ちなんだろうか

google検索映画.comのようなサイトで上映中の映画スケジュールが見られるが、これは手打ちでやっているのだろうか。

というのも大手でない、新文芸坐シネマカリテのようなサイト最初に上映スケジュールの1次情報が公開されている。

これは何らかのスケジュールの表をphpなりrubyなりpythonで展開すればweb pageとして成立する。

しかし、元のスケジュール表は公開されていないので他のサイトで利用しようとしたら上映スケジュールサイト情報手打ちで打つしかないのではないだろうか。

自分が知らないだけかもしれない、、もし何か有用APIをご存知の方いたら教えてくださいませ

アーカイブ ヘルプ
ログイン ユーザー登録
ようこそ ゲスト さん