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

JS-Datenbank nach mehreren Treffern durchsuchen

jacky

New member
Hallo,

vor einiger Zeit (knapp 1 Jahr) habe ich mal etwas zu meiner Javascript Datenbank gepostet. Jetzt möchte ich sie erweitern, um nach mehreren gleichlautenden Treffern suchen zu können. Leider wird bis jetzt nur jeweils ein Treffer gefunden und wenn der Abfrage-Knopf dann nochmal gedrückt wird, wird ein 2. Treffer angegeben und dann ein 3. usw. egal, ob nun einer oder mehrere Treffer tatsächlich in der Datenbank vorhanden sind. Problem: Die Variable "treffer" wird jeweils nur dann hochgezählt, wenn der Button gedrückt wurde, soll aber immer wenn ein Datensatz gefunden wurde, weiter hochzählen.
Vielleicht hat jemand Interesse, sich das mal anzuschauen. Ich habe die Datensätze gekürzt, man kann nach "Absorption" suchen (kommt einmal vor), oder nach "Zeitkonstante" (kommt zweimal vor).
Die html-Datei zur Abfrage findet ihr hier: Datenbankabfrage

Was noch nicht im Code vorhanden ist: Wenn mehrere Treffer vorhanden sind, sollen diese mittels Link (in dem aufgerufenen Fenster) ein weiteres kleines Fenster mit dem nächsten Treffer-Inhalt öffnen usw.

Hier der Code für die (gekürzten) Datensätze - Daten.js:
PHP:
var Eingabe, a, b, d=0;
var amax=1000;
var AnzahlSpalten=amax;//Anzahl Datensätze
var AnzahlZeilen=5; //Anzahl Felder pro Datensatz
var treffer=0;
var trefferSpalten=new Array (8); //Anzahl der möglichen Treffer (gleiche Begriffe)
var db=new Array (AnzahlSpalten);


for (a=0; a<AnzahlSpalten; a++)


  {



  db[a]=new Array(AnzahlZeilen);


  }


//hier sind die Suchbegriffe:


db[0][0]="absolute Temperatur";
db[0][1]="Wärme";
db[0][2]="Waerme/Waerme_Grundl/Indexcard/Icard_absolutTemp.html";
db[0][3]="Waerme/Waerme_Grundl/Tool/Tool_absolutTemp.html";
db[0][4]="Waerme/Waerme_Grundl/Waermemenge.html";

db[1][0]="absolute Luftfeuchte";
db[1][1]="Feuchte";
db[1][2]="Feuchte/Feuchte_Grundl/Indexcard/Icard_absLuftfeuchte.html";
db[1][3]="Feuchte/Feuchte_Grundl/Tool/Tool_absolutFeuchte.html";
db[1][4]="Feuchte/Feuchte_Grundl/Dampfdruck.html";

db[2][0]="Absorption";
db[2][1]="Wärme";
db[2][2]="Waerme/Waerme_Grundl/Indexcard/Icard_absorption.html";
db[2][3]="Waerme/Waerme_Grundl/Tool/Tool_absorption.html";
db[2][4]="Waerme/Waerme_Grundl/Waermestrahlung.html";

//gekürzt

db[181][0]="Zeitkonstante";
db[181][1]="Wärme";
db[181][2]="Waerme/Waerme_Grundl/Indexcard/Icard_zeitkonst.html";
db[181][3]="Datenbank/leer.html";
db[181][4]="Waerme/Waerme_Grundl/Waermetransm_dyn.html";

db[182][0]="Zeitkonstante*";
db[182][1]="Wärme";
db[182][2]="Waerme/Waerme_Grundl/Indexcard/Icard_zeitkonst_raum.html";
db[182][3]="Datenbank/leer.html";
db[182][4]="Waerme/Waerme_Grundl/Waermetransm_dyn.html";

Hier die Abfrage - DB.js:
PHP:
function abfrage()

{
 Eingabe= window.document.forms[0].elements[0].value;
if (Eingabe != 0)
	{
	for (a=0; a<AnzahlSpalten; a++)
	{
		
	   if (Eingabe==db[a][0])
    		 {
       	treffer++;
       	trefferSpalten[treffer]=a;
       	}
       	
       }
       }
      
       if (treffer>0)
       {
       alert (treffer);
       a=0;
       ausgabe ();
       }
      else
        	{
        	alert ("Begriff ist nicht vorhanden");
	var winDB;
	winDB=window.open ("../Datenbank/leer.html", "Datenbankleer", "width=350,height=350,resizable=yes,titlebar=yes");
   		}
}

//Ausgabe des Suchergebnisses:
function ausgabe ()
	{
	
	a++;
	if (a<=treffer && a>=1)
		{
var win;
win=window.open ("", "Datenbankabfrage", "width=350,height=350,resizable=yes,titlebar=yes");

var gesuchterBegriff;
var Kapitel;
var Indexcard;
var Tool;
var Link; 


gesuchterBegriff=db[trefferSpalten[a]][0];
Kapitel=db[trefferSpalten[a]][1];
Indexcard=db[trefferSpalten[a]][2];
Tool=db[trefferSpalten[a]][3];
Link=db[trefferSpalten[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: "+ treffer + " Treffer</H3>");
win.document.write ("<H3>Sie sehen hier Treffer Nr. "+ a + "</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=http://www.bph.hbt.arch.ethz.ch/Filep/GeneratedItems/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=http://www.bph.hbt.arch.ethz.ch/Filep/GeneratedItems/tool.gif border=0></A>");

win.document.write("<H4></H4>"); //Zeile notwendig wegen Netscape, sonst erscheint Bild aus vorhergehender Zeile nicht!

        }

      }

Danke für ein paar Tips

Gruss aus Züri
Jacky:confused:
 
Bitte helfen

Hallo,

leider war mein posting bislang erfolglos und bin auch selber beim Herumzuprobieren auf nix neues gekommen. Falls irgendjemand ein javascript-freak ist, der drauskommt, bitte schaut es Euch doch mal an. (Der alert bezeichnet den/ die vorhandenen Treffer.) Der Link zur Datenbankabfrage funktioniert im IE problemlos, bei NN macht er ein Mätzchen.
Wäre wirklich toll, wenn jemand einen Vorschlag hätte, wo ich weitermachen könnte.

Danke

Jacky:confused:
 
Auf jeden Fall musst du die Variable "Treffer" am Ende wieder auf null setzten, sonst wird das mit jedem Klick mehr.
(der findet das nicht im zweiten Anlauf, im zweiten kommt einfach eins dazu)
Ich kann da nicht mehr helfen.
Zumindest ist die Ursache wohl klar.
Die entsprechende Schleife läuft nicht weit genug durch, um weitere Treffer zu finden.
Den Fehler kannst nur du finden.
Ich empfehle, durch alert-Meldungen nachzuvollziehen, was die Schleife macht und so vielleicht den Fehler zu finden.
 
Danke schön

Hallo Bjoern,

danke für Deine Hilfe, ich hoffe, ich finde den/die Fehler noch.

Ich dachte, C-Programmierung wäre schwierig, aber JS ist auch nicht ohne.

Gruss
Jacky

P.S. Gruss nach Berlin, hab dort selbst lange gelebt.
 
C und JavaScript sind sich sehr ähnlich.
Die Syntax ist z. B. die selbe.
Das Problem mit JavaScript ist, dass es manche Sachen nicht zulässt, die allerdings vollkommen logisch sind.
Zum Beispiel kannst du nicht
if(i=1)
sagen, was bei C wunderbar funktioniert.
 
Zurück
Oben