Mysql
 sql >> Base de données >  >> RDS >> Mysql

Récupération de données avec Jquery, AJAX et PHP à partir d'une base de données MySQL

Tout d'abord, je recommanderais fortement d'utiliser un objet JS pour la variable de données dans les requêtes ajax. Cela rendra votre vie beaucoup plus simple lorsque vous aurez beaucoup de données. Par exemple :

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

En ce qui concerne l'obtention d'informations à partir du serveur, vous devrez d'abord créer un script PHP pour extraire les données de la base de données. Si vous êtes censé obtenir beaucoup d'informations du serveur, vous pouvez également sérialiser vos données en XML ou en JSON (je recommanderais JSON).

Dans votre exemple, je supposerai que votre table db est très petite et simple. Les colonnes disponibles sont id, code et description. Si vous souhaitez extraire toutes les descriptions de nouvelles pour un code spécifique, votre PHP pourrait ressembler à ceci. (Je n'ai pas fait de PHP depuis un moment, donc la syntaxe peut être erronée)

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

Exemple de sortie :

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

Donc à ce stade vous aurez un script PHP qui retourne des données en JSON. Supposons également que l'URL de ce script PHP est foo.php .

Ensuite, vous pouvez simplement obtenir une réponse du serveur en :

$('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
                   }
            });
         });

C'est tout.