sql >> Database >  >> RDS >> Mysql

Gegevens ophalen met JQuery, AJAX en PHP uit een MySQL-database

Allereerst zou ik ten zeerste aanbevelen om een ​​JS-object te gebruiken voor de gegevensvariabele in ajax-verzoeken. Dit maakt je leven een stuk eenvoudiger als je veel gegevens hebt. Bijvoorbeeld:

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

Om informatie van de server te krijgen, moet u eerst een PHP-script maken om de gegevens uit de db te halen. Als u verondersteld wordt veel informatie van de server te krijgen, wilt u misschien uw gegevens bovendien serialiseren in XML of JSON (ik zou JSON aanbevelen).

In uw voorbeeld ga ik ervan uit dat uw db-tabel erg klein en eenvoudig is. De beschikbare kolommen zijn id, code en beschrijving. Als je alle nieuwsbeschrijvingen voor een specifieke code wilt ophalen, kan je PHP er als volgt uitzien. (Ik heb al een tijdje geen PHP meer gedaan, dus de syntaxis kan verkeerd zijn)

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

De voorbeelduitvoer:

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

Dus in dit stadium heb je een PHP-script dat gegevens in JSON retourneert. Laten we ook aannemen dat de url naar dit PHP-script foo.php is .

Dan kunt u eenvoudig een reactie van de server krijgen door:

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

Dat is alles.




  1. Waarom retourneert PostgreSQL geen null-waarden als de voorwaarde <> waar is?

  2. SQL, querybuilders en ORM's vergelijken

  3. Retourneer alleen numerieke waarden in MySQL

  4. Dynamische HTML-tabel in PHP Mail