Problem mit Suchmaschine?

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

  • Problem mit Suchmaschine?

    Hallo,

    ich habe hier eine Suchmaschine die in einer DB sucht. Aber egal was ich eingebe in den Feldern es wird immer alles gefunden. Dies sollte natürlich nicht so sein. Da umso mehr man angibt so genauer sollen die Treffer werden. Ausser bei plz klappt das nur wenn nur ein Treffer angezeigt wird, wird die id nicht mehr dargestellt. Bin schon langsam am durchdrehen. Habe wirklich alles ausprbiert. Hat jemand eine Idee? Thanx
    PHP-Code:
    <?php

    // ################## Datenbankanbindung ###############################

    $benutzer "###";
    $passwort "###";
    $datenbank "db";
    $host "localhost";
    $tabelle "###";

    // #####################################################################

    if ($level == "1") {
    $eingabe ereg_replace("\+"" "$eingabe);
    $eingabe ereg_replace("-"" "$eingabe);
    $eingabe ereg_replace(","" "$eingabe);
    $eingabe ereg_replace("^[ ]+"""$eingabe);
    $eingabe ereg_replace("[ ]+$"""$eingabe);
    $eingabe ereg_replace("[ ]+"" "$eingabe);
    }

    if (
    $level != "1") {

    echo
    "
    <form action='suche.php'>
    <input type='hidden' name='level' value=1>

    <INPUT NAME='suche' SIZE='12'>

    <INPUT NAME='strasse' SIZE='12'>

    <SELECT NAME='auto' 
    $css_select>
    <OPTION></OPTION>
    <OPTION VALUE='1e'>1</OPTION>
    <OPTION VALUE='2'>2</OPTION>
    <OPTION VALUE='3'>3</OPTION>
    <OPTION VALUE='4'>4</OPTION>

    </SELECT>

    <INPUT NAME='plz' size='12'>

    <INPUT NAME='ort' size='12'>

    <INPUT NAME='suche' TYPE='image' SRC='suchen.gif'>

    </form>
    "
    ;

    } else {

    @
    mysql_connect("$host""$benutzer""$passwort");
    @
    mysql_select_db ("$datenbank");

    $_query "SELECT * FROM $tabelle WHERE (auto <= 2) ";

    if (
    $plz == ) { $_query .= ""; }
    if (
    $plz != ) { $_query .= "AND plz LIKE $plz "; }

    if (
    $auto == 0) { $_query .= ""; }
    if (
    $auto != ) { $_query .= "AND auto >= $auto "; }

    if (
    $ort == 0) { $_query .= ""; }
    if (
    $ort != ) { $_query .= "AND ort >= $ort "; }

    if (
    $strasse == 0) { $_query .= ""; }
    if (
    $strasse != ) { $_query .= "AND strasse <= $strasse "; }

    if (
    $suche == 0) { $_query .= ""; }
    if (
    $suche != ) { $_query .= "AND suche >= $suche "; }

    $_query .= "ORDER BY auto ASC";

    $_result mysql_query ($_query);
    $num mysql_numrows($_result)or die ('mySQL ERROR (' __LINE__ '): '.mysql_error());

    echo 
    "
    <table width=\"435\" border=\"0\">
    <tr>
    <td colspan=\"4\">
    <font class=\"h1\">Ergebnis der Suchanfrage</font><br><br>
    </td>
    </tr>
    </table>

    <br>
    "
    ;
    if (
    $num == 0) { echo "<font class=\"text\">Es wurden <b>keine</b> Eintr&auml;ge in der Datenbank gefunden.</font><br><br>";}
    if (
    $num == 1) { echo "<font class=\"text\">Es wurde <b>$num</b> Eintrag in der Datenbank gefunden.</font><br><br>";}
    if (
    $num >= 2) { echo "<font class=\"text\">Es wurden <b>$num</b> Eintr&auml;ge in der Datenbank gefunden.</font><br><br>";}

    if (
    $num 0) {echo"
    <TABLE WIDTH='435' BORDER='0' CELLSPACING='5' CELLPADDING='0'>
    "
    ;

    for (
    $i 0$i $num$i++) {
    $row = @mysql_fetch_array($_result);

    $user_id[$c] = $row["user_id"];
    $c++; 

    echo 
    "<td valign=\"top\">";
    if (
    $row[strasse] == 5){echo"<a href=../user/profil.php>$row[strasse] ($row[plz] $row[ort])</a>";
    }
    echo
    "
    </td>
    "
    ;
    if (
    $row[auto] == 0){ echo"
    <td valign=\"top\" align=\"center\"><font class=\"text\">
    $row[plz]</font></td>";
    }
    echo
    "<td valign=\"top\" align=\"center\"><font class=\"text\">$row[ort]</font></td>"
    echo
    "<td valign=\"top\" align=\"center\"><font class=\"text\">$row[auto]</font></td>";
    echo
    "</tr>";
    }

    }
    echo 
    "</table>";
    EDIT:
    php.tags by wotan
    Zuletzt geändert von Wotan; 13.06.2003, 19:55.

  • #2
    hast du mal den fertigen QUERY ausgegeben, um mal zu gucken, was da rauskommt?

    Kommentar


    • #3
      Ich habe alles mögliche Probiert. Die Suche und Darstellung funktioniert ja soweit schonmal. Nur wird keine detaliertes Ergebnis ausgegeben. Es wird immer alles gefunden. Ausser bei plz. Da wird nur ein Treffer angezeigt. Aber dann ist das Problem das bei einem Treffer die id nicht mitgegeben wird.

      Diese meine ich. Aber nur wenn nur ein Treffer angezeigt wird.

      for ($i = 0; $i < $num; $i++) {
      $row = @mysql_fetch_array($_result);
      {
      $user_id[$c] = $row["user_id"];
      $c++;
      }

      Kommentar


      • #4
        und ich meine den Query-String, den du an die DB übermittelst!!!

        Kommentar


        • #5
          Nicht lachen aber wie mache ich das. Peinlich, peinlich

          Kommentar


          • #6
            echo $_query;

            das will tobiaz sehen, also die ausgabe um genau zu sein.
            Kissolino.com

            Kommentar


            • #7
              Ach so. Na gut: Ich bekomme das hier ausgespuckt wenn ich nichts in den Feldern eingebe:

              SELECT * FROM data WHERE (auto <= 2) ORDER BY auto ASC


              Und wenn ich bei plz etwas eingebe kommt:

              SELECT * FROM data WHERE (auto<= 2) AND plz >= '419296' ORDER BY auto ASC

              Und wenn ich bei allen anderen was eingebe kommt immer

              SELECT * FROM data WHERE (auto <= 2) ORDER BY auto ASC

              Also werden die anderen gar nicht ausgelesen. An was liegt das?


              Zuletzt geändert von jens000; 13.06.2003, 17:39.

              Kommentar


              • #8
                Re: Problem mit Suchmaschine?

                Original geschrieben von jens000
                PHP-Code:
                if ($ort == 0) { $_query .= ""; }
                if (
                $ort != ) { $_query .= "AND ort >= $ort "; }

                if (
                $strasse == 0) { $_query .= ""; }
                if (
                $strasse != ) { $_query .= "AND strasse <= $strasse "; } 
                einen leerstring "" an die query anzuhängen, ist absoluter unsinn.

                und was
                AND ort >= $ort
                AND strasse <= $strasse
                sein soll, ist mir auch schleierhaft.

                das würde doch nur bei nummerischen werten sinn machen, aber alphanummerische sachen wie ort und strasse mit grösser/kleiner gleich zu vergleichen - welchen sinn siehst du darin?
                I don't believe in rebirth. Actually, I never did in my whole lives.

                Kommentar


                • #9
                  Hast recht.

                  if ($strasse == 0) { $_query .= ""; }

                  habe ich nun rausgelöscht.



                  if ($strasse != 0 ) { $_query .= "AND strasse <= $strasse "; }

                  soll ich das einfach so machen

                  if ($strasse != 0 ) { $_query .= "AND strasse == $strasse "; }

                  Kommentar


                  • #10
                    Original geschrieben von jens000
                    soll ich das einfach so machen

                    if ($strasse != 0 ) { $_query .= "AND strasse == $strasse "; }
                    nein, immer noch nicht ganz.

                    string-vergleiche macht man in sql mit LIKE.

                    PHP-Code:
                    WHERE strasse LIKE 'hauptstrasse 15' 
                    I don't believe in rebirth. Actually, I never did in my whole lives.

                    Kommentar

                    Lädt...
                    X