Pozdrav korisniče,

Za pun pristup forumu odaberi jedno od ova dva dugmeta:

Login with Facebook Sign In with Google Sign In with OpenID Sign In with Twitter

In this Discussion

Tagged

Ovaj web site se ne trudi biti kompatibilnim sa Internet Explorer web preglednikom. Sve se u njemu vidi, ali za puni dojam preporučamo neki pošteni web preglednik poput Safarija, Firefoxa ili Google Chromea.

Top Posters

Članovi (6489)

  • jigMsaw
  • Salko
  • hrca10
  • Dr Beast
  • applemanija
  • fosavance
  • mačak
  • tr00pa
  • Wiseguy
  • Dariobo
  • mkladaric
  • Beast
  • Marijo
  • iLuka19
  • omakad
  • Virtualni
  • pbaburic
  • stanjkof
  • Riki
  • Primat

Tko je online (2)

Uključeno je povezivanje korisničkih računa na glavnom sajtu i forumu. Ukoliko vidite ovu poruku i ne možete se logirati na forum potrebno je za pristup koristiti podatke s kojima ste se registrirali na glavni site. Ukoliko se još niste registrirali na glavnom sajtu potrebno se ponovo registrirati, a sustav će vas pri prvom logiranju prijaviti na vaš forumski account. Probleme i dojmove možete napisati ovdje ili poslati mail na mac.korisnik@mackorisnik.com
Objective-C i MySQL
  • Pozdrav svima... Evo da malo oživimo ovaj dio foruma. Upravo radim neko povezivanje iPhone app i MySQL baze podataka pa me zanima kako vi to radite? Ja imam dva rješenja: jedno je .php skripta koja vraća .xml, a drugo Java servlet koji vraća .xml. Kakva su vaša iskustva? Danas san naletia i na ovo : link Je li neko to koristia?

  • 17 Komentara sorted by
  • Za koristit ovo s linka ti treba MySQL server koji prima konekcije sa svih IP-ova sto ti je vec dosta veliki rizik, pogotovo kad ljudima isporucis aplikaciju iz koje bi se uz jako malo truda dali izvuci pristupni podaci. Ukratko, zaboravi.

    Komuniciranje xml fileovima je sasvim ok rjesenje i daje ti puno bolju kontrolu nad pristupom bazi, a mozes imat i dio logike na serveru da rasteretis iOS.

    A sta ces tocno koristit za generiranje xml-a, kao sto @User kaze, totalno svejedno :)

  • Pa ako vraća XML nije li svejedno kako se to odrađuje na serveru? :)

    Games dont make people violent, lag does.
  • ... i radin ja tako skripticu i sve ok, ali skužin da .php kad stavin na server promini encoding u mac-roman. Zašto? I kako mogu vratit to na UTF-8? U XML file san stavia UTF-8, znači govorin baš o php skripti...

  • Cek, prebaci ti encoding php filea ili ti php file da krivi output iz baze? Ako je ovo drug onda nakon spajanja na mysql server i selektiranja baze okini jedan mysql_set_charset("utf8");

    Jer nije mi bas jasno kakve veze ima sta si stavio u xml file i u koji si to uopce file i gdje stavio. Ako mozes pastaj taj dio koda tu.

  • ma meni zapravo .php stvori .xml file (znači ekstenzija ostaje .php) Problem je šta ja lokalno napravin kod, prominin encoding na utf-8, a kad ga stavin na server i pokušan na serveru editirat vidin da je encoding mac-roman. Baza je cila u utf-8 charsetu, problem je .php file. Neznan koji točno dio koda te zanima pa evo sve :-D nije puno

    <?php 
    $table="mysqltable";
    $category = $_POST['category'];
    if($category=='one') $table='one';
    if($category=='two') $table='two';
    if($category=='three') $table='three';
    $host = "mysqlhost.com"; 
    $user = "clark"; 
    $pass = "12345"; 
    $database = "mysqldatabase"; 
    
    error_reporting(E_ALL);
    $SQL_query = "SELECT * FROM ".$table;
    
    $DB_link = mysql_connect($host, $user, $pass) or die("Could not connect to host.");
    mysql_select_db($database, $DB_link) or die ("Could not find or access the database.");
    $result = mysql_query ($SQL_query, $DB_link) or die ("Data not found. Your SQL query didn't work... ");
    
    // we produce XML
    header("Content-type: text/xml;charset=UTF-8");
    $XML = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
    
    // root node
    $XML .= "<result>\n";
    // rows
    while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {    
    $XML .= "\t<row>\n"; 
    $i = 0;
    // cells
    foreach ($row as $cell) {
    // Escaping illegal characters - not tested actually ;)
    $cell = str_replace("&", "&amp;", $cell);
    $cell = str_replace("<", "&lt;", $cell);
    $cell = str_replace(">", "&gt;", $cell);
    $cell = str_replace("\"", "&quot;", $cell);
    $col_name = mysql_field_name($result,$i);
    // creates the "<tag>contents</tag>" representing the column
    $XML .= "\t\t<" . $col_name . ">" . $cell . "</" . $col_name . ">\n";
    $i++;
    }
    $XML .= "\t</row>\n"; 
    }
    $XML .= "</result>\n";
    
    // output the whole XML string
    echo $XML;
    
    ?> 
    
    Post edited by Clark Kent at 2011-02-02 04:37:47
  • Još nešto... Kako najbezbolnije poslat argumente .php skripti? Naravno, ne kroz URL... Naša san neka rješenja na netu ali ništa nije točno to šta mi triba... Šta je najgore ovo san već jedanput radia ali zaboravia. Triba sredit http zaglavlja...

    ovako... ovo je dio rješenja... kako sad dobit string iz .php???

    [NSMutableURLRequest* urlRequest = [NSMutableURLRequest requestWithURL:]; [urlRequest setHTTPMethod:@"POST"]; [urlRequest setHTTPBody:@"var1=val1&var2=val2"]; //Replace with your actual name/parm values [[NSURLConnection alloc] initWithRequest:urlRequest delegate:self];

    Post edited by Clark Kent at 2011-02-02 11:05:34
  • evo prvu stvar san riješia... vjerojatno je bia problem šta u bazi nije sve utf-8 (valjda, nisan pregledava cilu bazu) pa je ova linija koda pomogla:

    mysql_query("SET NAMES utf8");

    nakon mysql_connect()

    Post edited by Clark Kent at 2011-02-02 19:18:31
  • A sta sam ti gore napisao?

    ficho said: mysql_set_charset("utf8");

    Stavi to umjesto mysql_query("SET NAMES utf8"); jer je to preporuceni nacin.

    Radis s NSXMLParser klasom ili?

  • Nisan ni skužia da si to napisa :-D. Da, NSXML, malo prilagođen da XML podatke ubacuje u NSDictionary. A podatke php-u san ipak odlučia slat kroz URL kad i tako nisu to nikakvi tajni podaci...

  • Ako ti vec trebaju podaci u NSDictionaryu, zasto onda s PHPom ne generiras jednostavno property list u xml formatu? Ne moras ga direkt parsat nego ucitas fileNSURLConnectionom i onda u connectionDidFinishLoading:

    CFPropertyListRef plist = CFPropertyListCreateFromXMLData(kCFAllocatorDefault, (CFDataRef)plistData, kCFPropertyListImmutable, NULL);

    if ([(id)plist isKindOfClass:[NSDictionary class]]) { plistDict = (NSDictionary *)plist; }

    CFRelease(plist);

    --

    Naravno, plistData je NSData gdje u NSURLConnectionDelegate metodama spremas file, a plistDict je NSDictionary.

  • :-D da, ali sad san već ovo osposobia i ne pada mi na pamet vraćat se nazad... Ali fala na info, nije mi palo na pamet prenit plist... ali već san i parser napravia i sad se mučin sa encodingon... Iman problem šta ovo šta izvučen iz NSDictionary (u NSString) nije više utf-8. triba li negdi odredit encoding za nsdictionary ili kako reć parseru da je taj string utf-8? Pokuša san ove

    NSString* novi=[stari utf8string]; const char* utfStr = [yourString UTF8String];

    ne rade te šeme... :-( Čekaj, ovo kako si ti napisa ne triba parser nego se prenosi plist ka file?

    Post edited by Clark Kent at 2011-02-03 13:09:50
  • Clark Kent said: Čekaj, ovo kako si ti napisa ne triba parser nego se prenosi plist ka file?

    Da. Na zalost kod je u C-u jer NSDictionary iz nekog razloga nema initWithData: metodu, ali da ima vjerojatno bi ovo otprilike bila njezina implementacija :)

    Sav tekst na iPhoneu je po defaultu utf8 ako mu ne kazes drugacije. Problem ti je ocito u serveru. I PHP i MySQL jos uvijek vole stvarat probleme s nasim znakovima i obicno nakon sto sve isprobas neko rjesenje koje si vec probao upali :/

  • Da, ali meni je xml utf-8 sigurno... onda taj xml učitan u NSDictionary i kad učitan string iz NSDictionary nastane sranje :-D U NSDictionary-u hrvatski znakovi su prikazani nekin kodon, nije mi poznat taj kod... npr. ovako piše Zagrebačka: Zagreba\U0192\U00e7ka

  • To su ti 2 unicode znaka od kojih se sastoji "č". Negdje ti onda definitivno puca encoding, al nisam ovako na pamet vise siguran di bi mogo pucat.

  • Ja mislin da je ode problem (kroz konzolu vidin da tu prvi put "puca" encoding):

    NSString *string=[NSString stringWithContentsOfURL:url];

    taj url je .php skripta koja vraća xml, ali nisan siguran da je ovo ispravno. Da bi doda

    encoding:NSUTF8StringEncoding

    ova varijabla url bi mi tribala bit const char. Tu se lagano gubin... :-( Znaš li možda kako ovo natirat da radi dobro?

  • Za pocetak nemoj ucitavat stvari s neta sinkrono nego s NSURLConnection klasom.

  • Da, to je to. NSURLConnection, dohvaćanje NSData i onda NSString initWithData:encoding: Odlično, thnx ficho!