Connexion à une base de données MySQL à l'aide de PhoneGap, AJAX et JQuery Mobile
Je suis dans une équipe de développement d'une application Android comptons grandement sur l'utilisation d'une base de données distante. Nous sommes à l'aide de PhoneGap et Jquery Mobile et avez tenté de vous connecter à notre base de données MySQL à l'aide d'AJAX et JSON appels. Actuellement, nous sommes en difficulté dans notre phase de test, qui consiste à vérifier, nous avons même une connexion à tous, en tirant une codé en dur de l'utilisateur de "Ted" de mySQL /entrée via MySQL Workbench.
De ce que nous avons recueillies, le processus de transmission de données fonctionne comme ceci:
-
Sur notre fichier html, nous avons un
<script type="text/javascript" src="Connect.js"></script>
^ Qui doit exécuter le Connect.js script, correct? Donc à partir de là, Connect.js est exécuté?
-
Connect.js fonctionne, la connexion à notre ServerFile.php qui est hébergé sur un service web externe, lui permettant d'utiliser PHP pour se connecter à la base de données MySQL et extraire des informations.
//run the following code whenever a new pseudo-page is created $('#PAGENAME').live('pageshow', function(event)) { // cache this page for later use (inside the AJAX function) var $this = $(this); // make an AJAX call to your PHP script $.getJSON('http://www.WEBSITENAME.com/ServerFile.php', function (response) { // create a variable to hold the parsed output from the server var output = []; // if the PHP script returned a success if (response.status == 'success') { // iterate through the response rows for (var key in response.items) { // add each response row to the output variable output.push('<li>' + response.items[key] + '</li>'); } // if the PHP script returned an error } else { // output an error message output.push('<li>No Data Found</li>'); } // append the output to the `data-role="content"` div on this page as a // listview and trigger the `create` event on its parent to style the // listview $this.children('[data-role="content"]').append('<ul data-role="listview">' + output.join('') + '</ul>').trigger('create'); }); });
Est ici ServerFile.php. Cela doit se connecter à la Base de données MySQL, faire de l'instruction Select, puis envoyer la sortie vers le navigateur encodés dans le format JSON.
<?php
//session_start();
$connection = mysql_connect("csmadison.dhcp.bsu.edu", "clbavender", "changeme");
$db = mysql_select_db("cs397_clbavender", $connection);
//include your database connection code
// include_once('database-connection.php');
//query your MySQL server for whatever information you want
$query = mysql_query("SELECT * FROM Users WHERE Username ='Ted'", $db) or trigger_error(mysql_error());
//create an output array
$output = array();
//if the MySQL query returned any results
if (mysql_affected_rows() > 0) {
//iterate through the results of your query
while ($row = mysql_fetch_assoc($query)) {
//add the results of your query to the output variable
$output[] = $row;
}
//send your output to the browser encoded in the JSON format
echo json_encode(array('status' => 'success', 'items' => $output));
} else {
//if no records were found in the database then output an error message encoded in the JSON format
echo json_encode(array('status' => 'error', 'items' => $output));
}
?>
Pourtant, rien n'est à montrer ici. Que faisons-nous partir d'ici?
- Avez-vous fait tout de débogage pour identifier où dans le code est le problème? Je conseillerais de le mettre
echo json_encode(array('status' => 'success')); exit;
à l'ouverture de ServerFile.php pour voir si le problème est que c'est étouffée quelque part avec le SQL, ou si c'est un problème avec la lecture de ce retour. - Ou, autre façon de déboguer serait de mettre
console.log(response);
juste à l'intérieur de votre $.getJSON fonction. La réponse apparaîtra alors dans votre Firebug.
Vous devez vous connecter pour publier un commentaire.
Première chose d'abord. Essayez de déterminer où est le problème viennent de, côté serveur ou côté client.
Imprimer votre requête de base de données et encodé en json peut être utile. Si vous êtes à la création d'une API simple service, vous devriez être en mesure d'entrer http://www.WEBSITENAME.com/ServerFile.php à l'aide de votre navigateur et de regarder la façon dont la sortie est.
L'utilisation de l'écho à imprimer des choses avec php.
Si tout a l'air ok, le temps d'imprimer la réponse du serveur en javascript et voir ce qui est à l'arrêt.
Utiliser la console.journal pour imprimer chose avec javascript. Les journaux doivent apparaître dans le logcat section de l'éclipse (puisque vous êtes en développement d'applications android)