使用JSON解析的Titanium

时间:2012-07-31 12:55:10

标签: json titanium

我正在尝试从PHPMyAdmin检索数据并尝试将数据显示给选择器更改.... 这是我的代码      var currentWin = Ti.UI.currentWindow;

 var sendit = Ti.Network.createHTTPClient();
 sendit.open('GET', 'http://localhost/mobileapp/productread.php');
 sendit.send();
  sendit.onload = function(){
 var json = JSON.parse(this.responseText);

 var json = json.mobile_product;

 var picker = Ti.UI.createPicker();
  // turn on the selection indicator (off by default)
 picker.selectionIndicator = true;

 var data = [];
  var pos;
 data.push (Ti.UI.createPickerRow({title:''+ json[pos].product_name +      '',custom_item:'b'}));
 }
 picker.add(data);
 currentWin.add(picker);



//var rw = db.execute("SELECT product_name, SUM(product_quantity)FROM mobile_product   GROUP BY product_name");

picker.addEventListener('change', function(e){
 var sendit = Ti.Network.createHTTPClient();
sendit.open('GET', 'http://localhost/mobileapp/orderread.php');
sendit.send();


sendit.onload = function(){
var json = JSON.parse(this.responseText);

var json = json.mobile_product;
 var pos;
var product_name = json[e.rowIndex];
 for (pos=0; pos < json.length; pos++) {

alert(''+json[pos].orders + '');
}
}
})
 }

此处,当我更改选择器时,将显示警报,其中包含列(订单)的所有值以进行单次更改...如果我将选择器更改为下一个,则会再次显示列中所有数据的警报。例如,如果我在列(顺序)中有10个值,并且如果我更改选择器值,则警报将出现10次,其中包含10个值。 我想根据选择器中的变化显示列中的值.... 我已从PHPMyAdmin检索数据(product_name)以获取选择器...当我更改选择器时,我希望显示该特定名称的值.... 我正在使用查询 SELECT SUM(product_quantity)作为订单来自mobile_product GROUP BY product_name 在PHP文件中.. 我的PHP文件是

<?php
//cust-mysql-123-04
$link = mysql_connect('localhost', 'root', '');
 if (!$link) {
die('Not connected : ' . mysql_error());
}
// make foo the current db
$db_selected = mysql_select_db('mobileapp', $link);
if (!$db_selected) {
die ('Can\'t use  : ' . mysql_error());
}
// Set the default namespace to utf8
mysql_query("SET NAMES 'utf8'");
if($result = mysql_query("SELECT SUM(product_quantity) As orders FROM mobile_product     GROUP BY product_name")) {
//echo mysql_num_rows($result);
  while ($row=mysql_fetch_array($result)) {
   // $json.= "<li>".$row['first_name']."</li>";
    $json[]=array(
    'orders'=>$row['orders']
    );
 }
}
echo json_encode(array( 'mobile_product'  =>   $json ));

mysql_close();
?>

1 个答案:

答案 0 :(得分:0)

您必须在SQL查询中包含不同的值才能使用。目前,似乎只有一个聚合函数SUM(),一个静态GROUP语句,这就是全部。这将始终返回相同的值。

您还返回了一个不同的列集,然后您可能希望使用as order alius。

如果要返回另一个集合,则需要组装不同的SQL SELECT语句。

考虑以下文件:

  1. This is how to prepare and execute a SQL statement against MySQL in php
  2. This function will clear many issues from the variable you pass to it
  3. Finally, you build the request with this method in Titanium.

  4. You may wish to review the following document regarding forming and consuming a GET request, as well