jQuery ve Auto-populat seçer

1 Cevap php

Ben müvekkilime ait projelere o autopopulate seçtim sonra bir kez, ben bir istemci seçebilirsiniz basit bir sayfa var. Ben sonuçları çekmek için PHP / MySQL kullanıyorum.

Ben bu bir göz at aldı: http://remysharp.com/2007/01/20/auto-populating-select-boxes-using-jquery-ajax/ ama bu sayfadaki iki alanda başlar düşünüyorum. Ben kodu yeniden işleme çalıştım ama bu iyi gelmedi.

 var client_id = $('#c_id').val();
    $.getJSON("../inc/get-projects.php", {id: client_id}, function(data){
        projects = $('#p_id');
        projects.empty();
        $.each(data, function() {
            var option = $('<option/>').attr('value', this.id).text(this.name);
            projects.append(option);
        });
    });

PHP:

<?php
    include "config.inc.php";
    $sth = mysql_query(
        sprintf(
        "SELECT c_id,p_id,p_title FROM projects WHERE c_id = %s",
        mysql_real_escape_string($_GET['id'])
        )
    );
    $projects = array();
    while($r = mysql_fetch_assoc($sth)) {
        $projects[] = array('id' => $r['p_id'], 'name' => $r['p_title']);
    }
    print json_encode($projects);
    exit;


?>

1 Cevap

Böyle HTML varsa:

<select id='clients'>...</select>
<select id='projects'>...</select>

Böyle jQuery kodu olabilir:

$(document).ready(function() {
    var $clients = $('#clients');
    $clients.change(function() {
        var client_id = $clients.val();
        $.getJSON("getProjects.php", {id: client_id}, function(projects) {
            $projects = $('#projects');
            $projects.empty();
            $.each(projects, function() {
                var option = $('<option/>').attr('value', this.id).text(this.name);
                $projects.append(option);
            });
        });
    });
});

Ve sonra getProjects.php gibi bir şey dönün:

$sth = mysql_query(
    sprintf(
    "SELECT * FROM projects WHERE client_id = %s",
    mysql_real_escape_string($_GET['id'])
    )
);
$projects = array();
while($r = mysql_fetch_assoc($sth)) {
    $projects[] = array('id' => $r['id'], 'name' => $r['name']);
}
print json_encode($projects);
exit;

Ben tüm bu test değil, ama ne istediğinizi daha fazla veya daha az, ben düşünüyorum.

edit - Test ve işleri, belli ki tam olarak neye ihtiyacınız olmayabilir ama size bu konuda gitmek nasıl bir fikir verir. Umarım yardımcı olur.

edit 2 - kod ile sorun burada:

$.getJSON("../inc/get-projects.php", {id: client_id}, function(projects){
    projects = $('#p_id');
    projects.empty();
    $.each(projects, function() {
        var option = $('<option/>').attr('value', this.id).text(this.name);
        projects.append(option);
    });
});

Sen üzerine yazıyorsunuz projects 2.satır projects ile işleve. Ben kuşkusuz yollar iyi değildi belki iki, farklılaştırmak için benim kodda bir $ kullanılır. , Düzeltmek için bu kodu değiştirmek için:

$.getJSON("../inc/get-projects.php", {id: client_id}, function(data){
    projects = $('#p_id');
    projects.empty();
    $.each(data, function() {
        var option = $('<option/>').attr('value', this.id).text(this.name);
        projects.append(option);
    });
});