sql >> Base de Datos >  >> RDS >> Mysql

Recuperación de datos con Jquery, AJAX y PHP desde una base de datos MySQL

En primer lugar, recomendaría encarecidamente utilizar un objeto JS para la variable de datos en las solicitudes ajax. Esto hará que su vida sea mucho más simple cuando tenga muchos datos. Por ejemplo:

$('h1').click(function() {
            $.ajax({
                type:"POST",
                url: "ajax.php",
                data: { "code": code },
                datatype: "xml",
                success: function() {
                $(xml).find('site').each(function(){
                    //do something
                });
            });
        });

En cuanto a obtener información del servidor, primero deberá crear un script PHP para extraer los datos de la base de datos. Si se supone que debe obtener mucha información del servidor, además, es posible que desee serializar sus datos en XML o JSON (recomendaría JSON).

En su ejemplo, asumiré que su tabla db es muy pequeña y simple. Las columnas disponibles son id, código y descripción. Si desea extraer todas las descripciones de noticias para un código específico, su PHP podría verse así. (Hace tiempo que no uso PHP, por lo que la sintaxis podría ser incorrecta)

// 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);

La salida de muestra:

[
  { "code": 5, "description": "desc of 5" },
  { "code": 6, "description": "desc of 6" },
  ...
]

Entonces, en esta etapa, tendrá un script PHP que devuelve datos en JSON. También supongamos que la URL de este script PHP es foo.php .

Entonces simplemente puede obtener una respuesta del 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
                   }
            });
         });

Eso es todo.