我正在制作用户可以搜索其他用户的mysql数据库,在搜索时我希望它返回用户“id”和“name”,因为可能有同名的用户,所以我包含id。这是我的.php
编辑:因为我没有得到我想要的答案,我认为我没有说清楚,现在我正在考虑用另一种方式来尝试。假设 ID 将在索引0和 NAME 中 在索引1中,依此类推..请参阅我的php编辑评论。
$result = mysql_query("SELECT `id`,`name` FROM `user` WHERE `name` LIKE '$search%'");
mysql_close($con);
$numrows = mysql_num_rows($result);
if ($numrows!=0){
while ($row = mysql_fetch_assoc ($result)){
$id = $row['id'];
$name = $row['name'];
echo ("$id,$name///");
上面是我的第一次尝试,注意:编辑是一个例子,我在想的是make id,并且名称分开,然后在Xcode中将它们再分成两个不同的数组让我们说,所有ID都将在ID数组中每次“跳过名字”时跳过一个索引,名字数组中的NAMES再次跳过id。
// EDIT: echo "%id///";
// EDIT: echo "%name///";
}
}else{
echo "fail";
}
然后在Xcode中
- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
{
if ([searchUsers.text length] != 0) {
NSString *FindURL = [NSString stringWithFormat:@"http://localhost/search.php?search=%@",searchUsers.text];
// to execute php code
NSData *URLData = [NSData dataWithContentsOfURL:[NSURL URLWithString:FindURL]];
// to receive the returend value
NSString *DataResult = [[NSString alloc] initWithData:URLData encoding:NSUTF8StringEncoding];
NSArray *FriendsArray = [DataResult componentsSeparatedByString:@"///"];
userlist = [[NSMutableArray alloc] initWithArray:FriendsArray];
//[self searchDidSearch];
[self.tableView reloadData];
}
}
结果如“1,somename”“2,somename”等。我想要的是分割对象,以便 NAME 将在tableviewcell标题中,并在tableviewcell字幕中 ID ,我想为每一行应用它。
是否有更简单的方法,或者我做错了什么?
答案 0 :(得分:2)
您可以尝试使PHP输出更像NSDictionary 例如:
{
{
"id" = 1;
"name" = name1;
},
{
"id" = 1;
"name" = name2;
},
}
然后您可以像这样访问“name”的值(通过使用fast enumeration创建名称数组):
NSMutableArray *namesArray = [[NSMutableArray alloc]init];
for(NSDictionary *dict in dataArray) //dataArray NSArray of data from PHP output
{
[result addObject:[dict objectForKey:@"name"]];
}
以及之后显示tableViewCell字幕中的名称,并带有以下代码(在cellForRowAtIndexPath方法中):
cell.textLabel.text = [NSString stringWithFormat:@"%@",[result objectAtIndex:indexpathRow]];
这不是最好的方法,但我认为将来更容易使用这样的数组。快乐的编码! :)
答案 1 :(得分:1)
你没有做错任何事,我想你还有一步要走。 循环遍历所有结果并将字符串拆分为:
NSString * tempItem = [FriendsArray objectAtIndex:i]; //where i is each index, possibly in a loop
NSArray * splitObject = [tempItem componentsSeparatedByString:@","];
现在,splitObject的第一个对象是id,第二个对象是名称。您可以将其转换为循环并获得所需内容。传递这些数据有很多不同的方法,我会把它留给你。