Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PhoneGap jquerymobile SQL动态链接_Sql_Jquery Mobile_Cordova_Load_Dynamic Pages - Fatal编程技术网

PhoneGap jquerymobile SQL动态链接

PhoneGap jquerymobile SQL动态链接,sql,jquery-mobile,cordova,load,dynamic-pages,Sql,Jquery Mobile,Cordova,Load,Dynamic Pages,我正在jquery移动框架的帮助下构建一个PhoneGap iOS应用程序。我有一个主要的jquery mobile自动划分列表,由SQL数据库填充。此自动划分列表按预期工作。当单击此动态列表的一个链接时,应该会触发一个动态页面,其中包含同一SQL数据库中包含的一些额外细节。但是,当数据库不加载页面详细信息时 我在jquerymobile框架之外成功地完成了这项工作,只做了一些脚本更改。但我真的需要来自jquerymobile的自动除法器函数 首先,我假设此动态页面位于DOM之外,但在mobil

我正在jquery移动框架的帮助下构建一个PhoneGap iOS应用程序。我有一个主要的jquery mobile自动划分列表,由SQL数据库填充。此自动划分列表按预期工作。当单击此动态列表的一个链接时,应该会触发一个动态页面,其中包含同一SQL数据库中包含的一些额外细节。但是,当数据库不加载页面详细信息时

我在jquerymobile框架之外成功地完成了这项工作,只做了一些脚本更改。但我真的需要来自jquerymobile的自动除法器函数

首先,我假设此动态页面位于DOM之外,但在mobileinit添加以下函数并不能解决我的SQL加载问题:

$( 'fooddetails.html?id' ).live( 'pagebeforecreate',function(event, ui){
                                     alert( 'This page was just inserted into the dom!' );
                                     });
下面是我的数据库的完整脚本&触发额外详细信息页面的动态URL:

var db;
var dbCreated = false;
document.addEventListener("deviceready", onDeviceReady, false);

function onDeviceReady() {
    db = window.openDatabase("FoodDirectoryDB", "1.0", "PhoneGap", 200000);
    if (dbCreated)
        db.transaction(getAlimentaries, transaction_error);
    else
        db.transaction(populateDB, transaction_error, populateDB_success);
}

function transaction_error(tx, error) {
    $('#busy').hide();
    alert("Database Error: " + error);
}

function populateDB_success() {
    dbCreated = true;
    db.transaction(getAlimentaries, transaction_error);
}

function getAlimentaries(tx) {
    var sql = "select e.id, e.foodName, e.groupfoodName, e.quantity, e.picture, count(r.id) reportCount " + 
                "from food e left join food r on r.managerId = e.id " +
                "group by e.id order by e.foodName ";
    tx.executeSql(sql, [], getAlimentaries_success);
}

function getAlimentaries_success(tx, results) {
    $('#busy').hide();
    $('#foodList li').remove();
    var len = results.rows.length;
    for (var i=0; i<len; i++) {
        var food = results.rows.item(i);
        console.log(food.foodName);

        $('#foodList').append('<li><a href="fooddetails.html?id=' + food.id + '">' +
                '<img src="pics/' + food.picture + '" class="arrow-r"/>' +
                '<p class="line1">' + food.foodName + '</p>' +
                '</a></li>');

        $( 'employeedetails.html?id' ).live( 'pageshow',function(event, ui){
                                            alert( 'This page was just inserted into the dom!' );
                                            });

    }
    $('#foodList').listview('refresh');
    db = null;
}

function populateDB(tx) {
    $('#busy').show();
    tx.executeSql('DROP TABLE IF EXISTS food');
    var sql = 
        "CREATE TABLE IF NOT EXISTS food ( "+
        "id INTEGER PRIMARY KEY AUTOINCREMENT, " +
        "foodName VARCHAR(50), " +
        "groupfoodName VARCHAR(50), " +
        "quantity VARCHAR(50), " +
        "portion VARCHAR(50), " + 
        "managerId INTEGER, " +
        "glucides VARCHAR(30), " + 
        "picture VARCHAR(200))";
    tx.executeSql(sql);


    tx.executeSql("INSERT INTO food (id,foodName,groupfoodName,managerId,quantity,portion,glucides,picture) VALUES (1,'Abricot','Fruits frais et fruits secs',1,'1 abricot','65g','5','fruits_legumes.png')");
    tx.executeSql("INSERT INTO food (id,foodName,groupfoodName,managerId,quantity,portion,glucides,picture) VALUES (2,'Abricots secs','Fruits frais et fruits secs',1,'4 abricots secs','80g','30','fruits_legumes.png')");
我还试图将数据ajax=false relexternal添加到此动态链接中,但不幸的是,这并没有改变,我了解到动态链接中的这些属性未经授权:

$('#foodList').append('<li><a href="fooddetails.html?id=' + food.id + '">' +
以下是未正确加载的详细信息动态页面的脚本:

    var id = getUrlVars()["id"];
var db;

document.addEventListener("deviceready", onDeviceReady, false);

function onDeviceReady() {
    console.log("opening database");
    db = window.openDatabase("FoodDirectoryDB", "1.0", "PhoneGap", 200000);
    console.log("database opened");
    db.transaction(getAlimentary, transaction_error);

}

function transaction_error(tx, error) {
    $('#busy').hide();
    alert("Database Error: " + error);
}

function getAlimentary(tx) {
    $('#busy').show();
    var sql = "select e.id, e.foodName, e.groupfoodName, e.managerId, e.quantity, e.portion, e.glucides, " +
                "e.picture, m.foodName managerFirstName, m.groupfoodName managerLastName, count(r.id) reportCount " +
                "from food e left join food r on r.managerId = e.id left join food m on e.managerId = m.id " +
                "where e.id=:id group by e.groupfoodName order by e.groupfoodName, e.foodName";
    tx.executeSql(sql, [id], getAlimentary_success);
}

function getAlimentary_success(tx, results) {
    $('#busy').hide();
     $('#foodList li').remove();
    var food = results.rows.item(0);
    $('#foodPic').attr('src', 'pics/' + food.picture);
    $('#foodName').text(food.foodName);
    $('#foodgroupName').text(food.groupfoodName);
    $('#foodQuantity').text(food.quantity);
    $('#foodPortion').text(food.portion);

    console.log(food.glucides);
        if (food.glucides) {
        $('#actionList').append('<li><a href="tel:' + food.glucides + '"><p class="line1">Teneur en Glucides</p>' +
                '<p class="line2">' + food.glucides + '</p><img src="img/food.png" class="action-icon"/></a></li>');
    }
    $('#foodList').listview('refresh');
    db = null;
}

function getUrlVars() {
    var vars = [], hash;
    var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
    for(var i = 0; i < hashes.length; i++)
    {
        hash = hashes[i].split('=');
        vars.push(hash[0]);
        vars[hash[0]] = hash[1];
    }
    return vars;
}