Avatar billede jtc Nybegynder
12. februar 2004 - 14:06 Der er 36 kommentarer og
1 løsning

simpel onchange i select

Hej er der nogen der kan hjælpe mig med at få lavet det sådan at når jeg angiver en værdi i en selectboks så skal der vises nogle værdier som tilhører denne værdi fra en accessdatabase

selectboksen ser sådan ud
<!--#include file="forbindelse.asp"-->
<%
Sql = "Select * From tblkunder order by firmanavn asc"
Set Rs = database.Execute(Sql)
%>
<select name="forsikringstagernavn" id="forsikringstagernavn" >
<option>Vælg et navn........................................</option>
<%
Do While Not Rs.Eof
%>
<option value="<%= rs("firmanavn")%>"><%= rs("firmanavn") %></option>
<%
Rs.MoveNext
Loop
%>
</select>

når der så er valgt et firmanavn skal den nedenunder stå kontaktperson,tlf,email osv som tilhører dette firmanavn

Hvordan gør jeg det
Avatar billede eagleeye Praktikant
12. februar 2004 - 14:20 #1
selecten skal ind på en form og så kan man hente data omkring det valgt firma:


<!--#include file="forbindelse.asp"-->
<%
Sql = "Select * From tblkunder order by firmanavn asc"
Set Rs = database.Execute(Sql)
%>
<form mthod="post" action="<%=Request.Servervariables("SCRIPT_NAME")%>">
<select name="forsikringstagernavn" id="forsikringstagernavn" onChange="this.form.submit();">
<option>Vælg et navn........................................</option>
<%
Do While Not Rs.Eof
%>
<option value="<%= rs("firmanavn")%>"><%= rs("firmanavn") %></option>
<%
Rs.MoveNext
Loop
%>
</select>
</form>

<%
forsikringstagernavn = Request.Form("forsikringstagernavn")
if forsikringstagernavn <> "" then
  SQL = "select * from tblkunder where firmanavn = '" & forsikringstagernavn & "'"
  set rs = Conn.Execute(SQL)
  if not rs.EOF then
    Response.Write "kontaktperson : " & rs("kontaktperson") & "<br>"
    Response.Write "telefon : " & rs("tlf") & "<br>"
    Response.Write "Email : " & rs("email") & "<br>"
  end if
end if
Avatar billede jtc Nybegynder
12. februar 2004 - 14:23 #2
jamen selectboksen er allerede i en form og den skal helst ikke submittes
Avatar billede jtc Nybegynder
12. februar 2004 - 14:24 #3
Så måske man skulle bruge en iframe??
Avatar billede nute Nybegynder
12. februar 2004 - 14:24 #4
noget ála dette:

<!--#include file="forbindelse.asp"-->
<html><body>
<%
Sql = "Select * From tblkunder order by firmanavn asc"
Set Rs = database.Execute(Sql)
%>
<form>
<select name="forsikringstagernavn" id="forsikringstagernavn" onchange="if( this.selectedIndex > 0 ){this.form.submit;}">
<option value="-1">Vælg et navn........................................</option>
<%
Do While Not Rs.Eof
%>
<option value="<%= rs("firmanavn")%>"><%= rs("firmanavn") %></option>
<%
Rs.MoveNext
Loop
%>
</select>
<%
if( Request("forsikringstagernavn") <> "" ) then
    Sql = "Select * From tblkunder where firmanavn = '" & Request("forsikringstagernavn") & "'"
    Set Rs = database.Execute(Sql)
    Response.Write( Rs( "firmanavn") )
    Rs.Close
end if
%>
</form>
</body></html>

/nute
Avatar billede jtc Nybegynder
12. februar 2004 - 14:26 #5
Jamen selectboksen er allerede i en form som indeholder mange andre felter og de skal ikke submittes da formen opretter en post i en anden tabel, så måske man skulle bruge en iframe?? men hvordan
Avatar billede jtc Nybegynder
12. februar 2004 - 14:30 #6
eller måske noget javascript???
Avatar billede eagleeye Praktikant
12. februar 2004 - 14:35 #7
hvis den ikke skal submittes skal alle data ligges ind på siden på forhånd sådan man kan bruge et javascript til at fylde felterne ud.
Avatar billede jtc Nybegynder
12. februar 2004 - 14:36 #8
jamen prøv at kigge på http://test.stenhuset.dk/infratech/default.asp og gå ind under ny sag
Avatar billede jtc Nybegynder
12. februar 2004 - 14:37 #9
login og pass er admin
Avatar billede jtc Nybegynder
12. februar 2004 - 14:38 #10
hvis du er der så håber jeg du kan se hvad jeg mener??
Avatar billede eagleeye Praktikant
12. februar 2004 - 14:48 #11
Jeg ved ikke om man kan med en iframe, men man kan enten udfylde dem ved at reloade siden og finde data fra den valgte, eller hendte alle firma'ers data på forhånd og havde et javascript som kan udfylde felterne når man vælger et firma, ved javascript reloades siden ikke.
Avatar billede jtc Nybegynder
12. februar 2004 - 14:52 #12
jamen hvordan gør man så det ved javascript, det lyder som om det er det jeg skal bruge???
Avatar billede nute Nybegynder
12. februar 2004 - 15:22 #13
dette kunne være et eksempel (nu ved jeg ikke hvad dine felter i databasen hedder, men princippet skal kunne være til at gennemskue:

<!--#include file="forbindelse.asp"-->
<html>
<head>
    <script language="JavaScript" type="text/javascript">
    <!--
    var g_arrCompany = null;
    function makeArray( p_strCompanies )
    {
        g_arrCompany = p_strCompanies.split( "#|#" );
    }
    function showCompany( p_intIndex )
    {   
        var strResult = "";
        if( p_intIndex > 0 )
        {
            var strCompany = g_arrCompany[ p_intIndex - 1 ];
            var arrCompany = strCompany.split("¤");
            strResult += "Navn: " + arrCompany[0] + "<br>";
            strResult += "Adresse: " + arrCompany[1] + "<br>";
        }
        var objCompInfo = document.getElementById( "divCompInfo" );
        if( objCompInfo )
        {
            objCompInfo.innerHTML = strResult;
        }
    }
    //-->
    </script>
</head>
<body>
<%
Sql = "Select * From tblkunder order by firmanavn asc"
Set Rs = database.Execute(Sql)
%>
<form>
<select name="forsikringstagernavn" id="forsikringstagernavn" onchange="showCompany( this.selectedIndex );">
<option value="-1">Vælg et navn........................................</option>
<%
Dim strAllCompanies : strAllCompanies = ""
Dim strCompany
Do While Not Rs.Eof
    %>
    <option value="<%= rs("firmanavn")%>"><%= rs("firmanavn") %></option>
    <%
    strCompany = rs("firmanavn") & "¤" & rs("adresse") & "#|#"
    strAllCompanies = strAllCompanies & strCompany
    Rs.MoveNext
Loop
%>
</select>
<div id="divCompInfo"></div>
<script language="JavaScript" type="text/javascript">
<!--
makeArray( '<%= strAllCompanies %>' );
//-->
</script>
</form>
</body></html>

/nute
Avatar billede jtc Nybegynder
12. februar 2004 - 15:24 #14
hej nute
Vil du have noget i mod at skrive det ind i min fil hvis jeg sender den til dig??
Avatar billede nute Nybegynder
12. februar 2004 - 15:31 #15
det går nok fint, men jeg tror ikke jeg får det gjort i dag

/nute
Avatar billede nute Nybegynder
12. februar 2004 - 15:32 #16
men den kode jeg har postet, er jo sådan set lige til at kopiere ind ?!
Avatar billede jtc Nybegynder
12. februar 2004 - 15:33 #17
hvis du vil have flere point får du bare det
Vil du????
Avatar billede jtc Nybegynder
12. februar 2004 - 15:33 #18
jeg har prøvet at sætte den ind men det virker ikke
Avatar billede nute Nybegynder
12. februar 2004 - 15:38 #19
hvis du dropper en mail med din adresse til "total_anonym_fyr@hotmail.com", så skal jeg sende dig en adresse du kan sende siden og db'en til mig på

/nute
Avatar billede jtc Nybegynder
12. februar 2004 - 15:42 #20
nu fandt jeg ud af at fejlen var der skulle stå adresse1, men hvordan får jeg firmanavn og adresse1 til at stå i en celle i en tabel
Avatar billede nute Nybegynder
12. februar 2004 - 15:49 #21
hele humlen i det hele, er blandt andet denne linje:

strCompany = rs("firmanavn") & "¤" & rs("adresse") & "#|#"

her skal du lægge alle de oplysniger du vil have til at stå i din "infobox". lige nu, så præsenterer den kun nav og adresse, men hvis du vil have flere oplysninger, så skal du bare lægge dem til, og skille oplysningerne med ¤:

strCompany = rs("firmanavn") & "¤" & rs("adresse") & "¤" & rs("tlf") & "¤" & rs("fax") & "#|#"

Derefter skal du op i javascriptet, og modificere følgende snip med kode:

strResult += "Navn: " + arrCompany[0] + "<br>";
strResult += "Adresse: " + arrCompany[1] + "<br>";

denne snip skal passe med den streng du bygger i ASP. hvis du har 4 oplysninger i din ASP variabel, så skal du også hive ud 4 oplysninger i arrayet 'arrCompany':

strResult += "Navn: " + arrCompany[0] + "<br>";
strResult += "Adresse: " + arrCompany[1] + "<br>";
strResult += "Tlf: " + arrCompany[2] + "<br>";
strResult += "Fax: " + arrCompany[3] + "<br>";

hvis du vil lave dette om til noget HTML, så skal du bare bygge en tabel:

var strResult = "<table>";
        if( p_intIndex > 0 )
        {
            var strCompany = g_arrCompany[ p_intIndex - 1 ];
            var arrCompany = strCompany.split("¤");
            strResult += "<tr><td>Navn:</td><td>" + arrCompany[0] + "</td></tr>";
            strResult += "<tr><td>Adresse:</td><td>" + arrCompany[1] + "</td></tr>";
            strResult += "<tr><td>Tlf:</td><td>" + arrCompany[2] + "</td></tr>";
            strResult += "<tr><td>Fax:</td><td>" + arrCompany[3] + "</td></tr>";
        }
strResult += "</table>"


u c ?
Avatar billede jtc Nybegynder
12. februar 2004 - 16:05 #22
okay men hvordan ændre jeg så på tekstformatet????
Avatar billede nute Nybegynder
12. februar 2004 - 16:11 #23
det har jeg gjort i min sidste posting ... hvor jeg har skrevet:

strResult += "<tr><td>Navn:</td><td>" + arrCompany[0] + "</td></tr>";
strResult += "<tr><td>Adresse:</td><td>" + arrCompany[1] + "</td></tr>";
strResult += "<tr><td>Tlf:</td><td>" + arrCompany[2] + "</td></tr>";
strResult += "<tr><td>Fax:</td><td>" + arrCompany[3] + "</td></tr>";

her blir dine data lagt ind i en tabel

/nute
Avatar billede jtc Nybegynder
12. februar 2004 - 16:23 #24
er du der endnu??
Avatar billede jtc Nybegynder
12. februar 2004 - 16:24 #25
jeg tænkte på om man kan angive at det skal være vardana eller times
Avatar billede nute Nybegynder
12. februar 2004 - 16:29 #26
lav denne:

var strResult = "<table>";

om til:

var strResult = "<table style=\"font-family:verdana;\">";

så kører den nok ... det er jo almindelig HTML! du kan gøre alt på samme måde som du normal gør med dine tabeller!

/nute
Avatar billede jtc Nybegynder
12. februar 2004 - 16:42 #27
hvis nu byen som hører til postnr ligger i en anden tabel ved navn tblpostnumre hvad gør jeg så for at få den med???
Avatar billede jtc Nybegynder
12. februar 2004 - 16:53 #28
det fandt jeg sørme selv ud af
Men mange tak for hjælpen indtil videre
Hvad nu hvis jeg skal bruge denne funktion 3 stedet på siden hvad gør jeg så???
Avatar billede jtc Nybegynder
12. februar 2004 - 17:14 #29
jeg har sendt en mail til dig på den adresse du angav, så håber jeg du skriver tilbage, for det er rigtig nyttigt det du kommer med her.
Tak for hjælpen indtil nu, jeg håber du skriver igen??
Så hurtigt som muligt da siden gerne skulle kører i morgen :-), men ellers går det nok også
Avatar billede nute Nybegynder
13. februar 2004 - 09:01 #30
hvis du skal bruge denne funktion flere steder, så kan det være smart at sende med id'et til det <div> tag som du vil have info vist. det kan gøres med at ændre din 'onchange' attribut på selectboxen fra:

showCompany( this.selectedIndex );

til

showCompany( this.selectedIndex, '[navnPåDiv]' );

hvor du skal ændre [navnPåDiv] til navnet på dét <div> tag du vil have info vist. i mit postede eksempel, skal du fx skrive:

showCompany( this.selectedIndex, 'divCompInfo' );

derefter skal du ændre lidt i funktionen 'showCompany' - den skal nu se sådan ud:

function showCompany( p_intIndex, p_strDivId )
    {   
        var strResult = "";
        if( p_intIndex > 0 )
        {
            var strCompany = g_arrCompany[ p_intIndex - 1 ];
            var arrCompany = strCompany.split("¤");
            strResult += "Navn: " + arrCompany[0] + "<br>";
            strResult += "Adresse: " + arrCompany[1] + "<br>";
        }
        var objCompInfo = document.getElementById( p_strDivId );
        if( objCompInfo )
        {
            objCompInfo.innerHTML = strResult;
        }
    }

så burde den være klar til at køre :-)

/nute
Avatar billede nute Nybegynder
13. februar 2004 - 09:04 #31
ups .. .jeg kan se at jeg fik postet en "gammel" version af denne funktion. de eneste ændringer du skal gøre i funktionen, er at skifte denne linje:

function showCompany( p_intIndex )

til dette:

function showCompany( p_intIndex, p_strDivId )

og denne linje

var objCompInfo = document.getElementById( "divCompInfo" );

til dette:

var objCompInfo = document.getElementById( p_strDivId );

/nute
Avatar billede jtc Nybegynder
13. februar 2004 - 10:58 #32
jamen nu har jeg lavet det om men skal jeg have 2 javascripts??
Avatar billede nute Nybegynder
13. februar 2004 - 11:14 #33
nej, det er ikke nødvendig ... du kan jo genbruge hvis det er de samme informationer der skal vises for alle 3 "tilfælder"
Avatar billede jtc Nybegynder
13. februar 2004 - 11:16 #34
det er det nemlig ikke
men jeg har lige prøvet at sende en mail til dig med database og side men mailen fyldte vist for meget 5,4 mb
Avatar billede nute Nybegynder
13. februar 2004 - 11:25 #35
kan du ikke lave en kopi af basen, og slette de tabeller der ikke bruges af scriptet. lav basen lidt mindre og send det til den adresse jeg opgav i min mail

/nute
Avatar billede nute Nybegynder
13. februar 2004 - 14:35 #36
løsningen er som beskrevet ... jeg har hjulpet med at rette til scriptet pr. mail

/nute
Avatar billede jtc Nybegynder
16. februar 2004 - 18:14 #37
Ja jeg takker nute mange gange for hjælpen og viser her det endelige resultat af samarbejdet

    <script language="JavaScript" type="text/javascript">
    <!--
    var g_strCompany = null;
    var g_strInsurance = null;
    var g_strHandyMan = null;
   
    function makeArray( p_strInformation, p_intIndex )
    {
        g_arrInfoArray[ p_intIndex ] = p_strInformation.split( "#|#" );
    }
    function showCompany( p_intIndex, p_strDivID )
    {   
        showTable( p_intIndex, g_strCompany, p_strDivID );
    }
    function showHandyMan( p_intIndex, p_strDivID )
    {   
        showTable( p_intIndex, g_strHandyMan, p_strDivID );
    }
    function showInsurance( p_intIndex, p_strDivID )
    {   
        showTable( p_intIndex, g_strInsurance, p_strDivID );
    }
   
    function showTable( p_intIndex, p_arrInfo, p_strDivID )
    {
        var strResult = "";
        var strInfo = "";
        var arrInfo = p_arrInfo.split( "#|#" );
        if( p_intIndex > 0 )
        {
            strInfo = arrInfo[ p_intIndex - 1 ]
           
            if( strInfo != "" )
            {   
                strResult = "<table>";
                arrInfo = strInfo.split("¤");
                for( i = 0; i < arrInfo.length; i++ )
                {
                    strResult += "<tr><td height=\"18\"><font size=\"1\" face=\"Verdana, Arial, Helvetica, sans-serif\">" + arrInfo[i] + "</font></td></tr>";
                }
                strResult += "</table>";
            }
        }
       
        var objInfoDiv = document.getElementById( p_strDivID );
        if( objInfoDiv )
        {
            objInfoDiv.innerHTML = strResult;
        }
    }
       
    //-->
    </script>



                                  <%
Sql = "Select * From tblkunder order by firmanavn asc"
Set Rs = database.Execute(Sql)
%>
                                  <select name="forsikringstagerid" id="forsikringstagerid" onchange="showCompany( this.selectedIndex, 'divCompInfo' );">
                                    <option>Vælg et navn........................................</option>
                                    <%
Dim strAllCompanies : strAllCompanies = ""
Dim strCompany
Dim intCounter : intCounter = 1
Dim intSelected : intSelected = 0
Dim strID : strID = Request.QueryString("IDKunde")
Dim strSelected
Do While Not Rs.Eof
strSelected = ""
if( strID = rs("id") ) then
    strSelected = " selected=""selected"""
    intSelected = intCounter
else
    intCounter = intCounter + 1
end if

%>
                                    <option value="<%= rs("id")%>"<%= strSelected %>><%= rs("firmanavn") %></option>
                                    <%
Sql2 = "Select * From tblpostnumre where postnr='" & rs("postnr") & "'"
Set Rs2 = database.Execute(Sql2)
strCompany = rs("kontaktperson") & "¤" & rs("adresse1") & "¤" & rs("adresse2") & "¤" & rs("postnr") & " " & rs2("by") & "¤" & rs("tlf") & "¤" & rs("telefax") & "¤" & rs("mobil") & "¤" & rs("email") & "#|#"
strAllCompanies = strAllCompanies & strCompany
Rs.MoveNext
Loop
%>
                                  </select>




<div id="divCompInfo"></div>
                                <script language="JavaScript" type="text/javascript">
                                <!--
                                g_strCompany = '<%= strAllCompanies %>';
                                <%
                                if( intSelected > 0 ) then
                                    %>
                                    showCompany( <%= intSelected %>, 'divCompInfo' );
                                    <%
                                end if
                                %>
                                //-->
                                </script>
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
Kurser inden for grundlæggende programmering

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