PHP

2012-01-25 4 views
1

로 클릭시 다른 양식 필드를 자동 완성하는 방법 내가 지금 간단한 양식을 가지고PHP

<form action='<? echo $PHP_SELF;?>' method='POST'> 
Username:<input type='text' name='username'><br> 
Email:<input type='text' name='email'><br> 
Posts:<input type='text' name='posts'><br> 
Joindate<input type='text' name='join'><br> 
<input type="submit" value="Submit" /> 

나는 사용자가 자신의 이름을 채우고 다음 중 하나를 수행 할 때, 필요한 것은 : 2.Presses는 가져 오기 버튼을 3.clicks 입력 탭 1.presses 일단

(지금은 존재하지 않는 버튼을 가져 내가 좋아하는 것은 자바 스크립트 또는 내 기준에 맞는 다른 것을 사용하여 만드는 방법을 알고) h e는 위의 작업 중 하나를 수행하여 데이터베이스에서 나머지 필드를 자동으로 생성해야합니다. 쿼리는 다음과 같이 보일 것입니다 : $ qry = mysql_query ("SELECT * from user where user = $_POST['username']"); $ row = mysql_fetch_assoc ('$ qry); echo $ row [ 'posts] 등등 ..

자동 생성 된 후에는 필드를 편집하고 제출하여 데이터베이스 필드를 업데이트 할 수 있습니다. 여기

내 업데이트 된 코드입니다 :

<head> 
<link rel="stylesheet" type="text/css" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1/themes/redmond/jquery-ui.css"> 

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script> 

<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1/jquery-ui.min.js"></script> 

</head> 

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST"> 
<fieldset> 
<legend>Form</legend> 
<label for="username">Username: </label> 

<input type="text" id="username" name="username" /> 
<button onclick="myrequest()">fetch</button> 
<label for="posts">Posts: </label> 
<input type="text" id="posts" name="posts" size="20"/> 
<label for="joindate">Joindate: </label> 
<input type="text" id="joindate" name="joindate" size="20"/> 



<p><input type="submit" name="submitBtn" value="Submit" /></p> 

</fieldset> 
</form> 
<script type="javascript/text> 
function myrequest() { 
var name = $('.username').val(); 
$.ajax({ 
    method: "GET", 
    url: "http://url.com/test/autofill.php", 
    dataType: 'json', 
    data: { 
    username: username 
    }).success(function(responseObject) { 
    // assuming you have an array of stuff like name, id, email, etc. 
    // now i populate another field from the ajax response 
    $('.posts').val(responseObject.posts); 
    }); 

} 
And then in the autofill.php 

    //connect to database 
    $name = $_GET['username']; 
    $return = mysql_query("SELECT * FROM user WHERE username = '$name' LIMIT 1"); 
    $rows = mysql_fetch_array($return); 
    $formattedData = json_encode($rows); 
    print $formattedData; 

답변

3

것은 PHP는 엔드 포인트를 확인합니다 (기본적으로 원하는 데이터 만 반환 당신의 특별한 PHP 함수를 호출 할 수있는 URL)를 json_encode'd 배열을 반환 다른 모든 필드의 정보와 함께

사용자의 취향에 따라 첫 번째 필드가 포커스를 잃거나 변경되거나 단추가 눌려지면 해당 함수를 아약스를 통해 호출하십시오.

그런 다음 자바 스크립트를 사용하여 다른 필드를 채우기 위해 아약스 응답에서 가져온 것을 사용하십시오.

는 autoFill.php

$name = $_GET['name']; 
$return = mysql_query("SELECT * FROM someTable WHERE username = '$name' LIMIT 1"); 
$rows = mysql_fetch_array($return); 
$formattedData = json_encode($rows); 
print $formattedData; 

자바 스크립트 (사용 JQuery와) // 첫 번째 필드

$(document).ready(function() { 
    function myrequest(e) { 
     var name = $('.username').val(); 
     $.ajax({ 
      method: "GET", 
      url: "/echo/json/", /* online, change this to your real url */ 
      data: { 
       username: name 
      }, 
      success: function(responseObject) { 
       alert('success'); 
       $('#posts').val('posts'); 
       $('#joindate').val('testing join date'); 
       /* 
       once you've gotten your ajax to work, then go through and replace these dummy vals with responseObject.whatever 
       */ 
      }, 
      failure: function() { 
       alert('fail'); 
      } 
     }); 
    } 

    $('#fetchFields').click(function(e) { 
     e.preventDefault(); 
     myrequest(); 
    }); 
}); 
+0

wow..that에서 발을 얻는다는 나에게 매우 새로운 .. 몇 가지 예제를 제공 할 수 있습니다. 나는 인터넷 검색을 시도했지만 도움이 될만한 것을 생각해 낼 수 없었다. – Micheal

+0

아, 여기 있습니다^ – Kristian

+0

감사합니다, PHP 쪽에서 이런 식으로 뭔가를 호출해야합니까?

사용자 이름 : Micheal