Ankündigung

Einklappen
Keine Ankündigung bisher.

Suchbox auswertung

Einklappen

Neue Werbung 2019

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

  • Suchbox auswertung

    Hi! ich will meine BEsucher nach Datenbankeinträgen suchen lassen!
    Dies soll mit einer Wildcard geschehen, d.h. dass wenn man "essen" eingibt ein Ergebnis rauskommen kann wie "gehen wir essen" oder so ähnlich!

    So sieht mein Source Code derzeitig aus:
    Code:
    # mit db Connecten
    
    <?
    include("dbconnect.php");
    
    # variablen vom vorhgergehenden POST-Formular
    
    $name = $HTTP_POST_VARS["name"];
    $interpret = $HTTP_POST_VARS["interpret"];
    
    #if-Abfragen in Abhängigkeit der Variablen $name und $interpret
    
    if(($name != '') && ($interpret != '')){
    $sql = "SELECT id, name, interpret FROM alben WHERE name LIKE '%$name%' AND interpret LIKE '%$interpret%' ORDER BY count DESC";
    }
    if(($name == '') && ($interpret != '')){
     $sql = 'SELECT * FROM `alben` WHERE interpret LIKE \'%$illo%\'';
    }
    if(($name != '') && ($interpret == '')){
    $sql = "SELECT id, name, interpret FROM alben WHERE name LIKE '%$name%' ORDER BY count DESC";
    }
    $erg = mysql_query($sql);
    $num = mysql_num_rows($erg);
    echo mysql_error();
    
    ## uninteressant für mein Problem.......
    if($num == 0){
    echo "<font size=\"1\" face=\"Verdana, Arial, Helvetica, sans-serif\" color=\"#FFFFFF\">Es wurden Leider keine Ergebnisse zu Ihrer Suchanfrage gefunden</font>";
    } 
    else
    {
    echo "<font face=\"Verdana, Arial, Helvetica, sans-serif\" size=\"1\" color=\"#FFFFFF\">Ihre 
    Suche hat ", $num, " Treffer ergeben:
    
    
    ";
    while($row=mysql_fetch_array($erg)){
    echo "<font face=\"Verdana, Arial, Helvetica, sans-serif\" size=\"1\" color=\"#FFFFFF\">", $row['name'], " - ", $row['interpret'], "<font color=\"#cc9933\"> ", $row['kat'], "</font></font>
     ";
    }
    }
    ?>
    Nun ist mein Problem dass wenn ich jetzt Illo eingebe bei Interpret, er mir sagt, dass keine Ergebnisse gefunden wurden, obwohl ein Datensatz vorhanden ist mit "Illo The Shit".

    Wo ist der Fehler im Code??
    Bitte helfen!
    Vielen Dank!


  • #2
    Versuchs mal so:

    PHP-Code:
    <?php
    $name 
    $HTTP_POST_VARS["name"];
    $interpret $HTTP_POST_VARS["interpret"];

    #if-Abfragen in Abhängigkeit der Variablen $name und $interpret
    if($name != '' && $interpret != ''){
        
    $sql "SELECT id, name, interpret FROM alben WHERE name LIKE '%$name%' AND interpret LIKE '%$interpret%' ORDER BY count DESC";
    }
    if(
    $name == '' && $interpret != ''){
         
    $sql 'SELECT * FROM `alben` WHERE interpret LIKE \'%$illo%\'';
    }
    if(
    $name != '' && $interpret == ''){
        
    $sql "SELECT id, name, interpret FROM alben WHERE name LIKE '%$name%' ORDER BY count DESC";
    }

    $erg mysql_query($sql)OR die(mysql_error());
    $num mysql_num_rows($erg);
    ?>
    Hab das jetzt einfach mal so hingetippt. Vielleicht funktionierts ja!

    Edit: Ach und am besten prüfst du variablen die leer sein könnten mit empty()

    Kommentar


    • #3
      ne des wars nicht! danke!
      Ich hab einfach statt '%$name%' -> '%".$name."%' eingegeben!
      Jetzt gehts trotzdem THX!

      Kommentar


      • #4
        Innerhalb von ' werden keine Variablen interpretiert.
        Wenn du ein Anfänger bist, poste aber bitte auch da :wink:

        Kommentar


        • #5
          Zitat von Zergling
          Innerhalb von ' werden keine Variablen interpretiert.
          Wenn diese aber ihrerseits innerhalb von doppelten Anführungszeichen stehen schon.

          Aber hier noch eine etwas kürzere Version:
          PHP-Code:
          $name $_POST["name"];
          $interpret $_POST["interpret"];

          $sql "SELECT id, name, interpret FROM alben WHERE %s ORDER BY count DESC";

          if(!empty(
          $name)){
              
          $cond[] = "name LIKE '%$name%'";
          }
          if(!empty(
          $interpret)){
              
          $cond[] = "interpret LIKE '%$interpret%'";
          }
          $sql sprintf($sqlimplode(' AND '$cond));

          $erg mysql_query($sql) OR die(mysql_error());
          $num mysql_num_rows($erg); 
          Gruss
          L

          Kommentar


          • #6
            Zitat von lazydog
            Zitat von Zergling
            Innerhalb von ' werden keine Variablen interpretiert.
            Wenn diese aber ihrerseits innerhalb von doppelten Anführungszeichen stehen schon.
            Das war aber nicht der Fall.

            Edit: Endlich mal jemand der (s)printf() verwendet

            Kommentar

            Lädt...
            X