Datenbank, Textfelder und Javaskript
Christoph Trummer
Hi!
Ich habe eine Access Datenbank. Aus dieser lese ich mittels ASP in ein Dropdownmenü Datensätze (Liste aus Namen) heraus. Wähle ich einen Namen in der Liste aus, so soll nun z.B. das Geburtsdatum aus der Datenbank in ein Textfeld (<input type="text" name="gebdat">) geschrieben (aktualisiert/übernommen) werden. Das alles soll bei Auswahl aus dem Dropdownmenü erfolgen (also onChange und Javaskriptaufruf). Geht das überhaupt?
Kann mir jemand helfen???
Thanx im Voraus Chris
Hi,
Das alles soll bei Auswahl aus dem Dropdownmenü erfolgen (also onChange und Javaskriptaufruf). Geht das überhaupt?
erzeuge mit ASP einen JavaScript-Code, der die entsprechenden Informationen enthält. Eine Online-Verbindung ist mit JavaScript nicht möglich.
Cheatah
erzeuge mit ASP einen JavaScript-Code, der die entsprechenden Informationen enthält. Eine Online-Verbindung ist mit JavaScript nicht möglich.
Cheatah
Äh, und wie? Beispiel bitte.
thanx Chris
Hi,
erzeuge mit ASP einen JavaScript-Code, der die entsprechenden Informationen enthält.
Äh, und wie? Beispiel bitte.
ich kann kein ASP und weiß nicht, wie man damit Code ausgibt. Erstell erst mal den (Beispiel-)JavaScript-Code per Hand, der das tut, was Du möchtest; dann mache Dich daran, das ganze mit ASP zu automatisieren.
Ein Beispiel scheitert schon daran, daß ich nicht weiß, was Du mit JavaScript durchführen willst. Darüber mußt Du Dir glaube ich aber selbst erst mal klar werden, weil Du (wie ich vermute) falsche Vorstellungen von der Vorgehensweise hattest. Denk erst mal ohne ASP, dann kannst Du Dich auf die eigentlichen Probleme konzentrieren.
Cheatah
erzeuge mit ASP einen JavaScript-Code, der die entsprechenden
Informationen enthält. Eine Online-Verbindung ist mit JavaScript
nicht möglich.Cheatah
»»Äh, und wie? Beispiel bitte.
thanx Chris
einfach mal folgende zeilen als denkanstoss nehmen:
(wenn Du mit asp dropdownlisten erzeugen kannst,
sollte Dir das generieren von JavaScript-code
ebenfalls gelingen)
Du musst Dir mit hilfe von JavaScript ein abbild
Deiner ACCESS-datenbank auf dem client schaffen;
diese loesung ist aber nur zu empfehlen, wenn
die menge der darzustellenden daten 500 datensaetze
nicht uebersteigt (meinetwegen 100 namen mit jeweils
4 zusaetzlichen einzelinformationen) - die mangelnde
cache-verwaltung einiger browser sowie die unbekannte
RAM-groesse des clientrechners setzen da grenzen;
diese zahl entspricht nur meiner erfahrug - wenn Du
einen groesseren umfang anstrebst, kannst Du das
ausprobieren - besser ist es, gleich auf einen anderen
weg einzuschwenken -
z.b.: zweiter frame mit asp-seite, die den inhalt Deiner
datenbank in inputfeldern (oder auch anderweitig
formatiert) anzeigt - in abhaengigkeit von einem
onchange-event in Deinen dropdowns kannst Du diese
seite ja aufrufen:
"onchange=top.ZWEITER_FRAME.location.href='zeige_infos.asp?name=this.options[this.selectedIndex].value'"
oder so ...
jetzt zum eigentlichen script:
<%@ Language=VBScript %>
<%
SUB generateNamen
'Deine bedingungen
'if dieses oder jenes, dann
%>
'hier musst Du Dein asp eine durch komma getrennte
'namensliste erzeugen lassen - die namen muessen
'von doppelten oder einfachen hochkommata einge-
'schlossen sein "Mueller, Lieschen","Peter Froehlich","","",...
<%
end SUB 'generateNamen
SUB generateGebtag
'Deine bedingungen
'if dieses oder jenes, dann
%>
'hier musst Du Dein asp eine durch komma getrennte
'namensliste erzeugen lassen - die namen muessen
'von doppelten oder einfachen hochkommata einge-
'schlossen sein "Mueller, Lieschen","Peter Froehlich","","",...
<%
end SUB 'generateGebtag
'...
'was Du sonst noch so an daten generieren musst
'...
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>...</title>
<script language = "JavaScript">
<!--
var NAMEN_array = new Array(<%generateNamen%>);
var GEBTAG_array = new Array(<%generateGebtag%>);
//var STASSE\_aarry = new Array(<%generateStrasse%>);
//var HAUSNR_array = new Array(<%generateHausnr%>);
//ar PLZ_array = new Array(<%generatePlz%>);
//var TEL_array = new Array(<%generateTel%>);
//var FAX_array = new Array(<%generateFax%>);
//var EMAIL_array = new Array(<%generateEmail%>);
//... und was Dir sonst noch so einfaellt
//das mit den vectoren, die Deine daten halten,
//kann man auch oekonomischer loesen, aber ich
//weiss ja nicht hundertprozentig, wie Dein ergebnis
//mal aussehen soll - zum denkanstoss sollte es aber
//allemal gereicht haben
function ZEIGE_INFOS(gewaehlter_index)
{
// nur fuer den geburtstag
//
var gebtag = self.GEBTAG_array[gewaehlter_index].value;
self.document.forms["DEIN_FORM"].elements.["DEIN_TOLLES_GEBURTSTAGSFELD"].value = gebtag;
}
//
// gewaehlter_index:
// die position, an welcher der ausgewaehlte namen im dropdown steht
//
// sobald Du anfaengst, das <select> ueber dessen <option>en zu formatieren
// funktioniert diese variante nicht, und Du musst asp einen forlaufenden
// value schreiben lassen, um dann spaeter ebendiesen von JS-abfragen zu lassen
// Du holst Dir sonst werte aus Deiner clientseitigen "Datenbank" ab, die nicht
// zum ausgewaehlten namen passen
//
// ???????????bahnhof: deatails - siehe unten- strick Dich durch
//
//-->
</script>
</head>
<body>
<!--
hier hast du ja nun schon dein asp segensreich wirken lassen,
um ein schoenes formular mit drobdowns zu erzeugen ...
... also machen wir weiter und beziehen uns wieder auf den
onchange-event ...
in jedem Deiner <select>s, die Du durch asp erzeugt muss dann
natuerlich JS-code stehen, der darauf wartet, mit den oben
generierten daten und funktionen "zusammenzuarbeiten" -
da ich nicht weis, was Du sonst noch so implementieren moechtest
kann ich Dir den relevanten quellcode nur fuer Dein beispiel zeigen -
'zeige daten in abhaengigkeit von gewaehltem namen' :
(a)
"onchange='self.ZEIGE_INFOS(this.selectedIndex)'"
(/a)
oder, wenn Du ueber value gehen musst, weil Du
trennzeilen in Deinen dropdown eingefuegt hast:
(b)
"onchange='self.ZEIGE_INFOS(this.options[this.selectedIndex].value)'"
natuerlich musst Du in diesem fall Dein asp einen drop-down erzeugen
lassen, der den value als zahl uebergiebt: value=0, value=1, ...
!!!!!!!!
achtung: \* der wert, der an diese funktion uebergeben wird, sollte auf alle
faelle mit der dazugehoerigen position der jeweiligen zusatzinfo
in den generierten arrays uebereinstimmen
* elemente werden in JS generell mit "0" angezahlt - die erste
zeichenkette in den jeweiligen arrays wird also mit ..._array[0].value
"angesprochen"
(/b)
-->
</body>
</html>
so das wars - ich hoffe, ich konnte Dir weiterhelfen, und Du siehst wieder etwas land -
ueber eine rueckmeldungen wuerde ich mich freuen - peter seliger - pseliger@gmx.net
Vorerst noch einmal Danke! Dennoch hab ich noch ein Problem!
SUB generateGebtag
Muß das eine Funtion sein? Wenn ja wie komme ich an die variable, der ich den String (also die Liste) zuweise heran?
Wenn ich mir den String ausgeben lasse kommt nämlich alles so wie es sein soll: "01.02.56","05.09.78",usw.
Aber offenbar wird bei der erzeugung des Arrays nichts hineingeschrieben! Im Textfeld erscheint ein "undefined", wenn ich mir die length des arrays anzeigen lasse ergibt dies 0!!!
Meine codezeile:
<script Language="Javascript">
gdate_array = new Array(<%=String_mit_geburtsdaten%>);
.
.
.
</script>
Meine Vermutung ist: Er erkennt die Variable nicht als solche, da sie unter ASP Tag steht!? Da ich, wenn ich den Inhalt der Variable (also "01.02.56","05.09.78") hineinschreibe ein korrektes ergebnis bekomme!
Deshalb meine Frage: Wie kriege ich den in der Variable enthaltenen String in den Array???
Danke im voraus
Christoph
Vorerst noch einmal Danke! Dennoch hab ich noch ein Problem!
SUB generateGebtag
Muß das eine Funtion sein? Wenn ja wie komme ich an die variable, der ich den String (also die Liste) zuweise heran?Wenn ich mir den String ausgeben lasse kommt nämlich alles so wie es sein soll: "01.02.56","05.09.78",usw.
Aber offenbar wird bei der erzeugung des Arrays nichts hineingeschrieben! Im Textfeld erscheint ein "undefined", wenn ich mir die length des arrays anzeigen lasse ergibt dies 0!!!Meine codezeile:
<script Language="Javascript">
gdate_array = new Array(<%=String_mit_geburtsdaten%>);
.
.
.
</script>Meine Vermutung ist: Er erkennt die Variable nicht als solche, da sie unter ASP Tag steht!? Da ich, wenn ich den Inhalt der Variable (also "01.02.56","05.09.78") hineinschreibe ein korrektes ergebnis bekomme!
Deshalb meine Frage: Wie kriege ich den in der Variable enthaltenen String in den Array???
Danke im voraus
Christoph
hi christoph,
Muß das eine Funtion sein? Wenn ja wie komme ich an die variable, der ich den String (also die Liste) zuweise heran?
muss nicht, ist aber uebersichtlicher;
Aber offenbar wird bei der erzeugung des Arrays nichts hineingeschrieben! Im Textfeld erscheint ein "undefined", wenn ich mir die length des arrays anzeigen lasse ergibt dies 0!!!
...
Meine Vermutung ist: Er erkennt die Variable nicht als solche, da sie unter ASP Tag steht!? Da ich, wenn ich den Inhalt der Variable (also "01.02.56","05.09.78") hineinschreibe ein korrektes ergebnis bekomme!
Deshalb meine Frage: Wie kriege ich den in der Variable enthaltenen String in den Array???
auf alle faelle musst Du mit VBscript fuer den inhalt jedes JS-arrays
eine entsprechende zeichenkette erzeugen:
"'Mueller, Lieschen','Froehlich, Peter','...','...'"
"'05.09.1978','01.02.1956','xx.xx.2000','...'"
usw.
ob Du das nun mit oder ohne SUB hinbastelst sei Dir ueberlassen -
(mit SUB sparst Du nur ein paar variablen-muss man heute nicht mehr)
ohne SUB(siehe gestern) gehts auch und sieht dann so aus:
<%@ Language=VBScript %>
<%
dim generatedNamen
dim generaredGebtag
'dim was du sonst noch so an zeichenketten
' (fuer JS-arrays) generieren musst
generatedNamen = ""
generatedGebtag = ""
schleife
gehe durch meine ACCESS-datenbank und hole
mir vom anfang bis zum ende je einen eintrag
fuer [Namen],[Gebtag],etc heraus und uebergib
die werte wie folgt:
generatedNamen = "'"&[Namen]&"',"
'erzeugt Dir zeichenkette: 'Mueller, Lieschen','...
generatedGebtag = "'"&[Gebtag]&"',"
'erzeugt Dir zeichenkette: '05.09.1978','...
ende schleife
'jetzt solltest Du noch das letzte zeichen in der jeweiligen
'zeichenkette loeschen - das ist ein komma (,) - oder Du haengst
'einfach noch einen leeren eintrag ran ('') - saehe dann so aus:
generatedNamen = generatedNamen&"''"
generatedGebtag = generatedGebtag & "''"
'und hat keine auswirkungen auf die funktionsweise der JavaScripts,
'die eintraege am ende der arrays sind eben leer:
' 'Mueller, Lieschen','...', ... , '...',''
' '05.09.1978','...', ... , '...',''
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>...</title>
<script language = "JavaScript">
<!--
//uebergabe der werte sieht jetzt so aus
var NAMEN_array = new Array(<%response.write(generatedNamen)%>);
var GEBTAG_array = new Array(<%response.write(generatedGebtag)%>);
function ZEIGE_INFOS(gewaehlter_index)
{
//wie gehabt
}
//-->
</script>
</head>
<body>
<!-- dein tolles asp -->
</body>
</html>
so das wars mal wieder - rueckmeldung nicht vergessen
tschuess - peter - pseliger@gmx.net