• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

Javascript-Datenbankabfrage

jacky

New member
Hallo Javascript-freaks

Ihr könnt mir bestimmt weiterhelfen. Ich habe eine JS-basierte Datenbank, die auf Abfrage ein Fenster generiert mit den ausgelesenen Daten: zweimal Text und zwei Grafiken. Ein Text (der gesuchte Begriff) soll mit einer html-Seite verknüpft werden, und die Grafiken auch jeweils mit einer html-Seite.
Es gibt zwei files daten.js für die Dateneingabe und db.js für die Abfrage.
file daten.js:

var Eingabe, a, b, d=0;
var amax=150;
var db=new Array ();

for (a=0; a<amax; a++)
{
db[a]=new Array(4);
}

db[0][0]="wärmeleitung";
db[0][1]="Wärme";
db[0][2]="Icard_leitfähigkeit.html";
db[0][3]="Tool_waermeleitf.html";

db[1][0]="w";
db[1][1]="Wärme";
db[1][2]="Icard_durchlassw.html";
db[1][3]="Tool_waermeleitf.html";

db[2][0]="adiabat";
db[2][1]="Wärme";
db[2][2]="Icard_uebergangskoeff.html";
db[2][3]="Tool_waermeleitf.html";


file db.js:

function abfrage()
{
var amax=150;
Eingabe= window.document.forms[0].elements[0].value;
Eingabe=Eingabe.toLowerCase();

for (a=0; a<amax; a++)
{
if (Eingabe==db[a][0])
{
d=1;
{
var gesuchterBegriff;
var Kapitel;
var Icard;
var Tool;
var win=window.open ("", "Datenbankabfrage"," width=350, height=300, resizable=no");

gesuchterBegriff=db[a][0];
Kapitel=db[a][1];
Icard=db[a][2];
Tool=db[a][3];
win.document.write ("<H2>Ihre Suche ergab folgendes Ergebnis:</H2>");
win.document.write ("<H4>Suchbegriff: <A HREF=\"gesuchterBegriff.html\">" + gesuchterBegriff +
"</A></H4>");
win.document.write ("<H4>Kapitel: " + Kapitel + "<H4>");
win.document.write('<H4>IndexCard:</H4><A HREF=\"Icard.html\"><img src=\"indexcard.gif"
width=\"40\" height=\"40\" border=\"0\"></A>');
win.document.write ('<H4>KnowledgeTool:</H4><A HREF=\"Tool.html\"><img src=\"Tool.gif"
width=\"50\" height=\"50\" border=\"0\"></A>');
}
break;
}
}
if (d==0)
{
alert ("Begriff ist nicht vorhanden!");
}
}


Was nicht funktioniert: Die zu jedem Eintrag gehörende URL muss noch in Daten.js angegeben werden. Ich weiss nur nicht wie??
:confused:
und in db.js müsste dann z.B. hier
A HREF=\"Tool.html\"
über die Variable Tool der passende Link für den gesuchten Begriff dynamisch bei der Abfrage erscheinen.
Weiss jemand wie das geht??

Gruss
Jacky
 
Hi jacky,

habe ein paar Sachen geändert, an den wichtigsten Stellen stehen Kommentare dabei.

--------1. dein datenfile, bitte unter daten.js abspeichern, ansonsten den link anpassen


var Eingabe, a, b, d=0;
var amax=150;
var db=new Array ();

for (a=0; a<amax; a++)
{
db[a]=new Array(4);
}

db[0][0]="ard"; // habe etwas umbenannt, zur besseren handhabung
db[0][1]="Wärme ard";
db[0][2]="Icard_leitfähigkeit.html";
db[0][3]="Tool_waermeleitf.html";
db[0][4]="http://www.ard.de";
// hier wird die url in das zweidimensionale array geschrieben

db[1][0]="zdf"; // Du bist zwar Schweizer, da gibts andere Sender.
// Ich bin vom Allgäu und höre oft drs3
db[1][1]="Wärme zdf";
db[1][2]="Icard_durchlassw.html";
db[1][3]="Tool_waermeleitf.html";
db[1][4]="http://www.zdf.de"; // hier auch

db[2][0]="rtl";
db[2][1]="Wärme rtl";
db[2][2]="Icard_uebergangskoeff.html";
db[2][3]="Tool_waermeleitf.html";
db[2][4]="http://www.rtl.de"; // usw

----------------2. die html-datei

<html>
<head>
<title></title>

<script language="JavaScript" src="daten.js" type="text/javascript">
// je nachdem wie deine datenbank heist, hier daten.js
</script>

</head>
<body >

<script language="JavaScript">
<!--

function abfrage()
{
var amax=5;
Eingabe= window.document.forms.elements[0].value;
//------------habe nur ein Formular, deshalb kein forms[]

Eingabe=Eingabe.toLowerCase();

for (a=0; a<amax; a++){
if (Eingabe==db[a][0]){
d=1;

var gesuchterBegriff;
var Kapitel;
var Icard;
var Tool;
var verweis;

gesuchterBegriff=db[a][0];
Kapitel=db[a][1];
Icard=db[a][2];
Tool=db[a][3];
verweis=db[a][4]; //--------hier wird die url in eine var gepackt
var win = window.open ("", "Datenbankabfrage"," width=350, height=400, resizable=no");

win.document.open();
//----------auch ein Fenster sollte mit <html>usw...beginnen, funzt zwar auch manchmal ohne,
//-------aber ist eine potentielle Fehlerquelle
win.document.write ("<html><head></head><body><H2>Ihre Suche ergab folgendes Ergebnis:</H2>");
win.document.write ("<H4>Suchbegriff: <A HREF=\"gesuchterBegriff.html\">" + gesuchterBegriff + "</A></H4>");
win.document.write ("<H4>Kapitel: " + Kapitel + "</H4>");
//------------jetzt kommt die url als var verweis
win.document.write("<H4>IndexCard:</H4><A HREF=\""+verweis+"\"><img src='bild.jpg' width=\"50\" height=\"50\" border=\"0\" >Link zur "+ gesuchterBegriff+"</A>");
win.document.write ("<H4>KnowledgeTool:</H4><A HREF=\"Tool.html\"><img src=\"Tool.gif\" width=\"50\" height=\"50\" border=\"0\"></A></body></html>");
win.document.close();
win.document.focus();
alert("A");

}
}


if (d==0){
alert ("Begriff ist nicht vorhanden!");
}
}

//-->
</script>


<form name="forms" action="" method="" target="">
In das erste Feld ard oder zdf oder rtl eingeben<br>
<input type="Text" name="elements" value="" size="" maxlength="">
<input type="Text" name="elements" value="" size="" maxlength="">
<input type="Submit" onClick="abfrage()" name="s" value="submit">

</form>
</body>
</html>

Bei mir klappts
cu
 
so funktioniert es

Hallo grunz

tut mir leid dass ich erst jetzt antworte, d.h. ich hatte die Antwort am Donnerstag schon fertig, dann ist dieser Server hier abgestürzt (hab's selber kaum glauben können). Also nochmal: (ich bin schon ein gutes Stück weitergekommen)
Dein Skript habe ich bei mir nicht zum Laufen gebracht...???
Meins ist jetzt nahezu fehlerfrei: bitte probier es doch mal aus, wenn Du nach dem Begriff "Wärmeleitung" suchst, funktionieren auch die links (mit etwas unvollständigen Seiten, aber egal).
Meine Kommentare bezüglich des Skripts sind eingefügt (Dinge, die mir nicht ganz klar sind).
Was noch nicht funktioniert ist das kleine Fenster im Netscape, es ist und bleibt gross, warum???

Gruss und Danke
Jacky

PS: Die js-files erscheinen nach jedem Öffnen mit weit auseinandergezogenen Zeilen (Leerzeilen), wie kann ich das verhindern?

//Daten.js:

var Eingabe, a, b, d=0;
var amax=1000;
var db=new Array ();

for (a=0; a<amax; a++)
{
db[a]=new Array(5);
}

db[0][0]="wärmeleitung";
db[0][1]="Wärme";
db[0][2]="Waerme_Grundl/Indexcard/Icard_leitfähigkeit.html";
db[0][3]="Waerme_Grundl/Tool/Tool_waermeleitf.html";
db[0][4]="Waerme_Grundl/waermeleitung.html";


db[1][0]="wärmedurchlasskoeffizient";
db[1][1]="Wärme";
db[1][2]="Waerme_Grundl/Indexcard/Icard_durchlassw.html";
db[1][3]="Waerme_Grundl/Tool/Tool_waermeleitf.html";
db[1][4]="Waerme_Grundl/waermeleitung.html";

db[2][0]="adiabat";
db[2][1]="Wärme";
db[2][2]="Waerme_Grundl/Indexcard/Icard_uebergangskoeff.html";
db[2][3]="Waerme_Grundl/Tool/Tool_waermeleitf.html";
db[2][4]="Waerme_Grundl/instationaer.html";


//db.js:

function abfrage()

{
Eingabe= window.document.forms[0].elements[0].value;
Eingabe=Eingabe.toLowerCase();

for (a=0; a<amax; a++)
{
if (Eingabe==db[a][0])
{
d=1;
{

var gesuchterBegriff;
var Kapitel;
var Indexcard;
var Tool;
var Link;
var win=window.open ("", "Datenbankabfrage", "width=350, height=350, resizable=yes, titlebar=yes"); // öffnet nur im Internet Explorer korrekt, d.h. kleines Fenster, im Netscape erscheint es gross und ist nicht resizable!!???

gesuchterBegriff=db[a][0];
Kapitel=db[a][1];
Indexcard=db[a][2];
Tool=db[a][3];
Link=db[a][4];

win.document.open (); //Methode darf wegen Netscape keinen Inhalt erhalten (z.B. ("html/text")), funktioniert sonst nicht!!
win.document.bgColor="CCCCCC";
win.document.fgColor="003366";
win.document.write ("<H3>Ihre Suche ergab folgendes Ergebnis:</H3>");
win.document.write ("<H4>Suchbegriff: <A HREF=http://www.bph.hbt.arch.ethz.ch/Filep/" + Link + " TARGET=_blank>" + gesuchterBegriff + "</A></H4>");
win.document.write ("<H4>Kapitel: " + Kapitel + "</H4>");

win.document.write("<H4>IndexCard:</H4><A HREF=http://www.bph.hbt.arch.ethz.ch/Filep/"+Indexcard+"><IMG SRC=indexcard.gif border=0></A>"); // funktioniert nur ohne die "" bei indexcard.gif
win.document.write("<H4>KnowledgeTool:</H4><A HREF=http://www.bph.hbt.arch.ethz.ch/Filep/"+Tool+"><IMG SRC=tool.gif border=0></A>");
win.document.write("<H4></H4>"); //Zeile notwendig wegen Netscape, sonst erscheint Bild aus vorhergehender Zeile nicht!
}
break;
}
}
if (d==0)
{
alert ("Begriff ist nicht vorhanden!");
}
}

//und hier noch die html-Datei: jedoch nur das Ende ab /HEAD , weil GoLive einen Wust an Code produziert.

</HEAD>
<SCRIPT LANGUAGE="JAVASCRIPT" SRC="daten.js">
</SCRIPT>
<SCRIPT LANGUAGE="JAVASCRIPT" SRC="db.js">
</SCRIPT>
<BODY BGCOLOR="papayawhip" onload="CSScriptInit();CSScriptInit()">Sucheingabe:<FORM NAME="Direktsuche">
<input type="text" name="Eingabe" size="24"><csobj w="25" h="25" t="Button" ht="button_go_01-over.gif" cl="/button_go_01.gif" csclick="18E34FA1"><a href="#" onmouseover="return CSIShow(/*CMP*/'buttonIndexcard',1)" onmouseout="return CSIShow(/*CMP*/'buttonIndexcard',0)" onclick="abfrage()"><img src="/button_go_01-click.gif" width="25" height="25" name="buttonIndexcard" border="0"></a></csobj>
</FORM>
</BODY></HTML>
 
Hi jacky,

1. Hier dürfen keine Leerzeichen sein
width=350,#height=350,#resizable=yes,#titlebar=yes
2. <h4> ist eine Formatierung für eine Überschrift, und erzeugt deshalb die Leerzeile darunter
3. Ich hab das komplette script nochmal gepostet, dann läufts bestimmt. plug`n play
4. Mußte es etwas anpassen, damit es ohne Adobe-gedöns auch läuft

Viel Spaß
grunz

<html>
<head>
<title></title>
<meta name="author" content="">
<meta name="generator" content="Ulli Meybohms HTML EDITOR">

<head>
<script language="JavaScript">
<!--


var Eingabe, a, b, d=0;
var amax=10;
var db=new Array ();

for (a=0; a<amax; a++)
{
db[a]=new Array(5);
}

db[0][0]="1";
db[0][1]="Wärme";
db[0][2]="Waerme_Grundl/Indexcard/Icard_leitfähigkeit.html";
db[0][3]="Waerme_Grundl/Tool/Tool_waermeleitf.html";
db[0][4]="Waerme_Grundl/waermeleitung.html";


db[1][0]="2";
db[1][1]="Wärme";
db[1][2]="Waerme_Grundl/Indexcard/Icard_durchlassw.html";
db[1][3]="Waerme_Grundl/Tool/Tool_waermeleitf.html";
db[1][4]="Waerme_Grundl/waermeleitung.html";

db[2][0]="3";
db[2][1]="Wärme";
db[2][2]="Waerme_Grundl/Indexcard/Icard_uebergangskoeff.html";
db[2][3]="Waerme_Grundl/Tool/Tool_waermeleitf.html";
db[2][4]="Waerme_Grundl/instationaer.html";


//-->
</script>
<noscript></noscript>
<script language="JavaScript">
<!--

function abfrage()

{
Eingabe= window.document.forms[0].elements[0].value;
Eingabe=Eingabe.toLowerCase();

for (a=0; a<amax; a++)
{
if (Eingabe==db[a][0])
{
d=1;


var gesuchterBegriff;
var Kapitel;
var Indexcard;
var Tool;
var Link;
var win=window.open ("", "Datenbankabfrage","width=350,height=350,resizable=yes,titlebar=yes"); // öffnet nur im Internet Explorer korrekt, d.h. kleines Fenster, im Netscape erscheint es gross und ist nicht resizable!!???

gesuchterBegriff=db[a][0];
Kapitel=db[a][1];
Indexcard=db[a][2];
Tool=db[a][3];
Link=db[a][4];

win.document.open (); //Methode darf wegen Netscape keinen Inhalt erhalten (z.B. ("html/text")), funktioniert sonst nicht!!
win.document.bgColor="CCCCCC";
win.document.fgColor="003366";
win.document.write ("<html><head></head><body>Ihre Suche ergab folgendes Ergebnis:<br>");
win.document.write ("Suchbegriff: <A HREF=http://www.bph.hbt.arch.ethz.ch/Filep/" + Link + " TARGET=_blank>" + gesuchterBegriff + "<br></A>");
win.document.write ("Kapitel: " + Kapitel + "<br>");

win.document.write("IndexCard:<br><A HREF=http://www.bph.hbt.arch.ethz.ch/Filep/"+Indexcard+"><IMG SRC=indexcard.gif border=0></A>"); // funktioniert nur ohne die "" bei indexcard.gif
win.document.write("KnowledgeTool:<br><A HREF=http://www.bph.hbt.arch.ethz.ch/Filep/"+Tool+"><IMG SRC=tool.gif border=0></A>");
win.document.write("</body></html>"); //Zeile notwendig wegen Netscape, sonst erscheint Bild aus vorhergehender Zeile nicht!
}

}

if (d==0)
{
alert ("Begriff ist nicht vorhanden!");
}
}
//-->
</script>
<noscript></noscript>

</HEAD>

<BODY BGCOLOR="papayawhip" >Sucheingabe: 1 oder 2 oder 3<FORM NAME="Direktsuche">
<input type="text" name="Eingabe" size="24"><a href="javascript:abfrage()" >abfrage</a>
</FORM>
</BODY></HTML>
 
denk dran: das Leerzeichen bei javascript rauslöschen, das macht der Webteufel rein

Eingabe" size="24"><a href="java script:abfrage()" >abfrage</a>
 
jetzt noch ein paar abschliessende Fragen

Hi grunz,

jetzt ist Dein skript auch bei mir o.k., vielen Dank für den Tip mit den Leerzeichen, das Fenster erscheint jetzt auch im Netscape klein.
Die auseinandergezogenen Codezeilen treten vor allem in diesem Bereich auf:
Ausschnitt aus db.js:


}


break;


}


}



if (d==0)


{


alert ("Begriff ist nicht vorhanden!");


...nicht so praktisch, oder??

Na ja aber es funktioniert wenigstens, schlechter ist es eher in Daten.js, da jedes array eigentlich schön beisammen bleiben sollte, bei 500 Einträgen oder mehr wird es sonst schnell unübersichtlich. Die .js-files lassen sich nur in GoLive öffnen, vielleicht versuch ich es mal mit einem schlichten Texteditor.
Noch was anderes:
Wie kann ich erreichen, dass nach der Sucheingabe mit Enter dasselbe passiert, als wenn auf den Button gedrückt wurde, das wird ja sehr häufig gemacht?
..und nachdem einer das kleine Suchfenster wieder geschlossen hat, soll der focus wieder auf dem Eingabefeld liegen, wo baue ich das ins Skript ein??

Viele Grüsse von
Jacky
 
Zurück
Oben