2013-03-28 2 views
0

입력 값을 jQuery 페이지로 보내는 PHP 양식을 작성한 다음이 정보를 다른 PHP 페이지로 전송하여 값을 데이터베이스에 삽입합니다. 오류가, 내가 원래 형태로 PHP 페이지에서 다시 메시지를 보낼 수 있어야하고 실시간으로 보여 가지고의 사용자 이름이 존재라고 할 수있을 때jQuery를 사용하여 PHP 페이지에 실시간으로 오류 보내기

문제는

입니다. 이 작업을 수행하는 방법에 대한 아이디어가 있습니까?

다음은 양식에서 데이터베이스에 삽입되는 PHP 페이지로의 제출을 ​​처리하는 jQuery입니다.

// Handle account updates 
$('#save_account').click(function() { 
    var log_token = $('#log_token').val(); 
    var user_name = $('#user_name').val(); 
    var user_pass = $('#user_pass').val(); 
    $.post("php/includes/update_account.php", { 
     log_token: log_token, 
     user_name: user_name, 
     user_pass: user_pass 
    }); 
}); 

다음은 데이터베이스의 값을 삽입하는 PHP입니다.

$log_token = $_POST['log_token']; 
$user_name = $_POST['user_name']; 
$user_pass = $_POST['user_pass']; 

$db = db_open(); 
$query = "SELECT user_name FROM users WHERE user_name='$user_name'"; 
$result = db_query($db, $query); 
$result = db_num_rows($result); 
if (!$result) { 
    $query = "UPDATE users SET user_name='$user_name', user_pass='$user_pass' 
     WHERE user_id='$_SESSION['user']['user_id']'"; 
    $result = db_query($db, $query); 
} else { 
    Pass Error to FORM HERE 
} 
db_close($db); 
+0

jquery 코드를 게시하십시오. – herrjeh42

+0

그건 문제가되지 않습니다. 실시간으로 오류를 다시 보내기 위해 다른 jQuery 코드를 작성하면된다. 실시간 부분은 제가 가지고있는 문제입니다. 제출 된 후 팝업되도록하기. –

+0

정상적으로 작동합니다. 프론트 엔드에서 데이터를 수신합니다 (사용자가 무언가를 입력하고 예를 들어 제출). Ajax 요청으로 백엔드를 호출하는 것보다 GET 또는 POST 일 수 있습니다. 백엔드 (귀하의 PHP 스크립트)는 입력의 유효성을 검사합니다. 사용자 이름이 이미 존재하는 경우, 즉 오류가 발생하면 프론트 엔드로 메시지를 보냅니다. 프론트 엔드에는 프론트 엔드에서 오는 응답을 확인하고 성공/오류 메시지를 추가하는 콜백 함수가 있습니다. – herrjeh42

답변

1

AJAX를 살펴보십시오. 새로 고침하지 않고도 페이지간에 데이터를주고받을 수 있습니다. 이를 구현하는 가장 쉬운 방법은 jQuery's ajax method

코드를 사용하는 것은 거의 그것을 가지고

$('#save_account').click(function() { 
    var log_token = $('#log_token').val(); 
    var user_name = $('#user_name').val(); 
    var user_pass = $('#user_pass').val(); 
    $.post("php/includes/update_account.php", { 
     log_token: log_token, 
     user_name: user_name, 
     user_pass: user_pass 
     }, function(data){ 
      // handle the response from the page here 
      if(data != "") { 
       alert(data); 
      } 
     } 
    ); 
}); 

포스트 함수에 전달 된 익명 함수는 응답이 호출 한 스크립트에서 수신 될 때 호출되는 콜백 함수입니다. 변수 데이터에는 페이지의 응답이 들어 있습니다.

PHP

$log_token = $_POST['log_token']; 
$user_name = $_POST['user_name']; 
$user_pass = $_POST['user_pass']; 

$db = db_open(); 
$query = "SELECT user_name FROM users WHERE user_name='$user_name'"; 
$result = db_query($db, $query); 
$result = db_num_rows($result); 
if (!$result) { 
    $query = "UPDATE users SET user_name='$user_name', user_pass='$user_pass' 
     WHERE user_id='$_SESSION['user']['user_id']'"; 
    $result = db_query($db, $query); 
} else { 
    // return there was an error 
    echo "There was an error"; 
} 
db_close($db); 

이 더 복잡한 일을 할 수있다. 오류 배열을 페이지에 다시 전달할 수 있습니다. 자바 스크립트가 쉽게 구문 분석 할 수있는 방법으로 메시지를 보내는 방법은 JSON을 참조하십시오.

+0

실시간 부분은 제가 가지고있는 문제입니다. 메시지가 PHP 페이지로 전송 된 후 팝업되도록하기. –

+0

Ajax를 사용하면 페이지를 호출 한 다음 페이지에 대한 응답을 처리 할 수 ​​있습니다. 이렇게하는 방법은 폼 데이터를 유효성을 검사하는 페이지로 보내고 유효성 검사의 응답을 출력하는 것입니다. AJAX 호출은이 응답을 수신하므로 다시로드 할 필요없이 페이지에서이 응답을 처리 할 수 ​​있습니다. 그런 다음 응답에서 유효성 검사 오류가 표시되면 메시지를 팝업 할 수 있습니다. – CodePB

+0

"오류가있었습니다"라는 메시지가 표시되는 곳을 참조하십시오.이 페이지는 양식 페이지로 다시 보내서 팝업을 표시해야합니다. –

관련 문제