Thursday 19 December 2013

Read the Records using JSON in iPhone

APILinks.txt


Read:
            http://.../JSON/student.php?action=list

Add:
            http://…/JSON/student.php?action=add&Name=Alex&Age=16&Perc=90

Edit:
            http://.../JSON/student.php?action=edit&Name=Alex&Age=16&Perc=90.86&StudentId=3

Delete:
            http://.../JSON/student.php?action=delete&StudentId=3


student.php (Json File)

<?php
            $DB_Host = "localhost";
            $DB_Name = "test_ios_trainees";
            $DB_Username = "root";
            $DB_Password = "root123";
           
            $WEBSITE_URL = "http://.../JSON/";
           
            $con = mysql_connect($DB_Host, $DB_Username, $DB_Password) or die(mysql_errno());
            $db = mysql_select_db($DB_Name, $con) or die(mysql_error());
           
            $action = ( isset($_REQUEST["action"]) && trim($_REQUEST["action"]) != "" ) ? trim($_REQUEST["action"]) : "";
           
            if($action == "list")
            {
                        $jsonRecArr = array();
                       
                        $sqry = "SELECT * FROM students ORDER BY Name ASC";
                        $sres = mysql_query($sqry) or die("can not select form students - ".mysql_error());
                        while($srow = mysql_fetch_array($sres))
                        {
                                    $recStr = '{"StudentId":"'.trim($srow["StudentId"]).'", "Name":"'.trim($srow["Name"]).'", "Age":"'.trim($srow["Age"]).'", "Perc":"'.trim($srow["Perc"]).'"}';
                                   
                                    array_push($jsonRecArr, $recStr);
                        }
                        mysql_free_result($sres);
           
                        $json = '{"students":['.implode(",", $jsonRecArr).']}';
                       
                        echo $json;
                        exit;
            }
            else if($action == "add")
            {
                        if(        isset($_REQUEST["Name"]) && trim($_REQUEST["Name"]) != "" &&
                                    isset($_REQUEST["Age"]) && trim($_REQUEST["Age"]) != "" &&
                                    isset($_REQUEST["Perc"]) && trim($_REQUEST["Perc"]) != "")
                        {
                                    $iqry = "INSERT INTO students SET
                                                                                                                                    Name = '".trim($_REQUEST["Name"])."',
                                                                                                                                    Age = '".(int)trim($_REQUEST["Age"])."',
                                                                                                                                    Perc = '".(float)trim($_REQUEST["Perc"])."'";
                                                                                                                                                           
                                    mysql_query($iqry) or die("can not insert into students - ".mysql_error());              
                                   
                                    echo "OK";
                                    exit;                                                    
                        }
                        else
                        {
                                    echo "INVALID PARAMETER";
                                    exit;
                        }
            }
            else if($action == "edit")
            {
                        if(        isset($_REQUEST["StudentId"]) && trim($_REQUEST["StudentId"]) != "" &&
                                    isset($_REQUEST["Name"]) && trim($_REQUEST["Name"]) != "" &&
                                    isset($_REQUEST["Age"]) && trim($_REQUEST["Age"]) != "" &&
                                    isset($_REQUEST["Perc"]) && trim($_REQUEST["Perc"]) != "")
                        {
                                    $iqry = "UPDATE students SET
                                                                                                                        Name = '".trim($_REQUEST["Name"])."',
                                                                                                                        Age = '".(int)trim($_REQUEST["Age"])."',
                                                                                                                        Perc = '".(float)trim($_REQUEST["Perc"])."'
                                                                                                            WHERE StudentId = '".trim($_REQUEST["StudentId"])."'";
                                                                                                                                                           
                                    mysql_query($iqry) or die("can not update students - ".mysql_error());                                                                               
                                   
                                    echo "OK";
                                    exit;
                        }
                        else
                        {
                                    echo "INVALID PARAMETER";
                                    exit;
                        }
            }
            else if($action == "delete")
            {
                        if(        isset($_REQUEST["StudentId"]) && trim($_REQUEST["StudentId"]) != "")
                        {
                                    $iqry = "DELETE FROM students WHERE StudentId = '".trim($_REQUEST["StudentId"])."'";                                                                                                                                                         
                                    mysql_query($iqry) or die("can not delete from students - ".mysql_error());            
                                   
                                    echo "OK";
                                    exit;                                                    
                        }                     
                        else
                        {
                                    echo "INVALID PARAMETER";
                                    exit;
                        }
            }
            else
            {
                        echo "Nothing is here for you!";
                        exit;
            }
?>       


Import JSON Whole file for Framework


AppDelegate.h

@property (nonatomic, retain) NSString *apiURL;

AppDelegate.m

@synthesize apiURL;

In didfinisj=h method..
    apiURL = @"http://.../JSON/";

ViewController.h


#import <UIKit/UIKit.h>

@class AppDelegate;

@interface ViewController : UIViewController <UITableViewDataSource, UITableViewDelegate>
{
    AppDelegate *appDel;
   
    NSMutableArray *recordsArr;
}

@property (nonatomic, retain) IBOutlet UITableView *recordTblView;

@property (nonatomic, retain) IBOutlet UIActivityIndicatorView *processActView;

@end

ViewController.m


#import "ViewController.h"
#import "AppDelegate.h"
#import "Student.h"
#import "MyFunctions.h"
#import "StudentCellViewController.h"

@implementation ViewController

@synthesize recordTblView,
            processActView;

- (void)viewDidLoad
{
    [super viewDidLoad];
   
    appDel = (ip24AppDelegate *)[[UIApplication sharedApplication] delegate];
   
    processActView.hidden = NO;
   
    NSOperationQueue *queue = [NSOperationQueue new];
    NSInvocationOperation *operation = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(recordsRequest) object:nil];
    [queue addOperation:operation];
    [operation release];
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];   
}

- (void)recordsRequest
{
    NSString *post =[NSString stringWithFormat:@""];
    NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];
    NSString *postLength = [NSString stringWithFormat:@"%d", [postData length]];
   
    NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease];
    [request setURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@student.php?action=list", appDel.apiURL]]];
   
    [request setHTTPMethod:@"POST"];
    [request setValue:postLength forHTTPHeaderField:@"Content-Length"];
    [request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
    [request setHTTPBody:postData];
   
    NSURLResponse *response;
    NSData *urlData=[NSURLConnection sendSynchronousRequest:request returningResponse:&response error:nil];
    NSString *data= [[NSString alloc]initWithData:urlData encoding:NSUTF8StringEncoding];
   
    [self performSelectorOnMainThread:@selector(recordResponse:) withObject:data waitUntilDone:NO];
}

- (void)recordResponse:(NSString *)str
{  
    recordsArr = [Student readRecords:str];
   
    [recordTblView reloadData];
   
    processActView.hidden = YES;
}

#pragma mark - Table Methods


- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    return 100;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return recordsArr.count;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";
   
    UITableViewCell *cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
   
    Student *sObj = [recordsArr objectAtIndex:indexPath.row];
   
    StudentCellViewController *studentCellVC = [[StudentCellViewController alloc] init];
    studentCellVC.studentObj = sObj;
   
    [cell.contentView addSubview:studentCellVC.view];
   
    return cell;
}

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
    Student *sObj = [recordsArr objectAtIndex:indexPath.row];
   
    NSOperationQueue *queue = [NSOperationQueue new];
    NSInvocationOperation *operation = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(deleteRecordRequest:) object:sObj];
    [queue addOperation:operation];
   
    [recordsArr removeObjectAtIndex:indexPath.row];
   
    [recordTblView beginUpdates];
    [recordTblView deleteRowsAtIndexPaths:[[NSArray alloc] initWithObjects:indexPath, nil] withRowAnimation:UITableViewRowAnimationMiddle];
    [recordTblView endUpdates];
}

- (void)dealloc
{
    [recordTblView release];
    [processActView release];
   
    [super dealloc];
}

@end

MyFunctions.h


#import <Foundation/Foundation.h>

@interface MyFunctions : NSObject

+ (NSString *)trim:(NSString *)stringToTrim;

@end

MyFunctions.m


#import "MyFunctions.h"
@implementation MyFunctions

+ (NSString *)trim:(NSString *)stringToTrim
{
            return [stringToTrim stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
}

@end

Student.h

#import <Foundation/Foundation.h>

@interface Student : NSObject

@property (nonatomic, retain) NSString  *StudentId,
                                        *Name,
                                        *Age,
                                        *Perc;

+ (NSMutableArray *)readRecords:(NSString *)dataStr;

@end


Student.m

 

#import "Student.h"
#import "SBJson.h"
#import "NSObject+SBJson.h"
#import "MyFunctions.h"

@implementation Student

@synthesize StudentId,
            Name,
            Age,
            Perc;

+ (NSMutableArray *)readRecords:(NSString *)dataStr
{
    NSMutableArray *recArr = [[NSMutableArray alloc] init];
   
    NSDictionary *json = [dataStr JSONValue];
   
    NSArray *items = [json valueForKey:@"students"];
    NSEnumerator *enumerator = [items objectEnumerator];
    NSDictionary *item;
   
    while((item = (NSDictionary *)[enumerator nextObject]))
    {
        Student *sObj = [[Student alloc] init];       
        sObj.StudentId = [MyFunctions trim:[item objectForKey:@"StudentId"]];
        sObj.Name = [MyFunctions trim:[item objectForKey:@"Name"]];
        sObj.Age = [MyFunctions trim:[item objectForKey:@"Age"]];
        sObj.Perc = [MyFunctions trim:[item objectForKey:@"Perc"]];
       
        [recArr addObject:sObj];
    }
   
    return recArr;
}

@end

StudentCellViewController.h


#import <UIKit/UIKit.h>

@class Student;

@interface StudentCellViewController : UIViewController

@property (nonatomic, retain) IBOutlet UILabel  *NameLbl,
                                                *AgeLbl,
                                                *PercLbl;

@property (nonatomic, retain) Student *studentObj;

@end

StudentCellViewController.m


#import "StudentCellViewController.h"
#import "Student.h"
#import "MyFunctions.h"

@implementation StudentCellViewController

@synthesize NameLbl,
            AgeLbl,
            PercLbl;

@synthesize studentObj;

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}

- (void)viewDidLoad
{
    [super viewDidLoad];
   
    NameLbl.text = [MyFunctions trim:studentObj.Name];
    AgeLbl.text = [NSString stringWithFormat:@"%@yr", [MyFunctions trim:studentObj.Age]];
    PercLbl.text = [NSString stringWithFormat:@"%@%%", [MyFunctions trim:studentObj.Perc]];
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end

No comments:

Post a Comment

Comment