enva Skrevet 26. februar 2010 Del Skrevet 26. februar 2010 (endret) Eeeh Hvor skal jeg legge inn kodene. Og skal jeg legge inn begge de "eksemplene" du laget over? Endret 26. februar 2010 av enva Lenke til kommentar
enva Skrevet 26. februar 2010 Del Skrevet 26. februar 2010 Hvis det er riktig at dette skal inn i "class.avinor.php" function fix_norwegian_characters( $subject ) { // Hvilke bokstaver skal vi se etter? $search = array( 'Æ', 'Ø', 'Å', 'æ', 'ø', 'å' ); // Hvis de finnes, bytt de ut med følgende $replace = array( 'A', 'O', 'A', 'a', 'o', 'a' ); // Hvis du opplever spørsmålstegn eller andre rare symboler // istedet for AOA, fjerner du kommentaren fra linjen under: // $subject = utf8_decode( $subject ); // Returner nytt, korrekt navn return str_replace( $search, $replace, $subject ); } Så blir det seende ut slik -> http://trondheimlufthavn.net/test1.php# Lenke til kommentar
Runar Skrevet 26. februar 2010 Del Skrevet 26. februar 2010 fix_norwegian_characters() er en funksjon du kan bruke hvis du må gjøre norske bokstaver, Æ, Ø og Å om til de mer nøytrale A, O og A. Den kan du legge øverst i samme fil hvor dataene vises (den du postet øverst på forrige side), eller i en ekstern fil du inkluderer. Hvis du ikke visste det fra før, så brukes funksjoner på følgende måte: <?php echo fix_norwegian_characters( $airport ); ?> Her blir variabelen $airport sendt til funksjonen vi har laget og returnerer i det du ba om, hvis ikke alt skjærer seg. Du må bytte ut utf8_decode() som er brukt i linkene (-elementene) jeg viste deg i denne posten med den nye funksjonen vi har laget. Dette bør du klare selv Lenke til kommentar
enva Skrevet 26. februar 2010 Del Skrevet 26. februar 2010 Ble alt for mye på en gang her nå Beklager. Nå har jeg satt inn så mye overalt at det bare blir kluss. Lenke til kommentar
Runar Skrevet 26. februar 2010 Del Skrevet 26. februar 2010 Ta kvelden og kast deg over problemene i morgen. Det er lurt å gi seg når alt bare blir kluss Hvis du fortsatt ikke finner løsningen i morgen, så legger du ut alle filer du har rørt etter at de sist fungerte her og sender meg linken, så skal jeg ta en titt. Lenke til kommentar
enva Skrevet 26. februar 2010 Del Skrevet 26. februar 2010 Jeg har lagt inn denne i tabellen nå: <td> <a href="/<?php echo fix_norwegian_characters($flight['airline']['name']); ?>.html"> <img src="<?php echo $flight['airline']['icon']; ?>" alt="" class="airlineIcon" /> <?php echo fix_norwegian_characters($flight['airline']['name']); ?> </a> </td> Også har jeg puttet denne inn i class.avinor.php (API'n): function fix_norwegian_characters( $subject ) { // Hvilke bokstaver skal vi se etter? $search = array( 'Æ', 'Ø', 'Å', 'æ', 'ø', 'å' ); // Hvis de finnes, bytt de ut med følgende $replace = array( 'A', 'O', 'A', 'a', 'o', 'a' ); // Hvis du opplever spørsmålstegn eller andre rare symboler // istedet for AOA, fjerner du kommentaren fra linjen under: // $subject = utf8_decode( $subject ); // Returner nytt, korrekt navn return str_replace( $search, $replace, $subject ); } Men det blir bare seende ut slik: http://trondheimlufthavn.net/test1 Har jeg tatt rett når det gjelder plassering av funciton-fix_norwegian_characters funksjonen? - For den ligger nå her: <?php /** * Avinor PHP API Library * @version 1.1 * @author Flamur Mavraj - OXODesign TEAM * @link http://www.oxodesign.no/avinorPhpApi * @name avinor * @license Domain Public */ class avinor{ private $timeFrom; private $timeTo; private $airport; private $direction; private $lastUpdate; private $apiRequestUri = ""; protected $apiUrlFlights = "http://flydata.avinor.no/XmlFeed.asp?"; protected $apiUrlFlightStatus = "http://flydata.avinor.no/flightStatuses.asp"; protected $apiUrlAirportNames = "http://flydata.avinor.no/airportNames.asp"; protected $apiUrlAirlineNames = "http://flydata.avinor.no/airlineNames.asp"; public $statusCodes = array(); public $airlineNames= array( /** * Avinor does not have thoose airline codes * on their airline search api, so we created manually. */ 'BGT'=> array('code' => 'BGT', 'name' => 'BergenAir'), '2N' => array('code' => '2N', 'name' => 'NextJet', 'icon' => 'gfx/icons/2N.png'), 'FHY' => array('code' => 'FHY', 'name' => 'Freebird', 'icon' => 'gfx/icons/FHY.png'), 'YK' => array('code' => 'YK', 'name' => 'Cyprus Turkish Airlines'), 'MSC'=> array('code' => 'MSC', 'name' => 'Air Cairo') ); public $airlineIconPath = "gfx/icons"; // For Windows use "gfx\icons" public $airlineIcons = array(); public $airportNames= array( 'LHE'=> array('code' => 'LHE', 'name' => 'Lahore') ); public $flights = array(); public function __construct() { /** * Fetch airline icons from a directory * Fetch airline names into an array * Fetch airport names into an array * Fetch flight status codes into an array */ $this->fetchAirlineIcons() ->fetchAirlineNames() ->fetchAirportNames() ->fetchFlightStatusCodes(); return true; } /** * Clear session cache * @param $name|null * @return avinor */ public function clearCache($name = null){ if($name === null) unset($_SESSION['cache']); else unset($_SESSION['cache'][$name]); return $this; } /** * Return airport * @return string */ public function getAirport(){ return $this->airport; } /** * Return current airport * @return array */ public function getCurrentAirport(){ return $this->airportNames[$this->airport]; } /** * Return array of airport names * @return array */ public function getAirportList(){ return $this->airportNames; } /** * Define value for timeFrom * @param int $time * @return avinor */ public function setTimeFrom($time){ $this->timeFrom = (int) $time; return $this; } /** * Define value for timeTo * @param int $time * @return avinor */ public function setTimeTo($time){ $this->timeTo = (int) $time; return $this; } /** * Define airport * @param string $airport * @return avinor */ public function setAirport($airport){ $this->airport = $airport; return $this; } /** * Define direction * @param string $direction * @return avinor */ public function setDirection($direction){ $this->direction = $direction; return $this; } /** * Define lastUpdate * @param string $lastUpdate * @return avinor */ public function setLastUpdate($lastUpdate){ $this->lastUpdate = $lastUpdate; return $this; } /** * Build flight request query * @return avinor */ private function buildRequestQuery(){ $this->apiRequestUri = $this->apiUrlFlights; $this->apiRequestUri.= (isset($this->airport) ? 'airport=' . urlencode($this->airport) : ''); $this->apiRequestUri.= (isset($this->timeTo) ? '&timeTo=' . urlencode($this->timeTo) : ''); $this->apiRequestUri.= (isset($this->timeFrom) ? '&timeFrom=' . urlencode($this->timeFrom) : ''); $this->apiRequestUri.= (isset($this->direction) ? '&direction=' . urlencode($this->direction) : ''); $this->apiRequestUri.= (isset($this->lastUpdate) ? '&lastUpdate=' . urlencode($this->lastUpdate) : ''); return $this; } /** * Get result of request. * It returns the result or boolean if something goes wrong * @return array/boolean */ public function getResult(){ try{ // Check if airport is set, if not throw an exception if(!isset($this->airport)) throw new Exception('Airport is not defined!'); // Build flight request query $this->buildRequestQuery(); // Get xml from the server $xml = new SimpleXMLElement($this->apiRequestUri, null, true); // Parse the XML output foreach($xml->flights->flight as $flight){ // Create an array with the name of the airports the plane has been through $viaAirport = null; if(isset($flight->via_airport)){ $viaAirport = array(); $viaAirports = explode(",", (string) $flight->via_airport); foreach($viaAirports as $via){ $viaAirport[] = $this->airportNames[(string) $via]; } } $this->flights[(string) $flight['uniqueID']] = array( 'airport' => $this->airportNames[(string)$flight->airport], 'flightId' => (string) $flight->flight_id, 'airline' => (isset($this->airlineNames[(string) $flight->airline]) ? $this->airlineNames[(string) $flight->airline] : array('code' => (string) $flight->airline, 'name' => (string) $flight->airline) ), 'domInt' => (string) $flight->dom_int, 'scheduleTime' => (string) $flight->schedule_time, 'direction' => (string) $flight->arr_dep, 'viaAirport' => $viaAirport, 'checkIn' => (isset($flight->check_in) ? (string) $flight->check_in : null), 'gate' => (isset($flight->gate) ? (string) $flight->gate : null), 'status' => (isset($flight->status) ? array( 'code' => $this->statusCodes[(string) $flight->status['code']], 'time' => (string) $flight->status['time'] ) : null ), 'beltNumber' => (isset($flight->belt_number) ? (string) $flight->belt_number : null) ); } }catch (Exception $e){ echo "Error: " . $e->getMessage(); return false; } return $this->flights; } function fix_norwegian_characters( $subject ) { // Hvilke bokstaver skal vi se etter? $search = array( 'Æ', 'Ø', 'Å', 'æ', 'ø', 'å' ); // Hvis de finnes, bytt de ut med følgende $replace = array( 'A', 'O', 'A', 'a', 'o', 'a' ); // Hvis du opplever spørsmålstegn eller andre rare symboler // istedet for AOA, fjerner du kommentaren fra linjen under: // $subject = utf8_decode( $subject ); // Returner nytt, korrekt navn return str_replace( $search, $replace, $subject ); } /** * Fetch airline icons from a directory * @return avinor */ private function fetchAirlineIcons(){ if(isset($_SESSION['cache']['airlineIcons'])){ $this->airlineIcons = unserialize($_SESSION['cache']['airlineIcons']); return $this; } try{ $files = new DirectoryIterator($this->airlineIconPath); }catch (Exception $e){ echo "<font style='color: #ff0000'> Error: Failed to open airlineIconPath: <b>" . $this->airlineIconPath . "</b></font>"; return $this; } foreach($files as $file){ if(!$file->isDot()){ $fileInfo = pathinfo($file->getFilename()); $this->airlineIcons[strtolower((string)$fileInfo['filename'])] = str_replace("\\", "/", (string) $file->getPathname()); } } $_SESSION['cache']['airlineIcons'] = serialize($this->airlineIcons); return $this; } /** * Fetch flight status codes into an array * @return avinor */ private function fetchFlightStatusCodes(){ if(isset($_SESSION['cache']['statusCodes'])){ $this->statusCodes = unserialize($_SESSION['cache']['statusCodes']); return $this; } $xml = new SimpleXMLElement($this->apiUrlFlightStatus, null, true); foreach($xml->flightStatus as $status){ $this->statusCodes[(string) $status["code"]] = array( 'code' => (string) $status["code"], 'no' => (string) $status['statusTextNo'], 'en' => (string) $status['statusTextEn'] ); } $_SESSION['cache']['statusCodes'] = serialize($this->statusCodes); return $this; } /** * Fetch airline names into an array * @return avinor */ private function fetchAirlineNames(){ if(isset($_SESSION['cache']['airlineNames'])){ $this->airlineNames = unserialize($_SESSION['cache']['airlineNames']); return $this; } $xml = new SimpleXMLElement($this->apiUrlAirlineNames, null, true); foreach($xml->airlineName as $airline){ $this->airlineNames[(string) $airline["code"]] = array( 'code' => (string) $airline["code"], 'name' => (string) $airline["name"], 'icon' => ( isset($this->airlineIcons[strtolower((string) $airline["code"])]) ? $this->airlineIcons[strtolower((string)$airline["code"])] : false) ); } $_SESSION['cache']['airlineNames'] = serialize($this->airlineNames); return $this; } /** * Fetch airport names into an array * @return avinor */ private function fetchAirportNames(){ if(isset($_SESSION['cache']['airportNames'])){ $this->airportNames = unserialize($_SESSION['cache']['airportNames']); return $this; } $xml = new SimpleXMLElement($this->apiUrlAirportNames, null, true); foreach($xml->airportName as $airport){ $this->airportNames[(string) $airport["code"]] = array( 'code' => (string) $airport["code"], 'name' => (string) $airport["name"] ); } $_SESSION['cache']['airportNames'] = serialize($this->airportNames); return $this; } } ???? Lenke til kommentar
Runar Skrevet 26. februar 2010 Del Skrevet 26. februar 2010 fix_norwegian_characters() kan ikke ligge i class.avinor.php da denne filen inneholder en klasse. Det du gjør nå er å legge en funksjon inn i en klasse som ikke har noe med funksjonen å gjøre, og deretter bruker funksjonen som om den lå utenfor klassen. Fjern funksjonen fra class.avinor.php og legg den i en ny fil du kaller hva som helst, som du inkluderer øverst i filen hvor tabellen vises. Eller så legger du funksjonskoden øverst i filen hvor du viser tabellen. Det er vel enkleste løsning. Lenke til kommentar
enva Skrevet 26. februar 2010 Del Skrevet 26. februar 2010 (endret) Joda, jeg fikk det til nå. Men ta en titt på enkelte av tegnene i bla "Widerøe" http://trondheimlufthavn.net/test1 Widerøe blir til Widerøe istedenfor Wideroe Endret 26. februar 2010 av enva Lenke til kommentar
Mez Skrevet 26. februar 2010 Del Skrevet 26. februar 2010 Prøv med utf8_encode / _decode... burde fikse biffen Lenke til kommentar
Runar Skrevet 26. februar 2010 Del Skrevet 26. februar 2010 Les kommentarene i den lille funksjonen jeg ga deg, og se om du finner noe relatert til nettopp rare symboler. Jeg ser også at den ikke er helt komplett med tanke på mellomrom, som i Bergen Air Transport. Dette kan jeg prøve å løse i morgen hvis du ikke har fått løst det på egenhånd. Lenke til kommentar
enva Skrevet 26. februar 2010 Del Skrevet 26. februar 2010 (endret) Jeg har fjernet den linjen du nevnte. Men det hjalp ikke.. Grunnen til at Bergen Air Transport ikke fungerer, er at jeg ikke har laget en underside om selskapet da de ikke trafikkerer lufthavnen på regulær basis. En annen ting som kanskje kan hjelpe deg angående rare tegn på http://trondheimlufthavn.net/test1.php er at jeg bruker "charset=iso-8859-1" istedenfor vanlig utf8. Men prøvde å bytte til utf8 uten noen resultat. Endret 26. februar 2010 av enva Lenke til kommentar
Runar Skrevet 26. februar 2010 Del Skrevet 26. februar 2010 Jeg mente ikke at du skulle fjerne hele linjen, kun de to skråstrekene (//) som gjorde linjen til en kommentar Lenke til kommentar
enva Skrevet 26. februar 2010 Del Skrevet 26. februar 2010 Da fungerer det vet du. Men har fortsatt et lite problem Jeg har utvidet flytidene slik at du kan bla ned et stykke og finne flyselskapet som står oppført som "krohnair.no" Jeg har imidlertid laget en underside som heter /Krohn.html, og det er litt tungvindt og begynne å endre navnet i sufikset Derfor lurer jeg på om det er noen måte å endre "krohnair.no" til "Krohn Air" eller "Krohn"? Prøvde å legge inn denne i class.avinor.php, men det skjer ingenting: 'EZ' => array('code' => 'EZ', 'name' => 'Krohn Air'), Any idea? Lenke til kommentar
enva Skrevet 9. juli 2010 Del Skrevet 9. juli 2010 Hei igjen! Har et nytt spørsmål. Jeg skal legge inn flytidene på en forside hvor jeg KUN vil vise Norwegians ankomster på Værnes fra Oslo. Hvordan filtrere jeg dette i php koden? Lenke til kommentar
enva Skrevet 9. juli 2010 Del Skrevet 9. juli 2010 (endret) Det er denne jeg vil filtrere. Akkurat nå vises mange forskjellige selskaper og flyplasser: http://trondheimlufthavn.net/Flybuss/flytider SÅ! Hva må jeg legge til / endre i php koden for å KUN vise Norwegians ankomster fra Oslo??? Her er php-koden: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <title>Trondheim Flybuss | Forside</title> <link rel="stylesheet" type="text/css" href="css/flytider.css" media="screen" /> <!-- Copyright 2000, 2001, 2002, 2003 Macromedia, Inc. All rights reserved. --> </head> <body><?php include 'class.avinor.php'; ?> </p> <div> <h1 class="bold"> <?php $avinor = new avinor(); $timeNow = time(); if(isset($_POST) && isset($_POST['btnSearch'])){ $airport = $_POST['airport']; $timeFrom = $_POST['timeFrom']; $timeTo = $_POST['timeTo']; $direction = $_POST['direction']; }else{ $airport = "TRD"; $timeFrom = 0; $timeTo = 24; $direction = "A"; } $directions = array( '0' => 'Begge retninger', 'A' => 'Ankomster', 'D' => 'Avganger' ); ?> </h1> <?php function getHoursFromDate($time){ date_default_timezone_set('UTC'); if($time != ""){ $currentTime = str_replace("T", " ", $time); $date = new DateTime($currentTime); $timeZone = new DateTimeZone('Europe/Oslo'); $date->setTimezone($timeZone); return $date->format('H:i'); } return ''; } $avinor->setAirport($airport) ->setTimeFrom($timeFrom) ->setTimeTo($timeTo); if($direction != "0") $avinor->setDirection($direction); $result = $avinor->getResult(); ?> <table width="400"> <thead> </thead> <tr> <td width="30"></thead> <?php foreach($result as $flight): $avg = getHoursFromDate($flight['scheduleTime']); $status = $flight['status']['code']['no'] . ' ' . getHoursFromDate($flight['status']['time']); if($flight['airport']['code'] == $avinor->getAirport() && $flight['direction'] != "A"){ $airport = $flight['viaAirport'][0]['name']; }else $airport = $flight['airport']['name']; if($flight['direction'] == "A"){ $fligtIcon = array( 'src' => 'iconArrowDown.png', 'text'=> 'Ankomster' ); }else{ $fligtIcon = array( 'src' => 'iconArrowUp.png', 'text'=> 'Avganger' ); } ?></td> </tr> <tr> <td height="24" class="none"><img src="gfx/index/<?php echo $fligtIcon['src']; ?>" alt="<?php echo $fligtIcon['text']; ?>" width="16" height="16" /></td> <td width="93"><?php echo $flight['airline']['name'] ?></td> <td width="66"><?php echo $flight['flightId']; ?></td> <td width="66"><?php echo utf8_decode($airport); ?></td> <td width="66"><?php echo $avg; ?></td> <td width="66"> </td> </tr> <?php endforeach; ?> </table> </body> </html> Som man kan se, så er det allerede mulighet for å filtrere hvor langt frem i tid man vil hente flytidene, hvilken retning man vil ha (ankomst eller avgang) osv. Men trenger som sagt å få lagt inn et filter som bestemmer hvilke(t) flyselskap som skal vises og hvilken destinasjonsflyplass som skal vises. Endret 9. juli 2010 av enva Lenke til kommentar
Runar Skrevet 10. juli 2010 Del Skrevet 10. juli 2010 Det burde ikke være umulig å få til, men ute er det strålende sol og 30 grader og jeg har is i fryseren, så jeg venter litt med å begi meg ut på en slik ferd. Men jeg kan se hva jeg får til. Lenke til kommentar
ilpostino Skrevet 13. juli 2010 Del Skrevet 13. juli 2010 Et innlegg som ikke hører hjemme i tråden er slettet. Vennligst ikke skriv i tråden med mindre det er relevant til trådens tema. Les gjerne retningslinjene §1. i retningslinjene. dette skal som vanlig ikke kommenteres i tråden men kan gjerne tas på Personlig Melding. Tilbakemelding av generell karakter kan gjøres i Tilbakemeldinger om forumet. 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å