Schleife in Datenbankabfrage

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

  • Schleife in Datenbankabfrage

    Ich möchte eine Suche in meiner Datenbanktabelle ermöglichen.
    Name z.B. login

    In einem Formular kann ich mehrere Keywords eintragen.
    Diese sollen
    in dem PHP-Script ausgewertet werden.

    Alse z,B. Suche nach erstem Keyword, dann Suche nach zweitem ....

    Die einzelnen Keywords in arrays lesen habe ich schon gemacht, aber auf gleiche Weise die Datenbankabfrage aufbauen klappzt nicht..

    Hier der Code

    PHP-Code:
    <?php
    // Test ob Suchworte eingegeben
    $leer $suchtext;
    if  (
    $leer == "--Datenbanksuche--")
     {
      echo 
    "<center><br><br><span class='text'>Es wurde kein Suchbegriff eingegeben</span>";
     }
    else
    {
    // Eigabe wird in array gelesen
    $key explode(" " $suchtext);
    // Textausgabe der Suchworte
    echo "<br>Die Suche nach&nbsp;";
    for (
    $x ;$x count ($key); $x $x +1):
    echo 
    "<b>"$key[$x] . "</b>&nbsp;";
    endfor;
    echo 
    "&nbsp;ergab folgendes Ergebnis:<br><br><b>";
    require(
    "zugang/zugang.php");
    // ---Suche ---
    $verbindung mysql_pconnect($host$user$password);
    if(
    $verbindung)
     {
       if(
    mysql_select_db($dbase$verbindung))
             
    $sql "SELECT * FROM `login`  WHERE  kennwort like '$key[0]%' or pwd like '$key[0]'".
             
    // Hier liegt irgendwie der Hund begraben ......
     
    for ($x ;$x count($key); $x $x 1):
                
    "OR kennwort like '$key[$x]%' or pwd like '$key[$x]'".
              endfor;
                 
    "";
    // Grab ende .. klaub ich 
             
    $ergebnistmysql_query($sql,$verbindung);
              
    $ergebnis mysql_query($sql,$verbindung);
                  if (
    mysql_fetch_object($ergebnist)== "")
                  {
                  echo 
    "<center><table width='90%'><tr><td bgcolor='#FF9933'align='right' colspan='3'><div class='textmarker'>Datenbank LOGIN</div></td></tr>";
                  echo 
    "<tr><td  colspan='3'><span class='text'>Keine Einträge für <i>";
                       for (
    $x ;$x count ($key); $x $x +1):
                           echo 
    ""$key[$x] . "&nbsp;";
                       endfor;
                  echo 
    "</i> gefunden ...</span></td></tr></table>";
                  }
                else
                 {
                 if  (
    $ergebnis)
                  {
                  echo 
    "<center><table width='90%'>";
                  echo 
    "<tr><td bgcolor='#FF9933'align='right' colspan='3'><div class='textmarker'>Datenbank LOGIN</div></td></tr>";

                   while( 
    $zeile mysql_fetch_object($ergebnis))
                      {
                      echo 
    "<tr><td colspan='2' valign='top'><span class='text'>Kennwort:&nbsp;&nbsp;".$zeile->kennwort."&nbsp;&nbsp;Passwort:&nbsp;&nbsp;".$zeile->pwd."</span></td>";
                      echo 
    "<td align='right'><form action='ergebnis.php' method='POST'name='suchen'><input type='hidden' name='suchen' value='".$zeile->id."'><input type='Submit' name='senden' value='... anzeigen' style='font-family: Arial, Helvetica, sans-serif; font-size: 8pt'></form></td></tr>";
                       }

                    echo 
    "</center></table>";
                    }
                 }
     }
    mysql_close();

    }

    ?>
    </body>
    Wer kann Helfen ??????
    Ach so, die weitergabe am ende durch ein Formular einfach ignoriere, gebe ich später in URL weiter

    Schon mal Dank von der Elgersburg

  • #2
    sorry der Fehlerteufel ..

    Also mir sind da ja üble Rechtschreibfehler passiert , na am Montagmorgen

    Bitte einfach ignorieren und Entschuldigung ....



    Ups, das neue Forum ist wahnsinnig schnell aber hat wohl noch ein paar Hoppler ;-)

    Kommentar


    • #3
      Der Fehler könnte wg. diesem Teil sein:
      for ($x = 1 ;$x < count($key); $x = $x + 1):
      "OR kennwort like '$key[$x]%' or pwd like '$key[$x]'".

      Besser:
      for ($x = 1 ;$x < count($key); $x = $x + 1):
      $sql .= " OR kennwort like " . "'" . "$key[$x]" . "%" . "'" . " or pwd like '$key[$x]'".

      => $sql muss fortgesetzt werden; vor dem OR muss ein Leerzeichen sein. Das % innerhalb der ' ist evtl. auch nicht korrekt.

      N.B $key[$x]% findet auch $key[$x], das kannst du dir also sparen.

      mfg
      Zuletzt geändert von CHnuschti; 23.09.2002, 10:38.

      Kommentar


      • #4
        funzt nicht ...

        .. hab ich getestet, aber er gibt in der for-zeile Parse error

        Kommentar


        • #5
          tja, parsen: semikolon fehlt am Schluss:
          for ($x = 1 ;$x < count($key); $x = $x + 1):
          $sql .= " OR kennwort like " . "'" . "$key[$x]" . "%" . "'" . " or pwd like '$key[$x]'";

          hier übrigens auch:
          $sql = "SELECT * FROM `login` WHERE kennwort like '$key[0]%' or pwd like '$key[0]'";

          Kommentar


          • #6
            Danke ....

            Danke an alle läuft super,

            jetz muß ich nur noch doppelte Leerzeichen löschen und dann ist alles ok ....

            mmmm..

            hat dazu jemand noch einen Tipp ?

            Kommentar


            • #7
              PHP-Code:
              $key explode(" " str_replace("  "," ",trim($suchtext))); 
              TBT

              Die zwei wichtigsten Regeln für eine berufliche Karriere:
              1. Verrate niemals alles was du weißt!


              PHP 2 AllPatrizier II Browsergame

              Kommentar

              Lädt...
              X