melsom Skrevet 5. januar 2011 Del Skrevet 5. januar 2011 Behøver noe hjelp til å hente ut data fra osTicket API, som da er et ticketsystem. Return blir presentert på følgende måte (utdrag fra var_dump): array(1) { [0]=> object(stdClass)#2 (2) { ["question"]=> object(stdClass)#3 (4) { ["id"]=> int(25) ["created"]=> string(25) "2011-01-05T01:19:43+01:00" ["name"]=> string(4) "test" ["message"]=> string(4) "qasd" } ["answers"]=> array(1) { [0]=> object(stdClass)#4 (4) { ["id"]=> int(25) ["created"]=> string(25) "2011-01-05T01:25:06+01:00" ["name"]=> string(17) "Andreas Haakonsen" ["message"]=> string(3) "ler" } } } } En ticket kan ha flere svar. Her er jeg meget usikker på hvordan jeg skal gå frem for å hente ut data på korrekt måte, og hvordan få presentet på en webside. Det ble veldig mange arrays og variabler Er det noen der ute som kan hjelpe meg med en enkel kode her? Lenke til kommentar
emilkje Skrevet 5. januar 2011 Del Skrevet 5. januar 2011 (endret) Er det noen der ute som kan hjelpe meg med en enkel kode her? Jeg får ikke testet dette nå, men følgende kode tror jeg skal fungere.. $return inneholder resultatet du postet i kodesnutten i første post. $return = "resultat fra api request"; foreach($return as $ticket) { $asking_user = $ticket->question->name; $question = $ticket->question->message; echo "<h1>". $question ."</h1>"; echo "<p>Spurt av: " . $asking_user . "</p>"; echo "<h2>Svar:</h2>"; $answers = $ticket->answers; foreach($answers as $answer) { $name = $answer->name; $message = $answer->message; echo "<p>" . $name . ": " . $message . "</p>"; } } Dette er en veldig nedstrippet versjon av hva jeg selv ville ha gjort. Selv ville jeg ha laget en php klasse som du bruker som en "wrapper" av APIen. Jeg starter som regel med dette da det sparer meg mye tid under utviklingen av prosjektet. Jeg er usikker på om du bare kan klippe/lime dette da jeg ikke har fått testet det, men håper det hjelper deg med å se helhetsbildet =) Array aksesseres på denne måten: $value = $array['key']; eller itereres gjennom foreach. (hvis nøkkelen er nummer). StdClass aksesseres på denne måten: $value = $object->key Lykke til videre Endret 5. januar 2011 av emilkje Lenke til kommentar
melsom Skrevet 5. januar 2011 Forfatter Del Skrevet 5. januar 2011 Takk skal du ha emilkje! Det fungerte utmerket :-) Nå som jeg ser på koden din så ser jeg jo logikken i returen fra APIet, noe som er vel og bra. Skal se om jeg ikke får gjort som du sier, laget en wrapper klasse på dette. Lenke til kommentar
emilkje Skrevet 5. januar 2011 Del Skrevet 5. januar 2011 Hyggelig å kunne hjelpe! Ja det som er så fint med wrappere er at du kan abstraktere APIen slik at den kan brukes mye enklere. Si at class TicketEngine er wrapperen du har skrevet. Her er et eksempel på hvordan den kan anvendes: $te = new TicketEngine(); $tickets = $te->getAllTickets(); //loope gjennom alle tickets og vise dem som i tidligere eksempel eller hvis du ønsker å vise kun én ticket ved hjelp av ticketID: $te = new TicketEngine(); $ticket = $te->getTicket(ticketID); //Vise dataen relatert til gjeldende ticket eller kanskje du ønsker tickets fra en bestemt bruker: $te = new TicketEngine(); $tickets = $te->getTicketsFromUser(userID); //Vise resulterende tickets Vi ser med dette at så lenge man har en wrapper så blir det mye enklere å forholde seg til APIen. Hvis prosjektet skal skaleres opp så setter man veldig stor pris på abstraksjon (snakker av erfaring). Ingenting er verre enn å sjonglere med et større antall rå forespørsler mot api serveren, for da mister man fort oversikten. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå