AndySM Skrevet 6. november 2011 Del Skrevet 6. november 2011 Hei! Først, beklager dårlig emnetittel - hvis noen har noen bedre forslag så si ifra, da denne var helt på jordet i forhold til hva vi vil fram til (tror jeg) Skal prøve å forklare meg kort, men dette er iallfall hva vi trenger hjelp til: tabell med alle airways og punkter: airac (i første omgang så er vi bare interessert i å hente ut airway og intersection - det andre burde vi få ut om vi klarer å hente ut punktene ellers ) Eks på oppsett i 'airac': (her er bare punkter fra 'airway' UP615) airway number intersection lon lat UP615 001 UTH 63.722789 9.577781 UP615 002 KVB 63.118133 7.810539 UP615 003 TONDI 62.000000 8.707781 UP615 004 OSVIG 61.074450 9.398975 UP615 005 ATLAP 60.146094 9.800695 UP615 006 TOR 59.169111 10.259267 UP615 007 ARTOR 58.334420 10.148983 UP615 008 ALASA 54.808611 9.961667 UP615 009 TUGDU 54.652778 9.910834 UP615 010 EKERN 54.505833 9.863889 UP615 011 LBE 53.654203 9.595067 UP615 012 XERES 42.023892 -10.06797 UP615 013 ASMAR 39.372628 -11.59545 UP615 014 VABEM 36.549108 -13.32278 UP615 015 BIMBO 31.421450 -16.03287 tabell med ruter: phpvms_schedules route Route kan da f. eks se slik ut: TOR UP615 ARTOR/N0447F380 P615 AAL/N0451F370 P615 ALS/N0444F380 M852 ALASA UM852 EKERN/N0447F370 UM852 POVEL UZ16 GALMA T703 LEKMI T105 VAMAS Det vi trenger hjelp med er å hente først og fremst TOR fra 'airac'. Og så må vi finne alle punktene på UP615 imellom TOR og ARTOR (UP615 finner man da i 'airway' i 'airac'), til slutt ARTOR. I dette tilfellet så finnes disse punktene på UP615 i databasen: UTH KVB TONDI OSVIG ATLAP TOR ARTOR ALASA TUGDU EKERN LBE XERES ASMAR VABEM BIMBO, så her er det egentlig ingen punkter imellom. Deretter blir det ARTOR, og så alle punktene på P615 mellom ARTOR og ALS (her må vi også ha hjelp til å 'fjerne' /N0451F370 fra bak AAL slik at den vil finne AAL også - gjelder alle andre punkter med /N0xxxFxxx bak også selvfølgelig). Mellom ARTOR og ALS, finnes disse punktene på airwayen: ARTOR AAL RADIS LUTUS ABINO RIDSI ASBIL ALS, pluss en del ekstra både før og etter, som vi helst ikke vil ha med Og slik fortsetter det nedover.. Vi har INGEN anelese om hvordan vi skal gjøre dette, og håper derfor noen her har noen kloke svar Trenger dere mer info så får dere bare si ifra så skal vel det la seg ordne.. Takker for all hjelp!! Anders Lenke til kommentar
etse Skrevet 6. november 2011 Del Skrevet 6. november 2011 det du spør om er vel egentlig ikke PHP-relatert, men SQL-relatert, da det virker veldig som løsningen kan gjøres med 1 spørring. Men forklaringen din er litt forvirrende og sliter litt med å se for meg databasen. Man du sette opp en enkel tabell-oversikt og forklare hva de ulike feltene er? Og hvilke som er av interesse? En enkel oversikt noe lignende: 1 Lenke til kommentar
Thomas. Skrevet 7. november 2011 Del Skrevet 7. november 2011 Det vi trenger hjelp med er å hente først og fremst TOR fra 'airac'. Og så må vi finne alle punktene på UP615 imellom TOR og ARTOR (UP615 finner man da i 'airway' i 'airac'), til slutt ARTOR. I dette tilfellet så finnes disse punktene på UP615 i databasen: UTH KVB TONDI OSVIG ATLAP TOR ARTOR ALASA TUGDU EKERN LBE XERES ASMAR VABEM BIMBO, så her er det egentlig ingen punkter imellom. Hmm, kanskje du kan bruke raden "number" til å hente ut radene mellom to punkter . Det vil fungere så lenge alt først og fremst har blitt lagt inn i riktig rekkefølge fra før. Hvis du skal gjøre alt det i en spørring må du mest sansynlig til med objekter og joins, noe som ikke er så lett for nybegynnere Hadde kanskje vært bedre og splittet opp å gjort ting steg for steg. Spørring -> behandle med php -> ny spørring -> behandle med php -> resultat Lenke til kommentar
AndySM Skrevet 7. november 2011 Forfatter Del Skrevet 7. november 2011 Hallo! Takker for svar, og til å begynne med så tror jeg også at noe slikt Thomas skriver burde gjøres (altså spørring->behandle->ny spørring->behandle->resultat), MEN det går nok ikke å bruke raden number - tror jeg - da det kan gå begge veier. Altså at man bruker AAL P615 ARTOR og ARTOR P615 AAL, hvis dere skjønner. Så det jeg tenker da, er at man må klare å skille vanlige punkter (de uten tall i ruta) og airways (de med tall). Slik at du begynner med TOR og henter ut koordinatene på det, og så ser scriptet at det er en airway (UP615) som fortsetter ned til ARTOR, som da vil printe ut alle de punktene imellom TOR og ARTOR. Etter det blir det det samme med ARTOR P615 ALS (er stort sett de samme punktene på de 'airwayen' med og uten U foran, men er noen flere på noen enn andre), og så videre nedover i ruta. Beklager om det fremdeles er dårlig forklart, men jeg er generelt dårlig i det dessverre :/ Her er forøvrig oppsettet på tabellene: CREATE TABLE IF NOT EXISTS `airac` ( `airway` varchar(10) collate utf8_unicode_ci NOT NULL, `number` varchar(20) collate utf8_unicode_ci NOT NULL, `intersection` varchar(20) collate utf8_unicode_ci NOT NULL, `lon` varchar(10) collate utf8_unicode_ci NOT NULL, `lat` varchar(10) collate utf8_unicode_ci NOT NULL ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; Den andre tabellen hvor route ligger har egentlig ikke så mye å si, da det bare er 'route' som skal printes fra 'phpvms_schedules'. Håper dette kan være til hjelp for at dere får hjulpet oss! Anders Lenke til kommentar
Thomas. Skrevet 8. november 2011 Del Skrevet 8. november 2011 Skal du bare hente verdiene i lon og lat radene på hver avgang? Kan du komme med et eksempel på dette? printe ut alle de punktene imellom TOR og ARTOR UP615 006 TOR 59.169111 10.259267 UP615 007 ARTOR 58.334420 10.148983 Lenke til kommentar
AndySM Skrevet 8. november 2011 Forfatter Del Skrevet 8. november 2011 (endret) Ja, stemmer. Intersection, lon og lat skal hentes ut og printes ut, slik at det kommer inn i en URL. ja, skal gi deg et eksempel, men kan bruke en annen airway som eksempel, bare for og faktisk ha noen punkter å printe ut 'route' fra phpvms_schedules: TOR UP615 ARTOR/N0447F380 P615 AAL/N0451F370 P615 ALS/N0444F380 M852 ALASA UM852 EKERN/N0447F370 UM852 POVEL UZ16 GALMA T703 LEKMI T105 VAMAS Så kan bruke P615 fra ARTOR, via AAL til ALS da. ARTOR/N0447F380 P615 AAL/N0451F370 P615 ALS/N0444F380 (ikke tenk på det bak skråstrekene nå - må på en eller annen måte fjerne de, men ikke så farlig om man ikke får til det andre alikevel. Så bare lat som de ikke er der ) Alle punkter ifra 'airac' som er på P615: P615 001 UTH 63.722789 9.577781 P615 002 BERET 63.342222 8.449450 P615 003 KVB 63.118133 7.810539 P615 004 INLAS 62.651322 8.193931 P615 005 APSAP 62.350000 8.434614 P615 006 TONDI 62.000000 8.707781 P615 007 OSVIG 61.074450 9.398975 P615 008 ATLAP 60.146094 9.800695 P615 009 TOR 59.169111 10.259267 P615 010 ARTOR 58.334420 10.148983 P615 011 AAL 57.103719 9.995578 P615 012 RADIS 56.541667 9.995000 P615 013 LUTUS 56.100833 9.994445 P615 014 ABINO 55.968334 9.994445 P615 015 RIDSI 55.591667 9.994167 P615 016 ASBIL 55.371945 9.993889 P615 017 ALS 54.905414 9.993378 P615 018 ALASA 54.808611 9.961667 P615 019 EKERN 54.505833 9.863889 P615 020 RENSU 54.243611 9.780000 P615 021 LBE 53.654203 9.595067 Så i dette eksempelet, så burde scriptet kunne printe ut disse punktene: ARTOR 58.334420 10.148983 AAL 57.103719 9.995578 RADIS 56.541667 9.995000 LUTUS 56.100833 9.994445 ABINO 55.968334 9.994445 RIDSI 55.591667 9.994167 ASBIL 55.371945 9.993889 ALS 54.905414 9.993378 Edit: Jeg vet ikke, men det jeg tenker er jo på en eller annen måte printe ut dette med en while muligens. Iallfall så skal vært punkt bli skrevet ut på denne måten: &lat=57.103719&long=9.995578&name=AAL&c=1 osv, men bare jeg på en eller annen måte får henta ut de riktige punktene så går vel det bra (ser også at jeg har bomma litt på navn i tabellen kontra det i urlen, men igjen så har det ingen praktisk betydning..) Håper virkelig dette gir mening, for det hadde vært utrolig kult og fått dette til! Vi har et script liggende, men den klarer ikke hente ut alle punktene, pluss at tabellen med punkter og airways på den er utdatert, og nyeste oppdateringa er fra tidlig 2010 eller noe slikt og det har vært mye forandringer på disse airwayene og punktene. (Og dessverre så finner jeg ikke scriptet i systemet vi bruker, phpvms, så får ikke brukt det som hjelp til å lage et nytt, evt skifte ut tabell og slikt på det) Tusen hjertelig takk for all hjelp foreløpig! Anders Endret 8. november 2011 av AndySM Lenke til kommentar
etse Skrevet 8. november 2011 Del Skrevet 8. november 2011 (endret) Om jeg forstår deg rett har du 2 tabeller, og du skal finne noe som er i begge tabellene. Dette høres ut som en enkel spørring. Men jeg sliter helt med å forstå hva det er du egentlig skal ha ut, slik at jeg kan utforme spørringen. Det er denne route jeg ikke helt får til å koble inn. TOR UP615 ARTOR/N0447F380 P615 AAL/N0451F370 P615 ALS/N0444F380 M852 ALASA UM852 EKERN/N0447F370 UM852 POVEL UZ16 GALMA T703 LEKMI T105 VAMAS Er dette en entry i route? Er dette flere entry? Hvor går skillet, med hvert mellomrom? Altså, jeg forstår ikke helt hva du mener med følgende: 'route' fra phpvms_schedules:TOR UP615 ARTOR/N0447F380 P615 AAL/N0451F370 P615 ALS/N0444F380 M852 ALASA UM852 EKERN/N0447F370 UM852 POVEL UZ16 GALMA T703 LEKMI T105 VAMAS Så kan bruke P615 fra ARTOR, via AAL til ALS da. ARTOR/N0447F380 P615 AAL/N0451F370 P615 ALS/N0444F380 Endret 8. november 2011 av etse Lenke til kommentar
Thomas. Skrevet 8. november 2011 Del Skrevet 8. november 2011 Så i dette eksempelet, så burde scriptet kunne printe ut disse punktene: ARTOR 58.334420 10.148983 AAL 57.103719 9.995578 RADIS 56.541667 9.995000 LUTUS 56.100833 9.994445 ABINO 55.968334 9.994445 RIDSI 55.591667 9.994167 ASBIL 55.371945 9.993889 ALS 54.905414 9.993378 Du må jo nesten ha noe som sier hvor den skal starte og slutte å søke. Har du det? En måte du kunne gjort det på da er noe slikt: Lagre alt i en array, finne indekser og hente ut ønskede verdier. <?php mysql_connect('localhost', 'root', ''); mysql_select_db('test'); $start = 'AAL'; $slutt = 'ABINO'; $i = 0; $sql = mysql_query('SELECT * FROM tabell'); while($row = mysql_fetch_array($sql)) { $array[$i] = $row['tekst']; $i++; } $s1 = array_search($start, $array); $s2 = array_search($slutt, $array); for($y = $s1; $y <= $s2; $y++) $arrayf[$y] = $array[$y]; // Hentet ut rader fra AAL til ABINO var_dump($arrayf); ?> -- -- Tabellstruktur for tabell `tabell` -- CREATE TABLE IF NOT EXISTS `tabell` ( `tekst` varchar(255) NOT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1; -- -- Dataark for tabell `tabell` -- INSERT INTO `tabell` (`tekst`) VALUES ('ARTOR'), ('AAL'), ('RADIS'), ('LUTUS'), ('ABINO'), ('RIDSI'), ('ASBIL'), ('ALS'); 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å