max-joseph kraus: Formular zur Übergabe von Daten an Suchmaschine

hallo!

ich habe ein problem, zu dem ich im netz bislang keine lösung finden konnte.

ich möchte auf einer medizin-seite ein einfaches formular anbieten, in dem man

1. einen suchbegriffe eingeben kann
2. aus einem pulldown-menue eine suchmaschine auswählen kann und
3. durch klick auf einen buttom das suchwort an die suchmaschine schickt. als ergebnis sollte sich dann die suchmaschine in einem neuen fenster mit den ergebnissen öffnen.

für diese fragestellung gibt es schon einige lösungen z.b. bei searchcode.de. hier muß man aber aus einer fets vorgegebenen auswahl an suchmaschinen auswählen und das wars dann.

ich möchte meine suuchanfrage an seiten wie pubmed, medline, chest, new england journal of medicine etc. schicken, die alle kleinere oder größere suchen in ihrem jeweiligen datenbestand durchführen.

möglich sollte sich das ohne (!!) cgi verwirklichen lassen, am besten mit java script.

danke für alle hilfe, ich sitze schon länger darüber und kann einfach nicht verstehen, wie man so ein formular ausliest und der suchmaschine als suchanfrage übergibt. wahrscheinlich ist es doch wieder ganz einfach ...!?

max

  1. Hallo

    ich möchte auf einer medizin-seite ein einfaches formular anbieten, in dem man

    1. einen suchbegriffe eingeben kann
    2. aus einem pulldown-menue eine suchmaschine auswählen kann und
    3. durch klick auf einen buttom das suchwort an die suchmaschine schickt. als ergebnis sollte sich dann die suchmaschine in einem neuen fenster mit den ergebnissen öffnen.

    möglich sollte sich das ohne (!!) cgi verwirklichen lassen, am besten mit java script.

    danke für alle hilfe, ich sitze schon länger darüber und kann einfach nicht verstehen, wie man so ein formular ausliest und der suchmaschine als suchanfrage übergibt. wahrscheinlich ist es doch wieder ganz einfach ...!?

    Stell doch mal zB in Altavista eine Suchanfrage, du siehtst dann hinter der eigentlichen Seite (bzw. dem Suchscript) noch viele andere Zeichen, durch ? von der Datei getrennt. Das ist der Query-String. Denn kannst du zB. mit JavaScript (oder auch manuell) selber gestalten.

    Du musst nun herausfinden, wie der Suchstring bei den von dir genannten Suchmaschinen aussieht. Dann kannst du mit JS un deinem Suchwort den String zusammenbauen und darauf zugreifen (bzw. ein neues Fenster mit der zusammengebauten URL öffnen). Das geht aber nur für jede Suchmaschine einzeln.

    Tschö Matti

    1. Hallo

      ich möchte auf einer medizin-seite ein einfaches formular anbieten, in dem man

      1. einen suchbegriffe eingeben kann
      2. aus einem pulldown-menue eine suchmaschine auswählen kann und
      3. durch klick auf einen buttom das suchwort an die suchmaschine schickt. als ergebnis sollte sich dann die suchmaschine in einem neuen fenster mit den ergebnissen öffnen.

      möglich sollte sich das ohne (!!) cgi verwirklichen lassen, am besten mit java script.

      danke für alle hilfe, ich sitze schon länger darüber und kann einfach nicht verstehen, wie man so ein formular ausliest und der suchmaschine als suchanfrage übergibt. wahrscheinlich ist es doch wieder ganz einfach ...!?

      Stell doch mal zB in Altavista eine Suchanfrage, du siehtst dann hinter der eigentlichen Seite (bzw. dem Suchscript) noch viele andere Zeichen, durch ? von der Datei getrennt. Das ist der Query-String. Denn kannst du zB. mit JavaScript (oder auch manuell) selber gestalten.

      Du musst nun herausfinden, wie der Suchstring bei den von dir genannten Suchmaschinen aussieht. Dann kannst du mit JS un deinem Suchwort den String zusammenbauen und darauf zugreifen (bzw. ein neues Fenster mit der zusammengebauten URL öffnen). Das geht aber nur für jede Suchmaschine einzeln.

      Tschö Matti

      danke matti und michael.

      So was in die richtung habe ich mir natürlich auch schon gedacht und mich deswegen auf suche in dem quelltext und der addresszeile begeben.
      es geht mir jetzt primär um die suchmaschine pubmed
      ( http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?db=PubMed  ).
      problem ist hier: im quelltext kann ich das form-tag nicht richtig interpretieren, wenn ich richtig verstehe bracuht man zur suche das javascript query.js (link steht ziemlich weit oben). ich bin dem link dann auch gefolgt und habe das script jetzt bei mir gespeichert, aber das ist mir zu komplex.
      bezüglich der addresszeile: der link oben ist die 1:1 kopie der addresszeile, wenn man pubmed öffnet. wenn man aber einen suchbegriff eingibt, ändert sich leider gar nichts.

      1. http://learn.to/quote/

        es geht mir jetzt primär um die suchmaschine pubmed
        ( http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?db=PubMed  ).

        Da kannst Du nix (mit JavaScript) machen, wenn das Formular mit
        method="POST" übergeben wird, den String kannst Du einfach nicht
        generieren, weil es ihn nicht gibt :-/

        @alle anderen Leser
        Korrigiert mich, wenn ich mich irre, danke.

        1. http://learn.to/quote/

          es geht mir jetzt primär um die suchmaschine pubmed
          ( http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?db=PubMed  ).

          Da kannst Du nix (mit JavaScript) machen, wenn das Formular mit
          method="POST" übergeben wird, den String kannst Du einfach nicht
          generieren, weil es ihn nicht gibt :-/

          @alle anderen Leser
          Korrigiert mich, wenn ich mich irre, danke.

          arrg. habe den learn to quote - link verstanden und schon befürchtet, daß das nicht klappen wird mit javascript.

          gibt es eine idee für eine andere lösung, oder geht das eben einfach nicht? (geht nicht, gibts nicht...?!)

          1. arrg. habe den learn to quote - link verstanden

            Nein, _verstanden_ hast Du nicht was auf http://learn.to/quote/ ge-
            schrieben steht :(

            gibt es eine idee für eine andere lösung, oder geht das eben einfach nicht? (geht nicht, gibts nicht...?!)

            Serverseitige Lösungen kann ich mir durchaus vorstellen, aller-
            dings ist es zu speziell, als hier alles zu erklären und ausser-
            dem mit ziemlich hoher Wahrscheinlichkeit nicht erlaubt.
            Sonst kann ich ja serverseitig fremde Datenbanken anzapfen und die
            Inhalte als meine ausgeben ...

            So wie Du es in <?m=129548&t=24845> beschrieben hast, sehe ich keine
            Lösungsmöglichkeit.

        2. Grüssi!

          es geht mir jetzt primär um die suchmaschine pubmed
          ( http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?db=PubMed  ).

          Da kannst Du nix (mit JavaScript) machen, wenn das Formular mit
          method="POST" übergeben wird, den String kannst Du einfach nicht
          generieren, weil es ihn nicht gibt :-/

          Doch, Was per POST geht das geht auch per Pede ;-)

          Im Formular stehen alle felder (=parmeter die ans script übergeben werden können) drin! Man braucht sie sich dann nur raussuchen und an die URL in gewohnter Manier dranhängen. Das Formular man auch über GET (Eintippen der Url) abschicken.

          es gibt zwei wichtige Parameter im Formular: 'db' und 'term' mit DB wählt man die Datenbank aus, in der gesucht werden soll:

          <select name="db" onChange="DbChange(this);">
          <option selected value="PubMed">PubMed</option>
          <option value="Protein">Protein</option>
          <option value="Nucleotide">Nucleotide</option>
          <option value="Structure">Structure</option>
          <option value="Genome">Genome</option>
          <option value="PopSet">PopSet</option>
          <option value="OMIM">OMIM</option>
          <option value="Taxonomy">Taxonomy</option>
          </select>

          => 1.) db=PubMed (beliebige Datenbank auswählen)

          'term' steht no-na höchstwahrscheinlich für den Term nach dem gesucht werden soll.

          <input name="term" size="45" type="TEXT" onKeyPress="KeyPress('',event)" value="">

          => 2.) term=foo

          Weitere Parameter (Konstanten):
          cmd=search (selbsterklärend)
          orig_db=Pubmed (was auch immer dieses PubMed ist, scheint jedenfalls so ne Art defaultwert zu sein)

          Beispiel:
          http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?db=Protein&term=foo
          oder gleichwertig:
          http://www.ncbi.nlm.nih.gov:80/entrez/query.fcgi?orig_db=PubMed&cmd=search&db=Protein&term=foo

          Das Javascipt scheint für das Abschicken des Formulars anscheinend nicht zwingend notwendig zu sein. Obwohl das ganze sehr kryptisch abläuft! Wenn man auf den 'Go'-Button klickt wird die Funktion Go(command) aufgerufen, die dann den Query-String zusammenbaut. Abgeschickt wird das ganze aber dennoch mit POST. Wenn auch direkt aus der Funktion heraus mit submit()!

          var inGo=false; function Go(cmd)
          {
           inGo=true;
           var frm = document.frmQueryBox;
           var sel = frm.db;
           frm.cmd.value = cmd;
           var q = frm.action;
           frm.action = q.substring(0, q.indexOf('?'))+'?CMD='+escape(cmd)+'&DB='+sel.options[sel.selectedIndex].value;
           frm.submit();
           inGo=false;
          }

          hmmmm .... rätselhaft! Denn ich wusste bisher nicht, dass man POST und GET mischen kann (eine formaction mit Parameter als POST verschicken) z.b.

          <form action="http://www.i1.com?query.pl?p=1&q=2" method="post">
          ...
          </form>

          Muss das script dann stdin _und_ Query-String auslesen ?!?

          lg bernhard -- der solche spionageaktionen recht gern hat ;-)

          1. Hallo Bernhard,

            Doch, Was per POST geht das geht auch per Pede ;-)

            gut, dafür will ich aber gern einen Beweis haben ;)

            Der URL lautet jetzt http://www.denic.de/servlet/Whois
            Das Formular wird mit method="POST" abgeschickt.

            Wie lautet der passende Link, um die Domaindaten von z.Bsp. test.de
            anzeigen zu lassen?

            Viele Grüße aus Dresden,
            Stefan Einspender

            1. Hallo Stefan!

              Der URL lautet jetzt http://www.denic.de/servlet/Whois
              Das Formular wird mit method="POST" abgeschickt.

              Wie lautet der passende Link, um die Domaindaten von z.Bsp. test.de
              anzeigen zu lassen?

              *grrrrr* das war - frei nach murphy - natürlich die einzige Url bei der sowas nicht geht!

              Weisst du wie Servlets funktionieren? sagen dir die Methoden doGet() und doPost() was?

              Falls ja, dann war das ein ganz schön fieser Trick von dir!
              Falls nein - hier für die Nachwelt:

              Ein Servlet funktioniert folgendermassen: Dadurch dass es immer läuft muss eine Möglichkeit geschaffen werden, wie der Client/Browser Daten ans Servlet schicken kann. Das kann er entweder mit einem GET-Request oder mit einem POST-Request. Die beiden Funktionen (siehe oben) implementieren die Aktionen auf diese Requests.

              In jedem Servelt wird also in der doGet()-Methode beschrieben was passieren soll wenn das Servelt mit GET angefordert wurde, also stinknormal in die Adressleite des Browsers eingetippt oder von einer anderen Seite angelickt wurde, und es gibt somit die Formularseite aus. Die doPost()-Methode wird aufgerufen (und die darinliegenden Statements abgearbeitet) walls das Servlet mit POST angesprochen wurde, also das Formular abgeschickt wurde.

              Bsp:
              doGet (..) {
                  ... WhoIs-Abfrageformular ausgeben ...
              }

              doPost (..) {
                  ... WhoIs-Datenbank durchsuchen und Resultate zurückgeben ...
              }

              http://java.sun.com/docs/books/tutorial/servlets/client-interaction/http-methods.html

              So halbwegs klar warum es null sinn hat die Fromularfelder die in doPost() abgefragt werden nicht einfach mit GET geschickt werden können?

              lg bernhard

          2. Doch, Was per POST geht das geht auch per Pede ;-)

            Beispiel:
            http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?db=Protein&term=foo

            Herrlich! Ich freue mich richtig. Vielen Dank!

            lg bernhard -- der solche spionageaktionen recht gern hat ;-)

            ich werde mich jetzt an die anderen von mir gesuchten suchmaschinen machen, da scheint es einfacher und auch für mich lösbar zu sein, da die suchanfrage immer gleich in der url erscheint. wenn ich gar nicht mehr weiter komme, würde ich mich gerne wieder an dich wenden. ok?
            max
            ps: was hießt eigentlich "lg"

            1. Grüssi!

              wenn ich gar nicht mehr weiter komme, würde ich mich gerne wieder an dich wenden. ok?

              bidde gerne :o)

              ps: was hießt eigentlich "lg"

              liebe grüsse,
              ^-----^-----
              bernhard ;-)

  2. Tach,
    es lässt sich sicherlich mit JavaScript verwirklichen.
    Die musst allerdings erstmal wissen wie die uchmaschinen
    funktionieren. Dazu schau doch im Quelltext nachden Form-Elementen
    nach. Du kannst dann dynamisch mit JS den Query_String der zu öffnenen Ergebnisseite generieren und die Seite oeffnen. Du solltest vielleicht mal genaueres possten, wie z.B. Suchmaschinen.

    M.f.G. Micha