如何使用警报视图单击按钮更新sql中的值?

时间:2012-10-01 12:33:59

标签: php iphone mysql objective-c xcode

我想使用这个空白

-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
if ([[alertView buttonTitleAtIndex:buttonIndex] isEqualToString:@"One point,Not good"])
{
} 

连接到mysql并更新名为score的列中的值。

例如

在开头的列中有五个点,我按下alertview按钮“一点”

然后值列将变为六个点。

我不知道如何使用此虚空来做到这一点,我搜索了很多信息,但我没有得到它

我使用json和php连接到mysql,我使用phpmyadmin。

我是否做错了,或者这个无法使用。

6 个答案:

答案 0 :(得分:1)

首先为您的UIAlertview设置标签值

您应该使用按钮索引值而不是其字符串文本

//我刚刚将标记值设为204

-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
if(alertView.tag==204 && buttonIndex==1)
{

   //your logic

}

else if(alertView.tag==204 && buttonIndex==0)
{

   //your logic

}
}

答案 1 :(得分:0)

使用按钮索引

if(buttonIndex == 1)
{
// write the logic here
return;
}
else if(buttonIndex == 2)
{
// write the logic here
return;
}

答案 2 :(得分:0)

您必须使用的功能是

- (void)alertView:(UIAlertView *)alertView
clickedButtonAtIndex:(NSInteger)buttonIndex;

要使用此功能,ViewController必须实现UIAlertViewDelegate

<{1}} .h

中的

例如

yourViewController : UIViewController <UIAlertViewDelegate>

答案 3 :(得分:0)

您可以使用UIAlertView委托方法

- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex
{
if(buttonIndex == 0)
    {
        //do something if you press the "cancel" button
    } else if (buttonIndex == 1) {
        //do other thing with other button
    }
}

对于多个UIAlertView,您可以为每个警报视图设置标记

您还需要为UIAlertView设置委托: UIAlertViewDelegate

答案 4 :(得分:0)

方法声明开头的(void)只表示该方法在代码执行后没有返回任何值。另一方面,声明如下:

-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView;

表示在方法结束时将返回NSInteger,因此您实际上可以将方法设置为等于这样的变量:

NSInteger number = [self numberOfSectionsInTableView:scoreTable];

对于你的问题,如果你想通过PHP更新一些生活在远程服务器上的MySQL表,你需要创建一个方法,可以使用NSURLConnection将值发送到PHP脚本你的服务器。我特别回答这个问题远非超出范围,因为它应该被分解为更小的问题。

问题1:如何编写PHP脚本?

  1. 声明将在邮件正文中的传入$ _ ['POST']变量
  2. 将mysql_connect建立到您的数据库
  3. 编写SQL语句以检索要更新的记录并进行更新
  4. 问题2:如何使用NSURLConnection将更新发布到网络服务器

    1. 创建一个NSURL对象,其中包含处理MySQL更新的.php脚本的URL
    2. 创建NSMutableURLRequest,为其提供NSURL并将HTTPMethod属性设置为@“POST”
    3. 困难的部分是创建bodyData,它将是与PHP脚本中$ _ ['POST']变量对应的编码头。
    4. 创建NSURLConnection对象,将request属性设置为NSMutableURLRequest并将Delegate设置为接收回调信息
    5. 启动NSURLConnection
    6. 我认为如果你搜索SO,你可以找到这两个问题的答案。

      祝你好运

答案 5 :(得分:0)

首先,要检查是否已点击右键,您应该使用某些头文件中定义的内容。 例如:

#define CORRECT_BUTTON_TITLE @"One point,Not good"

然后,检查

    -(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
    {
    if ([[alertView buttonTitleAtIndex:buttonIndex] isEqualToString:CORRECT_BUTTON_TITLE])
    {
       // UPDATE YOUR DATABASE
    }} 

这应该允许您一次性轻松修改您的名字,避免错误。

第二,如何更新您的数据库。简单地说,您必须将指令发送到位于服务器上的PHP文件,“在您的MySQL数据库旁边”。您的说明是通过HTTP POST请求发送的。 在你的PHP中,

if( isset($_POST["updateScore"]) and isset($_POST["newScore"])) ){
   $newScore = intval( $_POST["newScore"] );
   // execute mysql queries
}

在XCode中,您可以使用ASIHTTPRequest发送POST请求。假设您的PHP文件位于www.example.com/update.php

-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
        {
        if ([[alertView buttonTitleAtIndex:buttonIndex] isEqualToString:CORRECT_BUTTON_TITLE])
        {
           // UPDATE YOUR DATABASE
           NSURL *url = [NSURL URLWithString:@"www.example.com/update.php"];
           ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
           [request setPostValue:@"1" forKey:@"updateScore"];
           [request setPostValue:[NSString stringWithFormat:@"%i", 6] forKey:@"newScore"];
           [request setDelegate:self];
           [request startAsynchronous];
        }}