2017-10-06 4 views
0

を挿入します。 PHP:Laravel 5.4一貫性のない重複は、次のLaravelコードを実行しているとき、私は一貫性のない重複挿入を取得

<?php 

use Illuminate\Support\Facades\DB; // NOTE: I am using the query builder, not a model 
use Carbon\Carbon; 

Route::get('formtest', function() { 
    return view('testing.index'); 
}); 
use Illuminate\Http\Request; 
Route::post('formtest', function(Request $request) { 
    DB::table('pers2_testing_inserts') 
    ->insert([ 
     'data' => $request["test"], 
     'created_at' => Carbon::now(), 
     'updated_at' => Carbon::now() 
    ]); 
}); 

アプリケーション/リソース/ビュー/テスト/ index.blade.php:

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="utf-8"> 
    <meta http-equiv="X-UA-Compatible" content="IE=edge"> 
    <meta name="viewport" content="width=device-width, initial-scale=1"> 
    <title>TESTING</title> 
</head> 
<body> 
<form id="form" action="" method="post" novalidate autocomplete="off" onsubmit="disableAndSubmit(event)"> 
    <input type="text" name="test" id="text_box"> 
    <input type="submit" id="submit_button"> 
</form> 
<script type="text/javascript"> 
    var text_box = document.getElementById('text_box'); 
    var submit_button = document.getElementById('submit_button'); 
    var form = document.getElementById('form'); 

    function disableAndSubmit(e) { 
    submit_button.disabled = true; 
    if(text_box.value !== '') { 
     form.submit(); 
    } else { 
     e.preventDefault(); 
     submit_button.disabled = null; 
    } 
    } 
</script> 
</body> 
</html> 

私のプロジェクトはLaravel 5.4、PHP 7.1.7で構築されています。仮想マシンとしての迷路を使ってMacで開発しています。私のプロダクションサーバーは、XAMPP v3.2.2のWindows Server 2008 R2標準コンピューターです。一貫性のない重複挿入は、本番サーバーでのみ発生します。ここでは、サーバー上のいくつかのテストのスクリーンショットを示します。

PHPMyAdmin Showing Tests

私は私のプログラムですべての上に挿入し、それらのいずれか1つが複製することができ、それは矛盾です。それはそうであってはなりません。私のXAMPP設定で何か変更する必要がありますか? PHPの設定?これを防ぐための回避策がありますか?

答えて

0

はこれを試してみてください。

<script type="text/javascript"> 
    var text_box = document.getElementById('text_box'); 
    var submit_button = document.getElementById('submit_button'); 
    var form = document.getElementById('form'); 

    function disableAndSubmit(e) { 
    e.preventDefault(); 
    submit_button.disabled = true; 
    if(text_box.value !== '') { 
     form.submit(); 

     return true; 
    } else { 

     submit_button.disabled = false; 

     return false; 
    } 
    } 
</script> 
+0

リターン文をえっ?私は問題がJavaScriptにあったとは思わなかったが、テストの束の後、それは動作するようだった。ありがとうございました! – n8jadams

+0

@ n8jadamsは、問題が戻ってくるだけではありません。 preventDefault()は本当に重要です。 JavaScriptを使用して提出したい場合は、最初からそれを防ぐ必要があります。そのため、htmlはスクリプトを初めてレンダリングするときには送信しません。 – ssuhat

+0

私もそれに気付きました。再度、感謝します。 :) – n8jadams

関連する問題