Ankündigung

Einklappen
Keine Ankündigung bisher.

Suche in Datenbank

Einklappen

Neue Werbung 2019

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

  • Suche in Datenbank

    Hallo zusammen,

    ich habe folgendes zu bewältigen:

    Datenbank mit Tabelle dokumente
    Diese hat folgende Spalten: id, file

    Ich möchte jetzt durch eine Suche auf der Webseite die Spalte file durchsuchen lassen, und jede Zeile die mit der Suche übereinstimmt soll ausgegeben werden.

    Habe bereits dies mir zusammengesucht:

    Formular:
    HTML-Code:
    <form action="suche.php" method="post">
                <label for="search" style="float:left; margin-right:15px; color:#999;">Suche</label>
                <input name="search" id="search" type="text" class="formfeld" value="<?=$_SESSION['search']?>" />
                <input name="suche" id="suche" type="submit" class="formbutton" value="s" />
                </form>
    Ausgabe:

    PHP-Code:
    <?php
    // Suche
    if ($_GET["suche"]!=""){
        
    $_GET["suche"] = stripslashes ($_GET["suche"]);
        
    $_SESSION['suchstring']=$_GET["suche"];
        
    $_SESSION['suche']=true;
    }
    else{
        if (
    $_POST['suche']) {
            
    $_SESSION['suche']=true;
        }
        
    $suchstring "";
        
    // Fulltext
        
    if ($_POST['suche']) {
            if (
    $_POST['search']) {
                
    $_SESSION['search']=$_POST['search'];
            }
            else {
                unset (
    $_SESSION['search']);
            }
        }
        if (
    $_SESSION['search']) {
            
    $suchstring " match(file) against('".$_SESSION['search']."' IN BOOLEAN MODE)";
        }
        
    // Ende Fulltext
        
    $_SESSION['suchstring']=$suchstring;
    }
    if (
    $_GET["seite"] == "") {
        
    $_GET["seite"] = 1;
    }

    // Alle Einträge
    if ($_SESSION['suche']==true) {
        
    $db_all_string "SELECT * FROM dokumente WHERE";
        
    $db_all_string .= $_SESSION['suchstring'];
        
    #echo $db_all_string;
        
    $db_all_abfragen = @mysql_query ($db_all_string,$db_connect);
        
    $max_all=mysql_num_rows($db_all_abfragen);
        
    // Ende Alle Einträge
        
        
    $maxanzahl=10;
        
    $maxseiten=ceil($max_all/$maxanzahl);
        
    $start=($_GET["seite"]-1)*$maxanzahl;
    }
    #echo $max_all;
    ?>
    <!--Datenbank abfrage-->
    <?php
    if ($max_all>0) {
        
    $db_sort_string "SELECT * FROM dokumente WHERE";
        
    $db_sort_string .= $_SESSION['suchstring'];
        
    $db_sort_string .= " ORDER BY zeitstempel ASC";
        
    $db_sort_string .= " LIMIT ".$start.",".$maxanzahl;
        
    #echo $db_sort_string;
        
    $db_abfragen = @mysql_query ($db_sort_string,$db_connect);
        
    $max=mysql_num_rows($db_abfragen);
        for (
    $i=0$i<$max$i++) {
            
    $zeile mysql_fetch_array ($db_abfragenMYSQL_BOTH);
            if (
    $zeile["file"] != "") {
                echo 
    "<p class=\"bottom_kl\">";
                echo 
    "<a href=\"php/dokumente/files/$zeile[file]\" target=\"_blank\">";
                echo 
    "<img src='php/images/download/";
                
    $symbol=array_reverse(explode(".",$zeile["file"]));
                echo (
    strtolower($symbol[0]));
                echo 
    "_gr.gif' alt='Datei herunterladen'>";
                echo 
    "</a> ";
                echo 
    "<a href=\"php/dokumente/files/$zeile[file]\" target=\"_blank\">".$zeile["file"]."</a>";
                echo 
    "&nbsp;</p>";
            }
        }
    }
    else {
        echo 
    '<p style="margin-left:15px">Leider keine Dateien gefunden</p>';
    }
    ?>
    <!--Ende Datenbank abfrage-->
    <!-- Seitenfunktion -->
    <?php
    if ($maxseiten>1) {
    if (
    $_GET["seite"]==1) {
    $vorwaerts='<a class="links_email" href="'.$PHP_SELF.'?seite=2&suche='.$_SESSION['suchstring'].'">nächste Seite &raquo;</a>';
    }
    if (
    $_GET["seite"]>&& $_GET["seite"]<$maxseiten) {
    $back=$_GET["seite"]-1;
    $vor=$_GET["seite"]+1;
    $rueckwaerts='<a class="links_email" href="'.$PHP_SELF.'?seite='.$back.'&suche='.$_SESSION['suchstring'].'">&laquo; vorige Seite</a>';
    $vorwaerts='<a class="links_email" href="'.$PHP_SELF.'?seite='.$vor.'&suche='.$_SESSION['suchstring'].'">nächste Seite &raquo;</a>';
    }
    if (
    $_GET["seite"]==$maxseiten) {
    $back=$_GET["seite"]-1;
    $rueckwaerts='<a class="links_email" href="'.$PHP_SELF.'?seite='.$back.'&suche='.$_SESSION['suchstring'].'">&laquo; vorige Seite</a>';
    }
    }
    ?>
    <!-- Seitenfunktion -->
    <div id="seiten">
    <div id="back"><? echo $rueckwaerts;?></div>
    <div id="next"><? echo $vorwaerts;?></div>
    </div>
    Funktioniert auch, wenn ich nach dem kompletten Namen in der Spalte file suche.
    Möchte z.B. aber auch nur nach allen Einträgen suchen können, die "xxx" im Namen enthalten.

    Kann mir da jemand bitte zur Hand gehen?
    Danke


  • #2
    PHP-Code:
    SELECT somewhat FROM somewhere WHERE something LIKE something ORDER BY somewhat LIMIT sometimes 
    PHP-Code:
    SELECT somewhat FROM somewhere WHERE something '%something%' ORDER BY somewhat LIMIT sometimes 
    [URL="https://gitter.im/php-de/chat?utm_source=share-link&utm_medium=link&utm_campaign=share-link"]PHP.de Gitter.im Chat[/URL] - [URL="https://raindrop.io/user/32178"]Meine öffentlichen Bookmarks[/URL] ← Ich habe dir geholfen ? [B][URL="https://www.amazon.de/gp/wishlist/348FHGUZWTNL0"]Beschenk mich[/URL][/B].

    Kommentar


    • #3
      Das wäre dann also so:

      PHP-Code:
      $db_all_string "SELECT * FROM dokumente WHERE file = '%test%' ORDER BY file ASC LIMIT 0,10"
      d.h. er soll in der Spalte file nach test suchen und alle zeilen ausgeben, welche test irgendwo im namen enthalten.
      Findet aber leider nichts.

      Was ist falsch?

      Kommentar


      • #4
        Code:
        LIKE '%something%'
        war gemeint. Beim LIKE Operator ist % ein Platzhalter für beliebigen Inhalt.
        @fschmengler - @fschmengler - @schmengler
        PHP Blog - Magento Entwicklung - CSS Ribbon Generator

        Kommentar


        • #5
          Und wenn du like verwendest brauchst du auch keinen Volltext-Index.

          Kommentar


          • #6
            Versteh ich nicht ganz. Was muss ich noch einfügen, damit es mir etwas ausgibt?

            PHP-Code:
            $db_all_string "SELECT * FROM dokumente WHERE file LIKE 'test' ORDER BY file ASC LIMIT 0,10"
            hier bekomme ich auch kein ergebniss raus

            Kommentar


            • #7
              Zitat von fab Beitrag anzeigen
              Code:
              LIKE '%something%'
              war gemeint. Beim LIKE Operator ist % ein Platzhalter für beliebigen Inhalt.
              narf, ja. Ist nen bissl her als ich LIKE-Queries gebaut hab
              [URL="https://gitter.im/php-de/chat?utm_source=share-link&utm_medium=link&utm_campaign=share-link"]PHP.de Gitter.im Chat[/URL] - [URL="https://raindrop.io/user/32178"]Meine öffentlichen Bookmarks[/URL] ← Ich habe dir geholfen ? [B][URL="https://www.amazon.de/gp/wishlist/348FHGUZWTNL0"]Beschenk mich[/URL][/B].

              Kommentar


              • #8
                Vielen Dank.

                hat vorher wahrscheinlich auch schon funktioniert, hab nur nicht aktualisiert.

                Geht jetzt einwandfrei.

                Hier der richtige Code:
                PHP-Code:
                $db_all_string "SELECT * FROM dokumente WHERE file LIKE '%test%' ORDER BY file ASC LIMIT 0,10"

                Kommentar

                Lädt...
                X