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

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

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

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

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

Q&A

解決済

1回答

789閲覧

laravelでフォーム送信してデータベースに登録したい。

yoheiiii

総合スコア87

Laravel

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

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

0グッド

0クリップ

投稿2020/10/23 04:26

環境:Windows10,XAMPP,HeidiSQL
データベース:テーブル名:staffs カラム:name,password,updated_at,created_at

laravelでフォーム送信してデータベースに登録したい。
一回目は実際に登録できましたが、現状できなくなってしまいました。
【登録完了致しました。】とも出ますし、エラーメッセージも何もでません。

HeidiSQLを接続しなおしたり、更新ボタンを押しても追加されていません。

【ルート】

<?php /* |-------------------------------------------------------------------------- | Web Routes |-------------------------------------------------------------------------- | | Here is where you can register web routes for your application. These | routes are loaded by the RouteServiceProvider within a group which | contains the "web" middleware group. Now create something great! | */ Route::get('/shop', 'shopController@index'); Route::post('/shop/create','shopController@create'); Route::post('/shop/create','shopController@post'); Route::get('/shop/list','shopController@list'); Route::get('/top','shopController@top');

【コントローラー】

<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\staff; use Validator; use App\Http\Requests\ShopRequest; use Illuminate\Support\Facades\DB; class shopController extends Controller { public function index() { return view('staff_add',['msg' => 'フォームを入力してください。']); } public function create(Request $request) { $data =new staff(); $data->name = $request->name; $data->password = $request->pass; $data->save(); return redirect('/shop'); } public function post(Request $request) { $validate_rule = [ 'name' => 'required', 'pass' => 'required', ]; $this->validate($request,$validate_rule); return view('staff_add',['msg' => '登録完了致しました。']); } public function list(Request $request) { $items =DB::select('select * from staffs'); return view('staff_list',['items' => $items]); } public function top() { return view('top'); } }

【モデル】

<?php namespace App; use Illuminate\Database\Eloquent\Model; class staff extends Model { protected $table ="staffs"; }

【ブレード】

<!DOCtYPE html> <html> <head> <meta charset="UTF-8"> <title>ショップ</title> </head> <body> スタッフ追加<br /> <br /> <p>{{$msg}}</p> @if(count($errors)>0) <div> <ul> @foreach($errors->all() as $error) <li>{{$error}}</li> @endforeach </ul> </div> @endif <form method="post" action="/shop/create"> <table> @csrf <tr><th>スタッフ名を入力してください。</th><td> <input type="text" name="name" style="width:200px" value="{{old('name')}}"></td></th> <tr><th>パスワードを入力してください。</th><td> <input type="password" name="pass" style="width:200px" value="{{old('pass')}}"></td></th> <tr><th></th><td><input type="submit" value="OK"></td></tr> </table> </form> <tr><th></th><td><button onclick="history.back()">戻る</button></td></tr> <a href="/top">業務管理システム</a> </body> </html>

ご教授宜しくお願いいたします。

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

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

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

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

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

m.ts10806

2020/10/23 04:34

ルーティングはどうなっているのでしょうか。 しかし、validate₍₎のあと何もせずに「完了しました」で良いのでしょうか。
guest

回答1

0

ベストアンサー

/shop/create に POSTでアクセスした場合の定義が二回記述されています。
後から定義された方が有効になるので shopController@post しか実行されません。
そのため、登録完了したメッセージは表示されても実際には shopController@create の処理を行っていないため、データは作成されません。

Route::post('/shop/create','shopController@create'); Route::post('/shop/create','shopController@post');

投稿2020/10/23 05:42

HRS_O

総合スコア70

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

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

yoheiiii

2020/10/23 06:13

コントローラを1つにまとめて出来ました。 ご教授ありがとうございます。 public function create(Request $request) { $data =new staff(); $data->name = $request->name; $data->password = $request->pass; $data->save(); $validate_rule = [ 'name' => 'required', 'pass' => 'required', ]; $this->validate($request,$validate_rule); return view('staff_add',['msg' => '登録完了致しました。']); }
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問