我当前制作的程序允许用户在文本框中输入文本,当按下提交按钮时,该文本框会将数据发送到服务器。
但是,我有多个View控制器,每个控制器都有自己的输入框供用户输入数据。示例:VC1具有ID和密码文本框,VC2具有年龄文本框,VC3具有国籍文本框。
是否可以一次提交每个VC的所有数据?我只使用一个php文件来执行此操作吗?我对这个概念很困惑,所以任何帮助都会很棒!
我的PHP代码:
<?php
$username = "root";
$database = "testdb";
mysql_connect('localhost', $username);
@mysql_select_db($database) or die ("Unable to find database");
$name = @$_GET["name"];
$message = @$_GET["message"];
$query = "INSERT INTO test VALUES ('', '$name', '$message')";
mysql_query($query) or die (mysql_error("error"));
mysql_close();
?>
和我的对象 .h
#import <UIKit/UIKit.h>
#define kPostURL @"http://localhost/TESTCONNECT.php" //variable to use whenever
#define kName @"name"
#define kMessage @"message"
@interface FirstViewController : UIViewController{
IBOutlet UITextField *nameText;
IBOutlet UITextView *messageText;
NSURLConnection *postConnection;
}
-(IBAction)post:(id)sender;
@end
的.m
#import "FirstViewController.h"
@interface FirstViewController ()
@end
@implementation FirstViewController
- (void)viewDidLoad {
[super viewDidLoad];
}
-(void) postMessage:(NSString*) message withName:(NSString *) name{
if(name !=nil && message !=nil){
NSMutableString *postString = [NSMutableString stringWithString:kPostURL];
[postString appendString:[NSString stringWithFormat:@"?%@=%@", kName, name]];
[postString appendString: [NSString stringWithFormat:@"&%@=%@", kMessage, message]];
[postString setString:[postString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
NSMutableURLRequest *request =[[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString: postString]];
[request setHTTPMethod:@"POST"];
postConnection =[[NSURLConnection alloc]initWithRequest:request delegate:self startImmediately:YES];
}
}
-(IBAction)post:(id)sender{
[self postMessage:messageText.text withName:nameText.text];
[messageText resignFirstResponder];
messageText.text=nil;
nameText.text=nil;
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
}
@end
答案 0 :(得分:0)
您的字段如何显示?它们都是单一形式还是多种形式?
您可以在单个表单中显示所有字段,然后表单的所有数据将通过表单上的提交按钮以相同的$ _POST提交到表单中的action参数。
如果字段以不同的形式保存在同一页面上,您可以使用javascript收集所有数据并立即提交。
如果所有字段都在不同的视图/页面上,那么可以一次性传递所有数据;将$ _POST数据从一个视图传递到下一个视图并将其放在隐藏字段中,以便在最后一步,您可以一次提交所有数据。
答案 1 :(得分:0)
即使你的URL参数存在于几个MVC,作为“登录”句柄,你应该访问php 立即归档。 如果你想使用参数,只需创建一个.h文件,定义全局变量使用“extern”,然后在你的多个MVC中分配它们,这样你就可以得到你的数据。
答案 2 :(得分:0)
您必须在appdelegate中创建一个字典,并在每个视图控制器中使用键将字段保存在字典中,并且在最终视图控制器中,您可以从dictionary1&gt;提交数据到服务器。在AppDelegate中创建字典作为PostDataDictionary; 2 - ;现在在您的视图中控制器[PostdataDictionary setObject:@&#34;&#34; objctforkey:@&#34;&#34;];为每个视图设置这样的对象控制器现在在最终视图控制器ASIFormDataRequest *请求中; request = [ASIFormDataRequest requestWithURL:[NSURL URLWithString:[NSString stringWithFormat:@&#34;&#34;]]]; [request setDelegate:self];
[request setPostValue:[appDelegate.PostDataDictionary objectForKey:@"FirstName"] forKey:@"fname"];
[request setPostValue:[appDelegate.PostDataDictionary objectForKey:@"LastName"] forKey:@"lname"];
[request addData:imagedata withFileName:@"file1.png" andContentType:@"image/jpeg" forKey:@"photo"];
[request startAsynchronous];
}
}