質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

Q&A

2回答

1895閲覧

postした場合、タイムアウトとなってしまう

toll_tree

総合スコア199

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

0グッド

2クリップ

投稿2019/05/19 10:27

編集2019/05/20 10:35

laravelを学習していたのですが、postした際に、ページが表示できない問題が発生しています。
以下は、ルート情報を記載した、「web.php」です

php

1<?php 2 3/* 4|-------------------------------------------------------------------------- 5| Web Routes 6|-------------------------------------------------------------------------- 7| 8| Here is where you can register web routes for your application. These 9| routes are loaded by the RouteServiceProvider within a group which 10| contains the "web" middleware group. Now create something great! 11| 12*/ 13 14 15// Route::post('hello','HelloContoroller@post'); 16 17//use App\Http\Middleware\HelloMiddleware; 18 19Route::get('hello/add','HelloController@add'); 20Route::post('hello/add','HelloController@create'); 21 22// Route::get('hello/other','HelloController@other'); 23

以下はコントローラ部分の「HelloController.php」です

php

1<?php 2 3namespace App\Http\Controllers; 4 5use Illuminate\Http\Request; 6use Illuminate\Http\Response; 7use App\Http\Requests\HelloRequest; 8use Validator; 9use Illuminate\Support\Facades\DB; 10 11 12class HelloController extends Controller{ 13 14 public function index(Request $request) 15 { 16 17 18 $items = DB::select('select * from people'); 19 return view('hello.index',['items' => $items]); 20 21 } 22 23 public function post(Request $request) 24 25 { 26 $items = DB::select('select * from people'); 27 return view('hello.index',['items' => $items]); 28 29 } 30 public function add(Request $request) 31 { 32 return view('hello.add'); 33 } 34 35 public function create(Request $request) 36 { 37 $param = [ 38 'name' => $request->name, 39 'mail' => $request->mail, 40 'age' => $request->age, 41 ]; 42 43 DB::insert('insert into people (name, mail, age) values 44 (:name, :mail,:age)',$param); 45 return redirect('./hello'); 46 } 47 48 49 50 51} 52

下記はview部分である「add.blade.php」です

php

1@extends('layouts.helloapp') 2@section('title','Add') 3@section('menubar') 4 @parent 5 新規作成ページ 6@endsection 7 8@section('content') 9 <table> 10 <form action="/hello/add" method="post"> 11 {{ csrf_field() }} 12 <tr><th>name:</th><td><input type="text" name="name"></td></tr> 13 <tr><th>mail:</th><td><input type="text"></td></tr> 14 <tr><th>age: </th><td><input type="text" name="age"></td></tr> 15 <tr><th></th><td><input type="submit" value="send"></td></tr> 16 </form> 17 </table> 18 @endsection 19 20 @section('footer') 21 copyright 2017 tuyano. 22 @endsection

起きている問題としましては、/hello/addにgetアクセスした場合は、add.blade.phpが表示されるのですが、add.blade.phpからフォーム部分の入力値を空にしてpostした場合、「Maximum execution time of 30 seconds exceeded」となってしまい、画面が表示できません。
原因が分からない為、ご助言頂けましたら幸いです。
よろしくお願いします

以下は、タイムアウトした際のエラーログ(Connection.php)になります。

// To execute the statement, we'll simply call the callback, which will actually // run the SQL against the PDO connection. Then we can calculate the time it // took to execute and log the query SQL, bindings and time in our memory. try { $result = $callback($query, $bindings); } // If an exception occurs when attempting to run a query, we'll format the error // message to include the bindings with SQL, which will make this exception a // lot more helpful to the developer instead of just the database's errors. catch (Exception $e) { throw new QueryException( $query, $this->prepareBindings($bindings), $e ); } return $result; } /** * Log a query in the connection's query log. * * @param string $query * @param array $bindings * @param float|null $time * @return void */ public function logQuery($query, $bindings, $time = null) { $this->event(new QueryExecuted($query, $bindings, $time, $this)); Arguments "Maximum execution time of 30 seconds exceeded"

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/05/19 10:32 編集

people Modelは定義していないのでしょうか?
toll_tree

2019/05/19 10:41

people Modelとはなんのことです。。?
退会済みユーザー

退会済みユーザー

2019/05/19 10:44 編集

Modelを定義せずにLaravelを使っているのでしょうか? 一体何を参考に学習しているのですか?
toll_tree

2019/05/19 10:52

model部分のコードがないという指摘でしょうか?
退会済みユーザー

退会済みユーザー

2019/05/19 10:55

controller に書かれている処理がDB::select とか、とてもLaravelを正しく使っているようには見えないからです。 ふつうは People::all(); のようにアクセスするものですから。
toll_tree

2019/05/19 10:57

People::all()といった書き方は初めてしりました。 現段階で学習している限りでは、DB::selectにて、DBへアクセスしていますね
toll_tree

2019/05/19 10:57

もしかしたら、後の方で出てくるかもしれないです
退会済みユーザー

退会済みユーザー

2019/05/19 10:58

教材は何を使っているのですか?
toll_tree

2019/05/19 10:59

laravelの青本を使っています
退会済みユーザー

退会済みユーザー

2019/05/19 11:04

https://www.amazon.co.jp/dp/B07CLLW4MX/ref=dp-kindle-redirect?_encoding=UTF8&btkr=1 ああ、これですね。 この本、初めの方はすごくイレギュラーなコードで書いて、後で本来の使い方を紹介するというスタイルで書かれているので、回答する身としては非常に困っちゃいますね… ある程度、そういうもんだと思って、先に進める方が学習効率はいいかもしれません。 最初のうちは、書籍のコードのままを写経しながら、アレンジはせずに進めるほうがよいと思いますよ。
toll_tree

2019/05/19 11:17

分かりました。 現在は、コード自体はアレンジせずに進めて来たのですが、現段階の質問させて頂いた箇所でうまくいかず、止まってしまったといった形ですね...
退会済みユーザー

退会済みユーザー

2019/05/19 11:20

あと書籍のコードの正誤表とか出ていないか確認してください。 Laravel のプレースホルダでは、? しか使えないはず。名前付きのプレースホルダは使えなかったはずです。
toll_tree

2019/05/20 03:14

正誤表は確認してみましたが、名前付きプレースホルダーに関しては、記述はなかったです。。
mix-peach

2019/05/20 09:11

Laravelでも名前付きプレースホルダ―は、掲載のコードで使えると思いますので、そこに問題はないと思います。。。 エラーログに、timeoutが発生した場所が、記載されているのではないかと思いますが、確認はされましたか?
toll_tree

2019/05/20 09:41

>エラーログに、timeoutが発生した場所が、記載されているのではないかと思いますが、確認はされましたか? はい。その部分を質問本文に追記した方が良いでしょうか?
toll_tree

2019/05/20 10:36

質問本文に追記いたしました。
guest

回答2

0

データベース(Mysql)のサーバ名かIPアドレスが間違っている気がします

投稿2019/05/21 03:54

mikkame

総合スコア5036

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

toll_tree

2019/05/21 04:21

データベースのサーバー名とは、どこの部分でしょうか?
mikkame

2019/05/21 05:16

通常は.envに書いてあります
toll_tree

2019/05/21 07:39

envファイルのどの項目でしょうか? getアクセスした場合は、表示されるのですが、postした場合に参照する?サーバー名が違うということでしょうか?
mikkame

2019/05/21 12:40

.envのDB_HOSTですかね。configがcacheされている可能性もあるのでそちらも確認。 例えばaddの時はDBへの参照がないのでDBへはアクセスされてないのでは getでもindexページは同様にエラーになるのではないでしょうか
toll_tree

2019/05/21 23:05

あ、確かにgetでアクセスした場合は、DBにアクセスしてないので関係ないですよね... 取り敢えず、確認してみます
toll_tree

2019/05/21 23:28

.envのDB_HOSTは、「127.0.0.1」となっていました。 確かに、indexページは同様にエラーとなりますね。。。
toll_tree

2019/05/21 23:30

configがcacheされているというのは、どういうことでしょうか。。。?
toll_tree

2019/05/21 23:41

あ、indexページなのですが、/helloにアクセスした際に呼び出される、index.blade.phpは正常に呼び出されました。 今、createメソッドのreturnの前に、dd('ok');と追記してみたのですが、表示されることはありませんでした。 やはり、DB::insertの部分でうまくいっていないものと思われます。
mikkame

2019/05/22 09:50

ですので、データベースの接続設定が間違っております。 環境によってどのように接続設定をすればいいのかまちまちです。 まずはご自身のデータベースの環境についてお調べください
toll_tree

2019/05/22 10:11

やはりデータベースの接続設定が間違っているのですね。。 正しく設定するには、どのようなドキュメントを参考にすれば良いのでしょうか。。?
mikkame

2019/05/22 13:23

環境によりますので、まずは自分のデータベースはどこにあって なんていう名前か調べることをお勧めします
toll_tree

2019/05/22 14:00 編集

ありがとうございます。 そうですね。。 今、.envファイル及び、configのdatabase.phpもチェックしてみたのですが、正しくデータベースファイルのパスなども設定されておりました。 原因一体なんなのでしょうね...
toll_tree

2019/05/22 14:04

不思議なのが、postした時のみ、ってとこなんですよね... getで、/helloにアクセスして、index.blade.phpを呼び出した際は普通にDBからselectして、表示できていますし。。
guest

0

不思議なのが、postした時のみ、ってとこなんですよね...

postした時のみを考えるとformを送るプログラムに問題があるかもしれません

気になった部分は、 mailの部分に name がない所ですね

<tr><th>mail:</th><td><input type="text"></td></tr>

nameがないから、Requestからデータが取れていないので、postできない事を検証してみてください

public function create(Request $request) { $param = [ 'name' => $request->name, 'mail' => $request->mail, 'age' => $request->age, ]; DB::insert('insert into people (name, mail, age) values (:name, :mail,:age)',$param); return redirect('./hello'); }

投稿2019/06/22 18:05

Kazuyuki-T0806

総合スコア326

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問