Okay, es war spät :-) Anbei verbesserter Code - getestet! - baseportal Forum - Web-Anwendungen einfach, schnell, leistungsfähig!
baseportal
English - Deutsch "Es gibt keine dummen Fragen - jeder hat einmal angefangen"

 baseportal-ForumDie aktuellsten 10, 30, 50, 100 Einträge anzeigen.  

 
 Ausgewählter Eintrag: Zur Liste 
    Beitrag von Stephan Hix (106 Beiträge) am Freitag, 23.Februar.2001, 12:19.
    Okay, es war spät :-) Anbei verbesserter Code - getestet!

      <do action=all>
      

      <!--
      # Erläuterung:
      # Gefragt war nach einer Lösung für das Problem, dass ein in der Datenbank gespeicherter 
      # Name gefunden werden soll, auch wenn er etwas ungenau geschrieben wurde.
      //-->
      <!-- Beginn Variablendefinition für Perl und Datenvorbereitung //-->
      <perl>
      # Variablendefinition
      $db_feld="Hans-Heinrich Friedrich";						# also das, was in der Datenbank steht, könnte auch =$name sein 
                    # oder auch mehrere Felder =$name.$text.$strasse.$ort
                  
      $input="Friedrich Hans";								# das, was gesucht wird, z.B. aus einem Formular
      

      $datenbankname="Namensregister"; # Name der BP-Datenbank eingeben

      # Vorbereitung der Daten
      $input=~s/-/\ /g;										# Bindestrich in Leerzeichen umwandeln
      $input=lc($input);										# in Kleinbuchstaben umwandeln
      @suchworte=split(" ",$input);							# die Sucheingabe in einzelne Worte aufteilen und in Array speichern
      </perl>									
      <!-- Ende Variablendefinition für Perl und Datenvorbereitung //-->
      <!-- Beginn der Datenbankabfrage //-->
      <loop db=$datenbankname code=perl>		
      $i=0;													# Zähler auf 0 setzen
      foreach (@suchworte){									# gehe alle Suchworte durch	
       $suchworte=lc($suchworte);							# in Kleinbuchstaben umwandeln
       if ($db_feld=~/$suchworte/){						# wenn das Namensfeld eines der Suchworte enthält
        $i++;											# Zähler um 1 erhöhen
       }													# Ende if
      }														# Ende foreach
      

      out "<p>Sie haben nach <b>$input</b> gesucht:</p>"; # So kann man in Perl HTML ausgeben

      if ($i==@suchworte){									# Wenn der Zählerstand gleich der Anzahl der Suchworte ist, also alles gefunden wurde
       out <<EOF;							
        <!-- ab hier HTML schreiben //-->
           <p>Datensatz $_id enthält alle Suchworte.</p>	
        <!-- Ende HTML //-->
      EOF										
      }														# Ende if
      </loop>									
      <!-- Ende der Datenbankabfrage //-->
      


    Antworten

 Alle Einträge zum Thema: Zur Liste 
    Beitrag von Hagen (24 Beiträge) am Donnerstag, 22.Februar.2001, 22:42.
    Wie finde ich ein Wort oder INNERHALB eines Satzes ???

      Vielleicht kann mir jemand helfen, der ein ähnliches Problem hatte :

      Ich habe eine Datenbank mit dem Feld "Name"
      und dem Inhalt "Hans-Heinrich Friedrich"

      Meine Besucher geben nun "Hans Heinrich" oder
      "Heinrich Friedrich" oder "Heinrich" oder
      "Friedrich" ein ... ;-(

      ... und der Datensatz wird nicht gefunden,
      da BP immer am Anfang des Datensatzes sucht.


      Kennt jemand den Perl-Befehl, mit dem ich auch
      ein (oder mehrere) Wörter INNERHALB des Datensatzes
      finden kann ?


      Vielen Dank im Voraus für die Hilfe
      Hagen

     Antworten

    Beitrag von Sander (8133 Beiträge) am Donnerstag, 22.Februar.2001, 23:03.
    Re: Wie finde ich ein Wort oder INNERHALB eines Satzes ???

      Es ist zur Zeit nur mit viel Perlaufwand möglich, das zu bewerkstelligen. (siehe Volltextsuche in mehreren vergangenen Thread - auch heute)
      In der nächsten Version ist es mit implementiert (hat Christoph versprochen).

      Sander

     Antworten

    Beitrag von Stephan Hix (106 Beiträge) am Freitag, 23.Februar.2001, 00:44.
    Weil so oft danach gefragt wird ...

      ... hier eine einfache UND-Suche nach Textbausteinen, d.h. für ein erfolgreiches Suchergebnis müssen ALLE eingegebenen Begriffe gefunden werden.
      Aber bitte nicht bei sehr großen Datenbanken einsetzen! Laut Christoph wird da die Serverlast doch etwas heftig (obwohl es doch nur eine loop ist!?)

      Ich hoffe, es hilft.

      Gruß
      Stephan


      <do action=all>
      
                # Erläuterung:
      $db_feld="Hans-Heinrich Friedrich"; # also das, was in der Datenbank steht
      $input="Friedrich Hans";				# das, was gesucht wird, z.B. aus einem Formular
      

      $input=~s/-/\ /g; # Bindestrich in Leerzeichen umwandeln
      @suchworte=split(" ",$input);			# die Sucheingabe in einzelne Worte aufteilen und in Array speichern
      

      <loop db=datenbankname code=perl> # Aufruf der Datenbank
      $i=0;									# Zähler auf 0 setzen
      foreach (@suchworte){					# gehe alle Suchworte durch	
       if ($db_feld=~/$suchworte[$_]/){	# wenn das Namensfeld eines der Suchworte enthält
        $i++;							# Zähler um 1 erhöhen
       }									# Ende if
      }										# Ende foreach
      if ($i==@suchworte){					# Wenn der Zählerstand gleich der Anzahl der Suchworte ist, also alles gefunden wurde
       out <<EOF;							# beginne HTML-Code
           <p>Datensatz $_id gefunden</p>	# hier steht beliebiger HTML-CODE dazwischen
      EOF										# hier endet der HTML-Code
      }										# Ende if
      </loop>									# Ende loop
      

     Antworten

    Beitrag von Stephan Hix (106 Beiträge) am Freitag, 23.Februar.2001, 00:52.
    Und die Korrektur - Flüchtigkeitsfehler ;-)

      nach dem <do action ...
      die ersten beiden $ sind nur Erklärung, die müssen raus!
      danach fehlt ein <perl> (vor dem $input=~ ...)
      und vor das erste <loop ... muss ein </perl>

      Sorry.

      Gruß
      Stephan

     Antworten

    Beitrag von Ivan (14 Beiträge) am Freitag, 23.Februar.2001, 10:41.
    Re: Und die Korrektur - Flüchtigkeitsfehler ;-)

      Vielleicht bin ich noch sehr verschlafen, aber ich bekomme immer wieder ein Fehlermeldung wenn ich diese vorschlag verwende:

      [error (loop): Unrecognized character \240 at (eval 48) line 5. ][error (loop): Unrecognized character \240 at (eval 54) line 5. ] # Ende loop

      Was habe ich da falsch gemacht? Habe db_feld mit mein feldname ersetzt, und db_datenbankname mit mein datenbankname, aber es geht irgendwie nicht so wie ich es mir vorstelle.

      Sorry, falls dies ein Newby fehler ist, kenntnis ill gelernt werden (auch mit erklärungen)

      Danke
      Ivan

     Antworten

    Beitrag von Stephan Hix (106 Beiträge) am Freitag, 23.Februar.2001, 11:10.
    Uuups! Da muss der Kommentar raus ...

      Hallo Ivan!

      Da wollte ich zu genau erklären ;-)
      Mit </loop> beendet man in diesem Fall auch den Abschnitt mit Perl-Code. Und da passt es halt nicht, wenn dahinter noch in Perl kommentiert wird. Nimm also den Kommentar "# Ende loop" aus dem Code, dann sollte es gehen.

      Gruß
      Stephan

     Antworten

    Beitrag von Ivan (14 Beiträge) am Freitag, 23.Februar.2001, 11:30.
    Re: Uuups! Da muss der Kommentar raus ...

      Hi Stephan,

      Man ich bin begeistert wie schnell alles gehen kann!!! Danke als erste, aber leider geht's noch immer nicht,

      Ich habe zwar jetzt die #Ende loop nicht mehr in mein fehlermeldung, es kommt aber noch immer zu:

      [error (loop): Unrecognized character \240 at (eval 1136) line 5. ][error (loop): Unrecognized character \240 at (eval 1142) line 5. ]

      Jedesmal wenn ich ein re-load vom die seite mache, ändert sich die (eval ****) werte. Es muß was kleines sein, aber ich sehe es einfach nicht!!

      Danke
      Ivan

     Antworten

    Beitrag von Ivan (14 Beiträge) am Freitag, 23.Februar.2001, 11:48.
    Re: Uuups! Da muss der Kommentar raus ...

      Hi Stephan,

      Man ich bin begeistert wie schnell alles gehen kann!!! Danke als erste, aber leider geht's noch immer nicht,

      Ich habe zwar jetzt die #Ende loop nicht mehr in mein fehlermeldung, es kommt aber noch immer zu:

      [error (loop): Unrecognized character \240 at (eval 1136) line 5. ][error (loop): Unrecognized character \240 at (eval 1142) line 5. ]

      Jedesmal wenn ich ein re-load vom die seite mache, ändert sich die (eval ****) werte. Es muß was kleines sein, aber ich sehe es einfach nicht!!

      Danke
      Ivan

     Antworten

    Beitrag von Stephan Hix (106 Beiträge) am Freitag, 23.Februar.2001, 12:19.
    Okay, es war spät :-) Anbei verbesserter Code - getestet!

      <do action=all>
      

      <!--
      # Erläuterung:
      # Gefragt war nach einer Lösung für das Problem, dass ein in der Datenbank gespeicherter 
      # Name gefunden werden soll, auch wenn er etwas ungenau geschrieben wurde.
      //-->
      <!-- Beginn Variablendefinition für Perl und Datenvorbereitung //-->
      <perl>
      # Variablendefinition
      $db_feld="Hans-Heinrich Friedrich";						# also das, was in der Datenbank steht, könnte auch =$name sein 
                    # oder auch mehrere Felder =$name.$text.$strasse.$ort
                  
      $input="Friedrich Hans";								# das, was gesucht wird, z.B. aus einem Formular
      

      $datenbankname="Namensregister"; # Name der BP-Datenbank eingeben

      # Vorbereitung der Daten
      $input=~s/-/\ /g;										# Bindestrich in Leerzeichen umwandeln
      $input=lc($input);										# in Kleinbuchstaben umwandeln
      @suchworte=split(" ",$input);							# die Sucheingabe in einzelne Worte aufteilen und in Array speichern
      </perl>									
      <!-- Ende Variablendefinition für Perl und Datenvorbereitung //-->
      <!-- Beginn der Datenbankabfrage //-->
      <loop db=$datenbankname code=perl>		
      $i=0;													# Zähler auf 0 setzen
      foreach (@suchworte){									# gehe alle Suchworte durch	
       $suchworte=lc($suchworte);							# in Kleinbuchstaben umwandeln
       if ($db_feld=~/$suchworte/){						# wenn das Namensfeld eines der Suchworte enthält
        $i++;											# Zähler um 1 erhöhen
       }													# Ende if
      }														# Ende foreach
      

      out "<p>Sie haben nach <b>$input</b> gesucht:</p>"; # So kann man in Perl HTML ausgeben

      if ($i==@suchworte){									# Wenn der Zählerstand gleich der Anzahl der Suchworte ist, also alles gefunden wurde
       out <<EOF;							
        <!-- ab hier HTML schreiben //-->
           <p>Datensatz $_id enthält alle Suchworte.</p>	
        <!-- Ende HTML //-->
      EOF										
      }														# Ende if
      </loop>									
      <!-- Ende der Datenbankabfrage //-->
      

     Antworten

    Beitrag von Ivan (14 Beiträge) am Freitag, 23.Februar.2001, 12:56.
    Re: Okay, es war spät :-) Anbei verbesserter Code - getestet!

      Hi Stephan,

      Tut mir leidt wegen die 2 postings, war nicht als druckmacher gemeint, mein browser ist anscheinend irgendwie nochmals dazugekommen.

      Danke für deine mühe, aber jetzt kommt etwas anderes wieder als fehlermeldung:

      [error (loop): Can't find string terminator " EOF" anywhere before EOF at (eval 640) line 18. ][error (loop): Can't find string terminator " EOF" anywhere before EOF at (eval 646) line 18. ]

      Ich habe wegen EOF nachgelesen, und es scheint daß alles in ordnung ist - als erste ist out<<EOF; und dann auf eine eigene zeile nur EOF.

      Kann es sein daß es mit ein copy + paste problem zu hat , da ich dein script mit copy+paste eingefüt habe.

      Danke nochmals für deine mühe!!
      Ivan

     Antworten

    Beitrag von Andreas (396 Beiträge) am Freitag, 23.Februar.2001, 13:10.
    Re: Okay, es war spät :-) Anbei verbesserter Code - getestet!

      Hallo,

      beim EOF ist es _ganz_ wichtig, daß es _ganz_ alleine in einer Zeile steht, also auch keine Leerzeichen davor oder dahinter.

      Gruß, Andreas

     Antworten

    Beitrag von Ivan (14 Beiträge) am Freitag, 23.Februar.2001, 13:38.
    Re: Okay, es war spät :-) Anbei verbesserter Code - getestet!

      Tschuldigung,

      es war ein leerzeichen nach dem EOF.

      Jetzt basstle ich weiter an die richtige formular anfrage.

      Danke für al eure hilfe
      Ivan

     Antworten


     
 Liste der Einträge von 64800 bis 64950:Einklappen Zur Eingabe 
Neueste Einträge << 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | Neuere Einträge < Zur Eingabe  > Ältere Einträge | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 >> Älteste Einträge


Zurück zur Homepage

© baseportal.de. Alle Rechte vorbehalten. Nutzungsbedingungen



powered in 0.13s by baseportal.de
Erstellen Sie Ihre eigene Web-Datenbank - kostenlos!