Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Recuperando dados com Jquery, AJAX e PHP de um banco de dados MySQL


Antes de tudo, eu recomendo usar um objeto JS para a variável de dados em solicitações ajax. Isso tornará sua vida muito mais simples quando você tiver muitos dados. Por exemplo:
$('h1').click(function() {
            $.ajax({
                type:"POST",
                url: "ajax.php",
                data: { "code": code },
                datatype: "xml",
                success: function() {
                $(xml).find('site').each(function(){
                    //do something
                });
            });
        });

Quanto a obter informações do servidor, primeiro você terá que fazer um script PHP para extrair os dados do banco de dados. Se você deve obter muitas informações do servidor, além disso, convém serializar seus dados em XML ou JSON (eu recomendaria JSON).

No seu exemplo, assumirei que sua tabela db é muito pequena e simples. As colunas disponíveis são id, code e description. Se você quiser puxar todas as descrições de notícias para um código específico, seu PHP pode ficar assim. (Eu não faço PHP há algum tempo, então a sintaxe pode estar errada)
// create data-structure to handle the db info
// this will also make your code more maintainable
// since OOP is, well just a good practice
class NewsDB {
    private $id = null;
    var $code = null;
    var $description = null;

    function setID($id) {
        $this->id = $id;
    }
    function setCode($code) {
        $this->code = $code;
    }
    function setDescription($desc) {
        $this->description = $desc;
    }
}

// now you want to get all the info from the db
$data_array = array(); // will store the array of the results
$data = null; // temporary var to store info to

// make sure to make this line MUCH more secure since this can allow SQL attacks
$code = htmlspecialchars(trim($_POST['lname']));

// query
$sql = "select * from news where code=$code";
$query = mysql_query(mysql_real_escape_string($sql)) or reportSQLerror($sql);

// get the data
while ($result = mysql_fetch_assoc($query)) {
    $data = new NewsDB();
    $data.setID($result['id']);
    $data.setCode($result['code']);
    $data.setDescription($result['description']);
    // append data to the array
    array_push($data_array, $data);
}

// at this point you got all the data into an array
// so you can return this to the client (in ajax request)
header('Content-type: application/json');
echo json_encode($data_array);

A saída de amostra:
[
  { "code": 5, "description": "desc of 5" },
  { "code": 6, "description": "desc of 6" },
  ...
]

Então nesta fase você terá um script PHP que retorna dados em JSON. Também vamos supor que a url para este script PHP seja foo.php .

Então você pode simplesmente obter uma resposta do servidor por:
$('h1').click(function() {
            $.ajax({
                type:"POST",
                url: "foo.php",
                datatype: "json",
                success: function(data, textStatus, xhr) {
                   data = JSON.parse(xhr.responseText);
                   // do something with data
                   for (var i = 0, len = data.length; i < len; i++) {
                       var code = data[i].code;
                       var desc = data[i].description;
                       // do something
                   }
            });
         });

Isso é tudo.