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

  • zoro
    hat ein Thema erstellt Suche in Datenbank.

    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

  • zoro
    antwortet
    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"

    Einen Kommentar schreiben:


  • tr0y
    antwortet
    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

    Einen Kommentar schreiben:


  • zoro
    antwortet
    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

    Einen Kommentar schreiben:


  • mquadrat
    antwortet
    Und wenn du like verwendest brauchst du auch keinen Volltext-Index.

    Einen Kommentar schreiben:


  • fab
    antwortet
    Code:
    LIKE '%something%'
    war gemeint. Beim LIKE Operator ist % ein Platzhalter für beliebigen Inhalt.

    Einen Kommentar schreiben:


  • zoro
    antwortet
    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?

    Einen Kommentar schreiben:


  • tr0y
    antwortet
    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 

    Einen Kommentar schreiben:

Lädt...
X