Ankündigung

Einklappen
Keine Ankündigung bisher.

Suche nach string in Datenbank

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Suche nach string in Datenbank

    Zum Problem:

    Ich habe eine LP-Datenbank erstellt und ich möchte nach Interpret oder Titel suchen können ohne dass ich den Titel oder Interpreten exact wissen muss.

    Ich habe 2 Datein erstellt. Eine HTML-Datei mit einem Formular und eine PHP-Datei die den Formularinhalt auslesen und in einer Mysql-Datenbank nach dem String suchen soll. Die Datensätze die den Suchstring enthalten sollen dann ausgegeben werden.

    Ich weiß nicht genau wie ich den SQL-Code in dem PHP Script basteln muss damit oben beschriebene Funktion erreicht wird.

    Lösungsversuch:

    PHP-Code:
    <?php

    include "connect.php";
    echo 
    mysql_error();


    $query "SELECT * FROM vinyl WHERE interpret like '$_POST["Inhalt"]';

    $result = mysql_query($query) or die(mysql_error());

    while(
    $row = mysql_fetch_array($result))
    {


    echo 
    $row['interpret']. " ". $row['titel'];
    echo "
    <br>";

    }


    ?>
    Vielen Dank schon mal


  • #2
    So villeicht:

    PHP-Code:
    <?php

    include "connect.php";
    echo 
    mysql_error();

    $inhalt htmlentities($_POST["inhalt"]);
    $query "SELECT * FROM vinyl WHERE interpret like " $inhalt;
    $result mysql_query($query) or die(mysql_error());

    while(
    $row mysql_fetch_array($result))
    {
      echo 
    $row['interpret']. " - "$row['titel'];
      echo 
    "<br>";
    }
    ?>
    Hat den dein Vesuch nicht Funktioniert?

    /Glacier
    www.echt-trendy.de - Die Trend Community.

    Kommentar


    • #3
      Um das von dir gewünschte Ergebnis zu Erreichen musst du LIKE richtig verwenden, so wie du es hier verwendest suchst du direkt nach der eingegebenen Zeichenkette und sonst nach nichts. Du musst hier die Wildcard benutzen ( _ für 1 Zeichen; % für beliebig viele Zeichen).

      Das bedeutet, wenn die gesuchte Zeichenkette irgendwo Vorkommen soll, und nicht direkt am Anfang oder Ende vorkommen muss, dann solltest du es mal so versuchen:

      PHP-Code:
      "SELECT * FROM vinyl WHERE interpret like '% " mysql_real_escape_string($_POST["Inhalt"]) . " %'"
      Zusätzlich hattest du hier noch den abschließenden Hochkomata vergessen, was dir das Board auch anzeigt.


      PHP-Code:
      $inhalt htmlentities($_POST["inhalt"]);
      $query "SELECT * FROM vinyl WHERE interpret like " $inhalt
      das ist meiner Meinung nach totaler Unfug... Wer bitteschön schreibt seine Umlaute als Entity in die DB?

      Auf was man allerdings noch aufpassen muss ist der Zeichensatz, was hat die Datenbank für eine Kollation? Welchen Zeichensatz verwendet PHP für deine DB-Abfragen? Hast du hier Zeichensatzsalat drin, dann funktionieren Umlaute natürlich nicht bzw. nicht richtig.


      Bei der Ausgabe sind die Entitys dann richtig:
      PHP-Code:
      echo htmlentities($row['interpret']). " - "htmlentities($row['titel']); 

      Kommentar


      • #4
        Teo hat auf jeden Fall recht, das Escapen muss an das Zielmedium angepasst sein. Entities in der DB sind Quatsch. Überleg doch mal, wenn du aus dem Inhalt eine Textmail oder ein PDF generieren willst, dann ist das Datenformat mit Entities ungeeignet.
        "Mein Name ist Lohse, ich kaufe hier ein."

        Kommentar


        • #5
          Hey vielen Dank für eure tolle Hilfe!

          Einen kleinen Wermutstropfen gibt es allerdings doch...

          In meiner Datenbank steht folgendes:

          -----Interpret--------------Titel--------
          ------------------------------------------
          Albano und Romina Power Sharazan
          Albano und Romina Power E fu subito amore
          Albano und Romina Power Canto di libert�*
          Albano und Romina Power Caro Gesù
          Albano und Romina Power Arrivederci a Bahia
          Albano und Romina Power Aria Pura
          Albano und Romina Power Prima notte d'amore
          Albano und Romina Power Felicita
          Albano und Romina Power Angeli

          Wenn ich nun in das Formular "Albano" (natürl. ohne Anfrz.) eingebe findet er garnichts. Gebe ich "Romina" ein findet er alle Einträge und wenn ich Power eingebe findet er nur den ersten Titel/Eintrag... Sehr komisch

          Der komplette php-Code sieht jetzt so aus

          PHP-Code:
          <?php

          include "connect.php";
          echo 
          mysql_error();


          $query "SELECT * FROM vinyl WHERE interpret like '% " mysql_real_escape_string($_POST["Inhalt"]) . " %'";

          $result mysql_query($query) or die(mysql_error());

          while(
          $row mysql_fetch_array($result))
          {


          echo 
          htmlentities($row['interpret']). " - "htmlentities($row['titel']);

          echo 
          "<br>";

          }

          Kommentar


          • #6
            Zitat von easy_lover Beitrag anzeigen
            Wenn ich nun in das Formular "Albano" (natürl. ohne Anfrz.) eingebe findet er garnichts.
            Logisch, du suchst ja nach dem Begriff mit Leerzeichen davor und danach. Wie du bemerkst, ist das nicht sinnvoll
            @fschmengler - @fschmengler - @schmengler
            PHP Blog - Magento Entwicklung - CSS Ribbon Generator

            Kommentar


            • #7
              Zitat von easy_lover Beitrag anzeigen
              In meiner Datenbank steht folgendes:

              -----Interpret--------------Titel--------
              ------------------------------------------
              Albano und Romina Power Sharazan
              Albano und Romina Power E fu subito amore
              Albano und Romina Power Canto di libert�* <--
              Albano und Romina Power Caro Gesù
              Albano und Romina Power Arrivederci a Bahia
              Albano und Romina Power Aria Pura
              Albano und Romina Power Prima notte d'amore
              Albano und Romina Power Felicita
              Albano und Romina Power Angeli
              Da ist die frage angebracht, wie diese Titel in deine Datenbank wandern... Offenbar hast du ein Zeichensatzproblem.

              Stehen die Titel wirklich so in deiner Datenbank oder ist das die Ausgabe im Browser? Dann könnte evtl utf8_decode helfen.

              Kommentar


              • #8
                OMG...

                Manchmal ist es so dämlich einfach und man selber so blind +

                Danke!!!!!!!!!!!!

                Kommentar

                Lädt...
                X