Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] PHP Suche

Einklappen

Neue Werbung 2019

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

  • [Erledigt] PHP Suche

    Hi zusammen,

    ich hab ein Problem mit meiner PHP Suche, bzw. besser eine Frage. Wie muss ich es verknüpfen, wenn ich mehr als nur nach dem "Request" suchen will? Er durchsuch jedesmal nur das, was an der 1. Stelle steht. Mit OR funktioniert es nicht. Bitte helfen.

    Code:
    PHP-Code:
    <table id="table">
    <tr style="font-weight:bold;">
        
        <th id="first"><a href="index.php?order=Shop"><div class="thlink">Shop</div></a></th>
        <th><a href="index.php?order=Anzahl">....</a></th>
        <th><a href="index.php?order=Anzahl">Request</a></th>
        <th><a href="index.php?order=Anzahl">....</a></th>
        <th><a href="index.php?order=Anzahl">....</a></th>
        <th><a href="index.php?order=Anzahl">Erstellt</a></th>
        <th><a href="index.php?order=Anzahl">Zuletzt geändert</a></th>

    </tr>
    <?php

    include("db_connect.php");

    $tabelle "beispieltabelle";
        
    if (
    $_POST["suchbegriff"]){
        
    // Mysql Abfrage wird gespeichert mit den Notwendigen Parameter
        
    $sql "SELECT * 
                FROM 
                    "
    .$tabelle.
                WHERE 
                    Request OR ....
                        
                LIKE 
                    ('%"
    .mysql_real_escape_string(utf8_decode($_POST["suchbegriff"]))."%')";
                
        
    // Mysql Abfrage wird durchgeführt
        
    $result mysql_query($sql);
        
        
    // Ergebnis wird ausgegeben
        
    while($row mysql_fetch_object($result)){
            echo 
    '<tr>'."\r\n";
            echo 
    '<td>'.utf8_encode($row->....).'</td>';
            echo 
    '<td>'.utf8_encode($row->.....).'</td>';
            echo 
    '<td>'.utf8_encode($row->Request).'</td>';
            echo 
    '<td>'.utf8_encode($row->...).'</td>';
            echo 
    '<td>'.utf8_encode($row->....).'</td>';
            echo 
    '<td>'.utf8_encode($row->created).'</td>';
            echo 
    '<td>'.utf8_encode($row->modified).'</td>';
            echo 
    '</tr>'."\r\n";    
        }

    }
    ?>
    </table>


  • #2
    Innerhalb einem LIKE '%foo OR baa%' wird er natürlich nicht das OR als einen AUSDRUCK sehen.

    du musst den suchbegriff auseinandernehmen, mit explode, regulären ausdrücken oder was auch immer, die teile verstehen und interpretieren und dann daraus z.b. sowas generieren:

    input: foo OR baa
    output SELECT * FROM table WHERE column like '%foo%' OR column like '%baa%'

    -> MySQL :: MySQL 3.23, 4.0, 4.1 Reference Manual :: 11.5.1 String Comparison Functions
    Du solltest dich auch damit beschäftigen dass z.b. _ und % eine besondere bedeutung hat ... undsoweiter, sprich wenn du sowas nicht erlauben willst, solltest du die zeichen escapen, z.b. auch wenn du erwartest dass leute speziell nach dingen mit diesem zeichen suchen wollen, etc
    robo47.net - Blog, Codeschnipsel und mehr
    | Caching-Klassen und Opcode Caches in php | Robo47 Components - PHP Library extending Zend Framework

    Kommentar

    Lädt...
    X