Avatar billede tommytot Nybegynder
23. april 2004 - 14:20 Der er 17 kommentarer og
1 løsning

postnummer - vælg by automatisk fra database

Hejsa.

Er der nogen der kan hjælpe med følgende...

Jeg har en select boks i en form som vælger postnumre fra dk, og har et disapled input felt ved siden af som skal opdateres automatisk efter et pågældende valg.

Nogen der kan være behjælpelig med at løse opgaven, eller smide et link til opklaringen af min lille udfordring... :-)

Great thanks...
Avatar billede jammerlab Nybegynder
23. april 2004 - 14:32 #1
Sådan gør jeg pt.
-----------------------

<script type="text/JavaScript" src="dk_pns.js"></script>
<script type="text/JavaScript">
function fillPn(f) {
    var inx = "p"+f.p.value;
    if (pn[inx]) {
        f.b.value = pn[inx];
    } else {
        f.b.value = "Forkert postnummer";
        f.p.select();
    }
}
</script>
<table>
<tr>
<td valign=top>
<span class=text1>Postnummer:</span>
</td>
<td>
<input type=text name=p onblur=fillPn(this.form); class=form size=4>
</td>
</tr>
<tr>
<td valign=top>
By:</td>
<td>
<input type=text name=b onfocus=this.blur(); readonly class=form size=28>
</td>
</tr>
</table>

------------------------
filen kan hentes her: http://212.242.60.87/dk_pns.js
Avatar billede michael_stim Ekspert
23. april 2004 - 14:33 #2
Kan du ikke onChange kalde på en SQL-streng der hedder "select city from tabel where zipcode = "& request.form('navn_på_select') &" og så give textboxen den value?
Avatar billede michael_stim Ekspert
23. april 2004 - 14:45 #3
Upps, har du ingen database? Så må du jo bruge en helvedes lang if- eller case sats.
Avatar billede olebole Juniormester
23. april 2004 - 18:55 #4
<ole>

Her er en laaaang diskussion om emnet:
  http://www.eksperten.dk/spm/155113
... og et eksempel:
  http://tjenester.dk/x-codes.dk/eksperten/postnumre/

/mvh
</bole>
Avatar billede yHec Novice
23. april 2004 - 18:55 #5
Du opretter 2 tabeller.
En der hedder adresser og en der hedder postnummer (f.eks)
I adresser har du (bl.a) et flet der hedder postnummer, og det eneste der er i postnummer tabeller er to felter - postnummer og by! Jo laver du et join. Trækker data'erne, et voila! Postnummer opslag! Virker for mig!

SELECT adresser.postnummer, postnummer.by
FROM postnummer INNER JOIN adresser ON postnummer.postnummer = adresser.postnummer;

/jan
Avatar billede yHec Novice
23. april 2004 - 18:56 #6
et flet = et felt...
Avatar billede olebole Juniormester
23. april 2004 - 18:59 #7
y >> der er ingen mening i at skulle en tur forbi serveren - det giver blot mere belastning på serveren og er irriterende for brugeren  :)

talker >> Nå, man har nok haft besøg, hva' ...?  ;o)
Avatar billede jammerlab Nybegynder
23. april 2004 - 19:55 #8
Tror nok jeg fandt den løsning herinde et sted... bruger den selv den fungere perfekt :)
Avatar billede olebole Juniormester
23. april 2004 - 20:35 #9
Det glæder mig ... den er jo også lavet for at blive brugt  ;o)
Avatar billede yHec Novice
24. april 2004 - 13:19 #10
olebole>>tommy boad selv om en database løsning! Iøvrigt vil jeg mene, at 1327 potnumre og byer skrevet ind i et script, hvor af kun en skal bruegs for hvert kald, kan være ligeså belastende, både for bruger og server!

Har postnummer db som en sql-fil, hvis nogen skulle være interesserede

hecker.dk/misc/postnummer.sql

/jan
Avatar billede tommytot Nybegynder
24. april 2004 - 15:05 #11
thanks
Avatar billede bbrockie Nybegynder
24. april 2004 - 15:20 #12
y >> Færøerne bruger ikke længere landekoden "FR"; men "FO" - "FR" landekoden hører vist til Frankrig nu - Men mange tak for postnummer.sql filen, nu slipper jeg for at taste en hel del :o)
Avatar billede yHec Novice
24. april 2004 - 16:35 #13
Hvem skal have point??

bbrockie>> vil fluks rette det!
Avatar billede michael_stim Ekspert
24. april 2004 - 17:29 #14
talker har fået dem ;o)
Avatar billede olebole Juniormester
24. april 2004 - 18:23 #15
y >> Nu linkede jeg til et forkert spm ovenfor. Det rigtige link til den laaaange diskussion er:
  http://www.eksperten.dk/spm/187815
Som du ser, fylder filen kun under 21,5Kb, så der kan ikke herske tvivl om, at et HTTP-træk efter sådan en fil belaster serveren betydelig mindre end et MySQL-kald plus behandling af PHP  :)

Serveren er forhåbentlig hårdt belastet af et godt site med mange brugere - hvorimod klient-maskinerne som oftest står og strutter af ubrugt RAM og CPU-kraft.
Det er altid et fornuftigt mål at lade klientmaskinen lave så meget af arbejdet, som muligt ... det giver langt den mindste serverbelastning og dermed den bedste brugeroplevelse.

Om spørgeren beder om en database- eller fil-baseret løning anser jeg for temmelig ligegyldigt. Grunden til, han stiller spørgsmålet, er formodentlig, at han ikke kender de tilgængelige løninger ... og så må man jo byde ind med den bedste, uanset om den stemmer nøjagtig overens med spm'et eller ej  ;o)
/mvh
Avatar billede jammerlab Nybegynder
24. april 2004 - 18:24 #16
Hørt.
Avatar billede yHec Novice
24. april 2004 - 22:33 #17
Det er da rigtig nok... Meeen, det er hårdt ved båndbredden, at skulle downloade et script som det i det linket ovenfor (24/04-2004 18:23:26)!

Ved en dialup GØR det en forskel for brugeren!!!

Iøvrigt ville jeg til enhver tid hellere vedligeholde en database fremfor det der script! (der er jo kommunesammenlægninger, postnummeromlægnigner og andet djævelskab under opsejling;-)) Men i sidste ende er det vel op til tommytot at vælge den for ham bedste løsning!

/jan
Avatar billede tommytot Nybegynder
06. juli 2004 - 08:39 #18
Det er godt nok længe siden jeg forespurgte på det spørgsmål, men jeg tænkte at nogen måske var interesseret i hvilken løsning det blev til.

Der er jo fordele og ulemper ved brug af et javascript som vist for oven, her tænker jeg mest på vedligeholdelsen, men som sagt blev der givet point for løsningen fordi det virkede, upåklageligt og det i en løsning med folk der logger ind til et brugersystem via modem.

Men løsningen blev kun midlertidig, da systemet skulle være i stand til at vedligeholde sig selv uden webmaster! SQL skulle derfor på banen... ;-)

Her er den tabel som postnummeret ligger i, og der er ingen kolonne med bynavn, da det var en del af det vedligholdelses frie administrations modul, det er så en længere historie, som slet ikke høre hjemme her.


$query_visorg = "SELECT fornavn, efternavn, post, adresse, tlf FROM organisation WHERE HB = 'Y' ORDER BY hborder ASC";

Bagefter skulle bynavnet så findes, i henhold til det postnummer vi har kastet ud fra den øverste tabel.

$query_selectby = "SELECT bynavn FROM postnr WHERE postnr=$row_visorg[post]";


Ja det henter det jo bare fra databasen, og så kan man jo gøre hvad man vil, smide det i en løkke eller what ever.

Thats it, aaaannnnd thats, that.

:-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester