2012-10-01 15 views
0

我想利用這個空隙如何使用alertview clickedbutton更新msql中的值?

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

連接到MySQL和更新命名得分列中的值。

例如在開始列

五點,我按alertview按鈕「一個點」

那麼值列將變爲六分。

我不知道如何使用這個空白要做到這一點,我已經搜查大量的信息,但我沒有得到它

我使用JSON和PHP連接到MySQL,和我用phpmyadmin。

是否我做錯了,或者這個void不能用於此。

+0

只是想讓你知道你的語法沒有問題。所有發佈的答案都告訴你使用不同的實現。關於你的唯一「壞」是如果你決定改變一個按鈕的標題,這個實現將在不改變標題的情況下中斷。相反,如果按鈕的順序發生變化,下面的一些解決方案將會中斷。 – Justin

回答

0

使用按鈕指數

if(buttonIndex == 1) 
{ 
// write the logic here 
return; 
} 
else if(buttonIndex == 2) 
{ 
// write the logic here 
return; 
} 
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 

} 
} 
0

您必須使用的功能是

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

有關使用此功能,您的視圖控制器必須實現在.hyourViewController : UIViewController <UIAlertViewDelegate>

例如UIAlertViewDelegate

​​
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

0

的(無效),只是表示該代碼已被執行之後該方法不返回任何值。在另一方面,聲明,如:

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

表明一個NSInteger將在方法結束後歸還,所以你可以平等的方法實際上設置爲變量,像這樣:

NSInteger number = [self numberOfSectionsInTableView:scoreTable]; 

對於你的問題,如果你想通過PHP更新一些遠程服務器上的MySQL表,你需要創建一個方法,它可以使用NSURLConnection將一個值發佈到服務器上的PHP腳本。對於我來說,回答具體是遠遠不夠的,因爲它應該被分解成更小的問題。

問題1:如何編寫我的PHP腳本?

  1. 聲明傳入$ _ [「POST」]變量,將在郵件正文中
  2. 充分利用的mysql_connect到數據庫
  3. 編寫SQL語句來檢索要更新的記錄,並對其進行更新

問題2:如何發佈更新與NSURLConnection的

  1. 一個Web服務器創建一個具有一個NSURL對象URL到處理MySQL的更新
  2. 創建NSMutableURLRequest您.PHP腳本,給它NSURL和列舉HTTPMethod屬性設置爲@「POST」
  3. 困難的部分是創建bodyData,這將是編碼的標頭對應於PHP腳本中的$ _ ['POST']變量。
  4. 創建一個NSURLConnection的對象,設置請求屬性爲您NSMutableURLRequest並設置代表接收回調信息
  5. 啓動NSURLConnection的

我想,如果你搜索,這樣您就可以找到答案,兩者的這些問題。

好運

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]; 
     }}