Как автоматически заполнить другие поля формы при щелчке с помощью PHP - PullRequest
2 голосов
/ 25 января 2012

У меня есть простая форма прямо сейчас:

<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" />

Что мне нужно, так это когда пользователь заполняет свое имя пользователя и выполняет одно из следующих действий: Вкладка 1.прессы 2. нажмите войти 3.Нажмите кнопку извлечения (кнопка извлечения не существует, я хотел бы знать, как создать ее, используя javascript или что-либо еще, что соответствует моим критериям)

Как только он сделает что-либо из вышеперечисленного, он автоматически сгенерирует оставшиеся поля из базы данных. Запрос будет выглядеть так: $ qry = mysql_query («ВЫБЕРИТЕ * от пользователя, где имя пользователя = $_POST['username']»); $ Строка = 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;

1 Ответ

3 голосов
/ 25 января 2012

Создайте конечную точку php (в основном это URL, по которому вы можете вызвать вашу специальную функцию php, которая возвращает только те данные, которые вы хотите), которая возвращает массив json_encode со всей информацией других полей.

Вызывайте эту функцию через ajax, когда первое поле либо теряет фокус, либо изменяется (или нажимается кнопка), в зависимости от ваших предпочтений.

Затем, используя javascript, используйте то, что вы получили от ответа ajax назаполните другие поля.

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;

Javascript (с использованием 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();
    });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...