11. januar 2006 - 21:24Der er
38 kommentarer og 1 løsning
udskrive bynavn ud fra postnr
Hej experter. Er her nogle som ved hvordan man kan få et postnr til at blive til et bynavn når det bliver hentet ud fra databasen? hmmm. jeg har en tabel med nogle oplysninger, bla. et postnr, og når det så skal vises på en side, skal dette postnr. blive til et bynavn automatisk.. ;) ved ikke om jeg har udtrykt mig klart nok. Men kan det lade sig gøre?
Fandt sq en fil som jeg havde liggende.. Nu håber jeg bare at den er opdateret, hvis der altså er kommet nye postnumre...;) Men hvad gør jeg så nu... for at vende tilbage til hovedspørgsmålet?
Insert into postnr values( 0800 ,'Høje Taastrup'); Insert into postnr values( 0900 ,'København C'); Insert into postnr values( 1000 ,'København K'); Insert into postnr values( 1001 ,'København K'); Insert into postnr values( 1002 ,'København K'); Insert into postnr values( 1003 ,'København K'); Insert into postnr values( 1004 ,'København K');
jeg har nedenstående kode som skal skrive et bynavn ud i stedet for selve postnummeret som den gør nu:)
<?php require_once("../members/common.php"); // Funktion, der "klipper" en tekst over på det mest hensigtsmæssige sted (".", " ", ) // str klip(str tekst, int længde, int tolerance)
function klip($tekst, $laengde = 200, $tolerance = 10) // $laengde og $tolerance kan udelades { $punktum = strpos(substr($tekst, $laengde-$tolerance, 2*$tolerance), "."); // position af punktum $mellemrum = strpos(substr($tekst, $laengde-$tolerance, 2*$tolerance), " "); // position af mellemrum $mere = "..."; // punktummer hvis mere tekst
if (strlen($tekst) <= $laengde + $tolerance) { $slut_pos = strlen($tekst); // slutposition = slut på tekst, da denne er kortere end $laengde og $tolerance $mere = ""; // ikke andet } elseif ($punktum !== false) { $slut_pos = $laengde-$tolerance+$punktum; // slutposition = punktum } elseif ($mellemrum !== false) { $slut_pos = $laengde-$tolerance+$mellemrum; // slutposition = mellemrum } else { $slut_pos = $laengde; // slutposition $laengde (ikke noget at gøre - skær ord over) }
ja den var straks værre.. hva;) er det ikke noget med at den skal tjekke det postnr som den henter fra salgAfProdukt, og så henter det bynavn fra tabellen "bynavn" som passer til?
select * from salgAfProukt, din_database_tabel.bynavn left join din_database_tabel on salgAfProdukt.postnr = din_database_tabel.postnr order by id desc
select * from salgAfProukt, din_database_tabel.bynavn as ny_bynavn left join din_database_tabel on salgAfProdukt.postnr = din_database_tabel.postnr order by id desc
og i din udskriftskode ændrer du $række['postnr'] til $række['ny_bynavn']
nu har jeg skrevet nedenstående.. hvad er galt? databasen hvor den henter det originale postnr(altså det som den skal finde en by ud fra) er tabellen "salgAfProdukt"....... tabellen som indeholder lister af postnr og bynavn hedder "postnr"
select * from salgAfProukt, postnr.bynavn left join postnr on salgAfProdukt.postnr = postnr.postnr order by id desc
men er vi enige om at den skal kunne udskrive alle data som den plejer selv om jeg ikke har ændret "og i din udskriftskode ændrer du $række['postnr'] til $række['ny_bynavn']"
det virker stadig ikke.. hmm. min kode ser nu ud som følger:
<?php require_once("../members/common.php"); // Funktion, der "klipper" en tekst over på det mest hensigtsmæssige sted (".", " ", ) // str klip(str tekst, int længde, int tolerance)
function klip($tekst, $laengde = 200, $tolerance = 10) // $laengde og $tolerance kan udelades { $punktum = strpos(substr($tekst, $laengde-$tolerance, 2*$tolerance), "."); // position af punktum $mellemrum = strpos(substr($tekst, $laengde-$tolerance, 2*$tolerance), " "); // position af mellemrum $mere = "..."; // punktummer hvis mere tekst
if (strlen($tekst) <= $laengde + $tolerance) { $slut_pos = strlen($tekst); // slutposition = slut på tekst, da denne er kortere end $laengde og $tolerance $mere = ""; // ikke andet } elseif ($punktum !== false) { $slut_pos = $laengde-$tolerance+$punktum; // slutposition = punktum } elseif ($mellemrum !== false) { $slut_pos = $laengde-$tolerance+$mellemrum; // slutposition = mellemrum } else { $slut_pos = $laengde; // slutposition $laengde (ikke noget at gøre - skær ord over) }
// Hent først data ud $resultat = mysql_query("select * from salgAfProukt, postnr.bynavn as ny_bynavn left join postnr on salgAfProdukt.postNr = postnr.postnr order by id desc");
// Kør så igennem for hver række while ($raekke = mysql_fetch_array($resultat)) { echo " <table width=\"560\" border=\"0\" cellspacing=\"5\" cellpadding=\"0\" bgcolor=\"#F5F5F5\"> <tr> <td width=\"360\" valign=\"top\"><span class=\"mellem\"><b> ".$raekke['produkt']."</b></span><br><span class=\"lille\">".klip($raekke['supplerendeTekst'])."</span></td> <td width=\"50\" valign=\"top\"><span class=\"mellem\">".$raekke['pris']."</span></td> <td width=\"150\" valign=\"top\"><span class=\"mellem\">".$raekke['ny_bynavn']."</span></td></tr></table> <table width=\"560\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\"bgcolor=\"#F5F5F5\"> <tr> <td><hr></td> </tr> </table>"; }
$resultat = mysql_query("select * from salgAfProukt, postnr.bynavn as ny_bynavn left join postnr on salgAfProdukt.postNr = postnr.postnr order by id desc") or die(mysql_error());
$resultat = mysql_query("select * from salgAfProdukt, postnr left join postnr on salgAfProdukt.postNr = postnr.postnr order by id desc") or die(mysql_error());
det var pga.. produkt var stavet forkert.. men nu udskriver den bare intet der hvor der skulle stå bynavn
$resultat = mysql_query("select * from salgAfProdukt left join postnr on salgAfProdukt.postNr = postnr.postnr order by id desc") or die(mysql_error());
$resultat = mysql_query("select * from salgAfProdukt, postnr left join postnr on salgAfProdukt.postNr = postnr.postnr order by id desc") or die(mysql_error());
og i din udskriftskode ændrer du $række['ny_bynavn'] til $række['bynavn']
YESSSSSSSSSSSSSSSSSSSSS.. nu virker det.. super duper.. hol da hel op... det var sku ikke en af de nemme. hva;) smider du ikke lige et svar.. og mange tak for hjælpen.
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.