Connessione PHP /database

di dna_programmer il
12 risposte
Ciao a tutti,sto realizzando un app che si deve collegare a un database Mysql e ricevere dei dati.Il mio problema e':

la richiesta dei dati la posso fare con PHP dove eseguo una specifica query e mi restituisce i dati dal db,però poi come faccio a inviare i dati estrapolati all'applicazione?

Vi ringrazio per l'attenzione

12 Risposte

  • Webservices.

    Ti fai una paginetta php che esegue determinate query sul db, prendendo eventualmente dei parametri di input dall' app (che sostanzialmente fa una semplice richiesta http con dei parametri in get o in post). PHP esegue la query su db, ottiene i dati e poi deve fare un ultima cosa: Stampare i dati formattati in JSON (è un esempio, ci sono anche altri modi). Dalla tua app poi ti parsi quel JSON e ottieni i tuoi dati
  • Ciao,allora mi sono informato un po sulla questione, mi sono bloccato a questo punto che mi e poco chiaro:
     dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); 
    . Da quello che ho capito riguarda i thread, peró mi potresti aiutare a capire meglio
  • E' una funzione di una libreria che si chiama GDC, in pratica ti permette di effettuare una chiamata asincrona.
    Se tu ad esempio facessi una chiamata ad un webservice normalmente, in attesa della risposta l' app sarebbe bloccata. Se però la chiamata la fai all' interno di questo blocco di codice, allora viene eseguito in un altro thread, senza utilizzare il main thread che cosi è libero di gestire l' interfaccia.
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
         NSData* responseData = [NSData dataWithContentsOfURL:[NSURL URLWithString:@""]];
    });
    //Resto del codice
    

    Edit: GDC è un insieme di servizi, il nome della libreria che implementa questi servizi in realtà è libdispatch.
    Grand Central Dispatch
  • A ho capito.
    Guarda allora mi blocco perchè praticamente nella pagina PHP io ritorno il valore booleano true o false e lo parso in json,solo che poi in xcode non so come trattarlo,non riesco a capire se
    
    
    NSJSONSerialization JSONObjectWithData
    
    ritorna una stringa,un dizionario, un array.
    Ho un pò di confusione in merito.
    MI potresti aiutare?
  • Allora, se il tuo servizio ritorna un array di valori allora quel metodo ritornerà un NSArray, se il tuo servizio ritorna un dizionario allora il valore di ritorno sarà un NSDictionary. Dipende dal JSON che stampi dal tuo file php.

    Se continui ad avere difficoltà posta il JSON e vediamo un pò che succede.
  • Allora io in pratica devo eseguire una query sul database e poi devo ritornare un booleano.
    Ecco il codice PHP per capirci meglio:
    
    
    $email=$_POST['email'];
    $pw=$_POST['pw'];
    $flag=false;
    $dati_json=NULL;
    
    $query="insert into utenti(email,pw) values('$email','$pw')";
    
    
    if(mysql_query($query))
    {
      $flag=true;//andato a buon fine
      $dati_json=json_encode($flag); 
      //echo $dati_json;
    
    }
    else
    {
      $flag=false;//andato male
      $dati_json=json_encode($flag); 
     // echo $dati_json;
    
    }
    
    
    
    Dalla parte client,devo prelevare il valore cioè true o false, e in base a quest'ultimi fare determinate cose
  • Mi scrivi l' output di questa pagina php?? cioè quello che stampa a video con l' echo (che non va commentato)?
  • Ho provato mi visualizza True o False
  • E' normale?
  • È normale perchè il tuo servizio ritorna solo quello. Comunque per comodità/convenzione ti conviene sempre stamparti un array formattato in json, ad esempio con chiave "flag" e il valore.
     json_encode(array("flag"=>$flag))
    poi ti prendi il tuo NSArray da xcode.
  • Scusa senti mi potresti far vedere la parte client che sto andando in confusione.cioe perchè io non dovrei ritornare piu valori ma solo uno che è o true o false in base all'esito della query
Devi accedere o registrarti per scrivere nel forum
12 risposte