2017-10-06 8 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

나는 내 프로그램에 모든 것을 삽입을 가지고 있고, 그 중 하나는 복제 할 수 있습니다, 그리고 일관성입니다. 그렇게해서는 안됩니다. 내 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

반환 문 어? 나는 문제가 자바 스크립트에 있다고 생각하지 않았지만 많은 테스트를 거친 후에도 문제가 해결되지 않았다. 고맙습니다! – n8jadams

+0

@ n8jadams 문제는 단지 반환되지 않습니다. preventDefault()는 정말로 중요합니다. 자바 스크립트를 사용하여 제출하려는 경우 처음부터 방지해야합니다. 그래서 html은 처음 스크립트를 렌더링 할 때 제출하지 않습니다. – ssuhat

+0

나는 그 변화를 또한 알아 차렸다. 다시 한번 감사드립니다. :) – n8jadams