Suchfunktion funzt nicht zu 100%

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

  • Suchfunktion funzt nicht zu 100%

    Hallo,

    also, ich versuche ein Wörterbuch für spezielle Wörter anzulegen. Die MYSQL Tabelle habe ich angelegt, die Eingabemasken um die Tabelle mit neuen Wörtern zu füllen oder um bestehende Einträge zu ändern sind fertig und funktionieren auch. Der letzte Teil, die eigentliche suchfunktion, funktioniert eigentlich auch, eben nur unvollständig.

    In der Tabelle gibt es 12 Spalten, eine Spalte mit einer fotlaufenden Nummer die automatisch generiert wird, eine Spalte mit "Autor", eine "Bemerkungen", und dann neun Spalten die die unterschiedlichen Übersetzungen des Wortes beinhalten. "german1" - "german3", english1-3 und russia1-3.

    Wenn ich in mein Suchformular ein Wort eingebe, wird im moment erstens nur eine Spallte durchsucht, nämlich "german1", mein erstes Problem ist also, wie muss ich den query abändern damit er alle 9 Spalten durchsucht, und 2tens, wenn er im moment Sachen findet, dann gibt er nur die fortlaufende Nummer aus, also er findet die richtige Zeile in der Tabelle, und gibt die erste Zelle aus, er soll aber ALLE 9 Übersetzungen ausgeben, nicht nur die erste Zelle in der die Nummer steht. Wie muss ich die Ausgabe abändern, damit alle Daten ( also die gesamte Zeile ) ausgegeben wird?

    Wäre super wnen irh mir helfen könnt. Meien PHp Kentnisse sind leider doch noch nicht sehr weit fortgeschritten und basieren mehr auf anpassen udn erweitern udn abändern als auf komplett selber schreiben...

    Einmal die Eingabemaske der Suche: (Auf das wesentliche reduziert!)

    PHP-Code:
    <form action="" method="POST">


    <
    input type="Text" name="searchfor" value="" size="30" maxlength="30">

    <
    input type="submit" value="Search for Translation">

    <
    input type="Radio" name="howtosearch" value="AND">

    <
    input type="Radio" name="howtosearch" value="OR">

    </
    form

    und hier der verarbeitende Teil:

    Anmerkung:
    $db_newstabelle2 ist gleich "german1", also das ist der Punkt wo ich will das auch gleichzeitig die 8 weiteren Spalten durchsucht werden.

    PHP-Code:


    if(!isset($_POST['searchfor']) || $_POST['searchfor'] == "")
    {

    }
    else
    {



    $search $_POST['searchfor']; 


    $verbindung $_POST['howtosearch'];


    $words explode(" ",$search); 


    $query "SELECT * FROM " $db_newstabelle2 " WHERE ";
    for (
    $i=0$i<count($words); $i++)

    {
    $query .= "( " $feldname " like '%" $words[$i] . "%' ) ";

    if(
    $i<count($words)-1)
    {

    $query .= " " $verbindung " ";
    }
    }



    $conid = @mysql_connect($db_host,$db_user,$db_password);

    $db mysql_select_db($db_name,$conid);

    $result mysql_query($query,$conid); 


    if(
    mysql_affected_rows() > 0

    $num_found mysql_num_rows($result); 
    //Anzahl der Treffer

    echo '<p class=searchtext2>Search has been successful. ' $num_found ' results:<br><br>';

    for(
    $i 0$i $num_found$i++)
    {
    $textstring mysql_result($result,$i);

    $textstring str_replace($words[$i], "<font color=\"red\"><b>".$words[$i]."</b></font>",  
    $textstring);


    echo 
    $textstring "<hr>";





    }
    }else

    echo 
    'Leider nichts gefunden :('

    }
    mysql_close($conid);


    Also, würde mich riesig freuen wenn mir jemand helfen kann, der erste Punkt, wie ich statt der einen Spalte alle 9 Spalten durchsuche ist wahrschienlich nur eine kleine Sache die ich abändern muss, die zwiete Frage dagegen wohl etwas umfangreicher, ich hoffe...

  • #2
    Wenn ich in mein Suchformular ein Wort eingebe, wird im moment erstens nur eine Spallte durchsucht, nämlich "german1", mein erstes Problem ist also, wie muss ich den query abändern damit er alle 9 Spalten durchsucht,
    Denk mal nach, wenn du WHERE german1 = 'bla' hast, wie muss die query wohl für das feld german2 aussehen? richtig! german2 = 'bla' dazwischen noch ne verbindung: OR da du ja entweder im einen oder im anderen haben willst.

    2tens, wenn er im moment Sachen findet, dann gibt er nur die fortlaufende Nummer aus, also er findet die richtige Zeile in der Tabelle, und gibt die erste Zelle aus, er soll aber ALLE 9 Übersetzungen ausgeben, nicht nur die erste Zelle in der die Nummer steht. Wie muss ich die Ausgabe abändern, damit alle Daten ( also die gesamte Zeile ) ausgegeben wird?
    Du besitzt die Grundlagen? Wenn ich SELECT id mache, bekomme ich auch nur die id ausgeben. wenn ich aber select german1, german2, ... mache, bekomme ich logischerweise auch die entsprechenden übersetzungen.

    BTW: mich wundert ein bisschen, dass du im SQL-Forum postest, uns aber nur HTML und PHPO-Codes zeigst. von deiner Query, um die es sich geht, ist nicht (außer stückchen) zu sehen.

    Also, würde mich riesig freuen wenn mir jemand helfen kann, der erste Punkt, wie ich statt der einen Spalte alle 9 Spalten durchsuche ist wahrschienlich nur eine kleine Sache die ich abändern muss, die zwiete Frage dagegen wohl etwas umfangreicher, ich hoffe...
    Nein. Beides absolute Grundlagen. schattenbaum.net hilft weiter.

    Kommentar


    • #3
      OffTopic:
      Original geschrieben von TobiaZ
      BTW: mich wundert ein bisschen, dass du im SQL-Forum postest, .
      das ist auch meinem mist gewachsen. ich habs verschoben, weil hier klar ein sql-problem (abgesehen von den nichtvorhandenen grundlagen. ) vorhanden zu sein scheint.
      INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


      Kommentar


      • #4
        axo.

        Im HTML-Forum hätte ich die fehlenden Testausgaben bemängelt

        Kommentar


        • #5
          mh, ich war sogar vorher auf schattenbaum, aber nunja, vielen Dank für die Hilfe!!!

          Kommentar


          • #6
            hat die hilfe geholfen?

            Kommentar


            • #7
              Also mein erstes Prob, das er alle Spalten durchsuchen soll, ist damit gekärt, da weis sich ja jetzt was ich einfach machen muss...mir OR die Dinger verbinden...

              Das zweite noch nicht ganz, ich duchblicke das mit dem "Select" noch net ganz bzw weiss nich wie ich dat
              PHP-Code:
              $textstring mysql_result($result,$i);

              $textstring str_replace($words[$i], "<font color=\"red\"><b>".$words[$i]."</b></font>",  
              $textstring); 
              jetzt verändern muss damit er alle Spalten der betreffenden Zeile ausgibt....aber ich schätze mal mit meinem neu erworbenen Wissen könnte ich bei schattenbaum jetzt fündig werden....wenn aber natürlich noch hier jemand so frei wäre mir es kurz zu sagen wäre das vieeel einfacher für mich *hoff*

              Kommentar


              • #8
                du musst endlich mal deine Query posten. ohne die machen wir hier gar nichts!

                Kommentar


                • #9
                  Also irgendwie...ich habe schattenbaum mir jetzt zig mal durchgelesen, aber irgendwie kriege ich das nich hin, dabei kann ich dne MYSQL Abschnitt fast auswendig....

                  Also, die query brauchst du, das hier? also das is das echo von $query wenn ich ins eingabeformular SUCHTEST eingebe...
                  PHP-Code:
                  SELECT german1german2german3english1english2,
                   
                  english3russia1russia2russia3 FROM COMENIUS_words WHERE german1 like '%SUCHTEST%' 
                  Ich habe viel probiert, aber nach meinem Verständniss müsste ich um mein Problem zu lösen (das alle 9 Spalten durchsucht werden und nicht nur eine, und auch alle ausgegeben werden) das hier ändern:
                  PHP-Code:
                  $query .= "( " german1 " like '%" $words[$i] . "%' ) ";
                  if(
                  $i<count($words)-1
                  Aber wenn ich "german1" mit den Namen der anderen Spalten ersetze, das funktioniert nicht, ich lasse mir den Query ausgeben und dann steht da auch "...WHERE english1 like...", aber obwohl das im query steht wird kein Ergebis angezeigt, irgendwie scheint das nicht verarbeitet zu werden...ich verstehe nicht, warum nicht! Kann mir da please jemand helfen, bin konfus...

                  Falls jemand so nett ist und mir helfen kann bzw will, hier nochmal der komplette Code zur Übersicht: (habe auch mittlerwiele manche unnötige Sachen im code entfernt!!)

                  PHP-Code:

                  if(!isset($HTTP_POST_VARS['searchfor']) || $HTTP_POST_VARS['searchfor'] == "")
                  {

                  }
                  else
                  {

                  $search $HTTP_POST_VARS['searchfor'];  //eingegebenes Word
                  $verbindung $HTTP_POST_VARS['howtosearch']; // AND oder OR Verknüpfung
                  $words explode(" ",$search); 

                  $query "SELECT german1, german2, german3, english1, english2,
                   english3, russia1, russia2, russia3 FROM 
                  $db_newstabelle2 WHERE ";
                  for (
                  $i=0$i<count($words); $i++)

                  {
                  $query .= "( " german1 " like '%" $words[$i] . "%' ) ";
                  if(
                  $i<count($words)-1)

                  {
                  $query .= " " $verbindung " ";
                  }
                  }

                  $result mysql_query($query);
                  if(
                  mysql_affected_rows() > 0

                  {
                  $num_found mysql_num_rows($result); 

                  echo 
                  '<p class=searchtext2>Search has been successful. ' $num_found ' results:<br><br>';
                  for(
                  $i 0$i $num_found$i++)

                  echo 
                  "<br><br>$query<br><br>";

                  {
                  $textstring mysql_result($result,$i"$db_newstabelle2.german1");

                  $textstring 
                  str_replace($words[$i], "<font color=yellow><b>".$words[$i]."</b></font>",  $textstring);

                  echo 
                  "$textstring  <br><hr>";
                  }
                  }

                  else

                  echo 
                  '<p class=searchtext2>Sorry but couldnt find the word you are searching for!</p>'
                  }

                  Zuletzt geändert von *[MxG]C-Rash; 13.12.2004, 16:33.

                  Kommentar


                  • #10
                    @Tobiaz...gibts noch was was ich posten muss? Wär so nett wnen ihr mir helfne würdet!

                    Kommentar

                    Lädt...
                    X