使用JSON和SQL为移动应用开发

3
我正在尝试使用jQuery Mobile和Phonegap制作移动应用程序。但首先我想说我不是专业程序员;我只是一个学生,试图了解移动应用程序的基础知识。我有一些HTML和PHP方面的经验。 所以我正在尝试学习一些移动应用程序的基础知识;我之前尝试过,但由于时间不足,我当时没有时间调查问题。
我尝试实现的事情非常简单: 我有一个SQL数据库,其中包含姓名(1),他们工作的地方(2)和描述(3)。它们都有唯一的ID-所以有4个表。 我想从数据库中获取的第一件事是根据他们工作的地方获得他们的姓名。
我尝试跟随几个教程,指南并阅读了一些其他内容。这是我想到的。这是放在服务器上的PHP文件。
  <?

include 'includes/db.php';

$sql = mysql_query("SELECT name FROM work");

$array = Array();


if(mysql_num_rows($sql) > 0)
{
    for($i=0; $i < count($sql); $i++){
         $rec = mysql_fetch_assoc($sql);
        $array[name] = $rec['name'];                   
    }

    echo json_encode($array);
}

?>

当我打开这个PHP文件时,我从数据库中得到了一个JSON格式的结果。但是我只得到了一个名字,而在那个数据库中有更多的名字。

接下来,我会像这样在jQuery-Mobile应用程序中放置jQuery代码:

<script type="text/javascript">
        $(document).ready(function(){

            $.getJSON('names.php', function(data){
                $("#namesDiv").html(data);

            });

        });
</script>

当然,这不会返回任何内容;我仍在努力想方设法在HTML文件中显示所有名称的列表。但是在此之后,我希望能够点击列表中的名称并在下一页上获取该人员的描述。我知道在PHP中可以从URL(page.php?id=1)中获取ID,然后将其传递到查询中以获取正确的数据;但是当JSON处理所有内容时,如何做到这一点呢?
我希望有人能帮助我;我知道我要求很多,我的知识可能不足,但我真的非常感激任何帮助。
2个回答

0
jQuery.getJSON( url, [data], [success(data, textStatus, jqXHR)] )

url: A string containing the URL to which the request is sent.

data: A map or string that is sent to the server with the request.

success: (data, textStatus, jqXHR)A callback function that is executed if the request succeeds.

您可以像这样发送id

$.getJSON("names.php",{id:id)},function(json){

//do what ever you want with json

});

在你的names.php文件中添加以下代码:

$id=$_GET['id'];

查询部分

$temp = array();
$sql = mysql_query("SELECT name FROM work"); 

while ($row = mysql_fetch_assoc($sql)) {

if(empty($temp))
   $temp=array($row['name ']);
else    
   array_push($temp,$row['name ']);    
}
echo (json_encode($temp));

感谢您的回复。我尝试了您的查询,但似乎无法使其工作。在 PHP 页面上只出现一个空的[]。我正在努力理解代码中每一行所发生的事情,如果我理解正确的话,"$row" 包含了 $sql 查询的所有结果的数组,然后被 While 循环遍历。IF 将从行名创建一个数组,否则将结果推到数组的末尾?(我承认,我使用了 Google)但是我不理解 IF 语句中的 'empty' 是做什么的?是否有什么我忽略或遗漏了,导致它不能正常工作? - Lucas
在 while 循环后面放置 print_r($temp),它将打印出 $temp 的内容。我不知道为什么你得到了空结果,如果你的查询执行正常,你应该能够得到结果。 - Rafay
当我使用print_r($temp)时,仍然没有结果。我发现当我在while循环中将$result更改为$sql时,我会得到结果。所以绕过$results=mysql_query($sql); 我不知道它为什么这样做。但是这种绕过会造成任何伤害吗?谢谢您的回复。 - Lucas
@Lucas非常抱歉造成混淆,我复制粘贴了代码,所以出现了这个错误,我已经编辑了答案,你正在做的是正确的方式... - Rafay

0
你需要这样做:
$sql = mysql_query("SELECT name FROM work");
...
count($sql)

阅读mysql_query()的手册页面,您会发现它不会返回带有行的数组,而是返回一个资源。在循环中,您必须测试mysql_fetch_assoc()的返回值。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接