Vorschläge für bessere Umsetzung einer Suchanfrage an DB für Schulungplatform

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

  • Vorschläge für bessere Umsetzung einer Suchanfrage an DB für Schulungplatform

    Hi bin neu hier und habe ein paar kleinere Prob´s bei einer Aufgabe für einen Beleg in InternetTechnologie und hoffe das vlt ein paar von euch ne zündene Idee haben. Ich sitz jetz an dem Beleg seit ner Woche aber irgend wie sind alle Einfälle die ich bei der Handhabung bei meiner Suchanfrage (Menusteuerung) nich der Bringer.

    Also es geht um eine Schulungssoftware wo Kurse angeboten werden sollen mit Auswertung Abrechnung Raumplanung Kundenverwaltung und und und. Naja is eigentlich lechern ne Suchanfrage zu machen aber es gefält mir einfach net. Da ich jetz mit den meisten Funktionen/Klassen fertig bin und mich nun an die Umsetzung des Aussehens mache komm ich auf keinen grünen Zweig.

    Die Suche soll so sein das man eine Tabelle auswählt -> dann das Entsprechende Suchfeld -> dann den Suchbegriff eingeben kann und bei jedem Buchstaben der eingetippt werden soll die jeweiligen DS die passen ausgeben werden sollen.

    Die Aufgabenstellung vom Prof.

    Über die Startseite (index.php) soll mittels eines Suchfensters nach einem
    Datensatz gesucht werden können. Nach der Eingabe eines Zeichens in das
    Suchfenster sollten unmittelbar danach Suchvorschläge zum aktuellen
    Eingabefeld angezeigt werden
    , welche in das Eingabefenster per Maus oder
    Tastatur
    übernommen werden könnten. Mittels eines Auswahlfensters sollte die
    Suche auf ein Feldtyp begrenzt werden.


    Also meine Interpretation der des hervor gehobenen Satzes läst mich ein bischen stutzen.... ka wie ich das realisieren soll
    Das schlimmste is eigentlich ich kann kein JavaScript ... ka wie ich die Prüfungen in JavaScript und Java mit 2 geschaft hab.... ich hasse diese Inseln und bin immer gleich geflüchtet sobald ich mir nen Boot bauen konnte und bin zu C,C++ und PHP zurück gepattelt!

    Meine Überlegung war vlt nen flash einzubauen und das ganze menu mit zu machen aber was ausfällt da ich nicht denke das es praktikabel ist für die gestellte Aufgabe. Also hab ich mich wieder versucht mit JavaScript zu arrangieren und mir ne onchange function auf meine Combobox zu basteln aber slebst dieser stupid Versuch funst net. ;(

    Falls jemand ne Idee oder schon wengistens nen Vorschlag hätte für die "Suchvorschläge" umsetzen könnte wäre ich echt froh.
    Danke im vorraus für´s Lesen und vlt nen Post.

    Ein Paar Screenshouts wies ausieht und wie ich mirs bis her vorstelle.
    Start
    http://www2.htw-dresden.de/~s64564/start.jpg
    Ausgewählt
    http://www2.htw-dresden.de/~s64564/tbl-ausgewaehlt.jpg

    Bemerkungen: Lösen Sie die Aufgabenstellung unter Verwendung von HTML, PHP 5, Javascript,
    Ajax und CSS. Frameworks wie z.B. JQuery oder Prototype sind für diesen Beleg
    nicht zugelassen.
    Sie dürfen und sollten die aktuell in Firefox implementierten Funktionen von
    HTML5 nutzen. Verwenden Sie, soweit möglich, die XHTML-Schreibweise.

    mfg der Elde

  • #2
    Du kannst das ziemlich gut per Ajax lösen. Ein Tutorial, wie das grundsätzlich geht, findest du hier. Und sogar ganz ohne jQuery. Das sollte dir die grundsätzlichen Techniken vermitteln. Dann weißt du zumindest schon, wie man select-Felder manipuliert. Der Rest ist auch ganz einfach.

    Peter
    Zuletzt geändert von Kropff; 20.04.2012, 19:00.
    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
    Meine Seite

    Kommentar


    • #3
      Also hab mir das ma die letzte 1,5 h zu gemühte gezogen ... versuch morgen ma nen bissle rum, aber sehr nett geschrieben danke

      Kommentar


      • #4
        hi also hab die seite jetz soweit fertig was ich wollte ... Standartverwaltungaufgaben, Mailingfunktion , Abrechnung funst mit PDF ausgabe und versendung ...bloß diese Suche funst net so rich.. Also ich hab jetz nen AJAX Script mit eingebunden was mir die gewünschten vorschläge liefert aber ich rast hier glei aus, da ich nun schon wieder bestimmt 20 stunden immer neben bei gesucht und probiert habe die in mein menu einzuflechten per select option den request zurück zugeben aber der zerklobt mir nur mein menü und erzeugt nen extra editfeld was dan Suchwort heist und das alte steht namen los mit alter id da;( echt leute wenn einer ne idee hat wie ich die Scripte so modifizieren kann das ich nen editfeld mit den Vorschlägen drunter zum auswählen oder anklicken bekomm echt das wäre mega.

        Also binde das in meine Header
        PHP-Code:
        function ajax_suche()
            {echo 
        '
            
                function searchFor(suchbegriff)
                 {var xmlHttp = null;
                  alert("Test");
                  // Mozilla, Opera, Safari sowie Internet Explorer 7
                   if (typeof XMLHttpRequest != "undefined") {xmlHttp = new XMLHttpRequest();}
                    if (!xmlHttp) 
                     {// Internet Explorer 6 und älter
                      try      {xmlHttp  = new ActiveXObject("Msxml2.XMLHTTP");} 
                      catch(e) {
                                try      {xmlHttp  = new ActiveXObject("Microsoft.XMLHTTP");} 
                                catch(e) {xmlHttp  = null;}
                               }
                     }
                 // Wenn das Objekt erfolgreich erzeugt wurde            
                    if (xmlHttp) 
                    {
                     var url = "navi_search_out.php";
                     var params = "suchbegriff="+suchbegriff;
                     var tbl_atr = $_POST["navi_search_field"];
                     var tbl_atr = $_POST["navi_search_table"];
                     xmlHttp.open("POST", url, true);
                        
                 //Headerinformationen für den POST Request
                     xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
                     xmlHttp.setRequestHeader("Content-length", params.length);
                     xmlHttp.setRequestHeader("Connection", "close");                    
                    
                     xmlHttp.onreadystatechange = function () 
                      {
                        if (xmlHttp.readyState == 4) 
                          {// Zurückgeliefertes Ergebnis wird in den DIV "ergebnis" geschrieben
                           document.getElementById("ergebnis").innerHTML = xmlHttp.responseText;
                           
                          }
                      };                
                     xmlHttp.send(params);
                    }//xmlHttp Ende            
                }//function searchfor
            '
        ;    
            } 
        Dann hab ich noch die Request datei heist navi_search_out
        da söllten die Vorschläge in eine combobox eingentlich

        PHP-Code:
        include_once './inc/db_master.php';
        include_once 
        './inc/htm_display.php';
        include_once 
        './inc/config.php';
        include_once 
        './inc/sql_query.php';
        // Verbindung
            
        $datenbank = new db_master($aktuelle_db);
            
        $mydisplay = new htm_display();
            
        $tabelle "Kunde";
            
            if (
        $_POST["suchbegriff"])
            {
                
        // sql Abfrage wird gespeichert mit den Notwendigen Parameter
                 
        $sql "SELECT KundID,".$_POST['navi_search_field']." FROM  ".$_POST['navi_search_table']." WHERE  LIKE  ".$_POST['navi_search_field']." '%".$_POST["suchbegriff"]."%'";
                
        //$sql = "SELECT KundID,KundName FROM ".$tabelle." WHERE KundName LIKE '%".$_POST["suchbegriff"]."%'";
                
                // sql Abfrage wird durchgeführt
                
        echo $sql;
                
        $out_box $datenbank->results_geter($sql);
                
        $out_box[0][2]= 'Kunden Liste';
                
                
                
        // Suchbegriff wird ausgegeben
                
        echo "Sie Suchten nach: ".$_POST["suchbegriff"]."<br/><br/>";
                
                
        // Ergebnis wird ausgegeben mit Zeilenumbruch
                //$mydisplay->content_request_view($out_box);
                
        echo '
                <select name="navi_search_request" id="navi_search_request" onchange="" size="1">
                
                '
        ;
                
        //action_search_table()
                
        for($i=0;$i<=$out_box[0][1];$i++)
                 {
                  echo 
        '<option value="'.$i.'" >'.$out_box[$i+2][1].'</option>';     
                 }
                echo 
        '</select>';
            } 
        Im meiner Menu_bar klasse wähle ich die Tabelle aus und dann das Tabellenfeld aus wenn das Tabellenfeld ausgewählt ist wir die AJAX Funktion scharfgeschaltet und nen Textfeld mit nami_search_word

        navi_menu_bar function
        PHP-Code:
         <form name="navi_menu_bar" action="index.php" method="post">
                 <
        select name="navi_search_table" id="navi_search_table_id" size="1"><option>Tabelle</option>';
             //onchange=" action_search_table()"
             $table_anz = count($table_list);
             for($i=0;$i<$table_anz;$i++)  //array div
             {echo '
        <option>'.$table_list[$i].'</option>';} 
        echo '
        </select>';
            
            if($mod==1)
             {$field_anz = count($field_list);
               echo '
        <select name="navi_search_field" size="1">';
              for($i=0;$i<$field_anz;$i++)  //array div
              {echo '
        <option>'.$field_list[$i].'</option>';} 
               echo '
        </select>
                     <
        input type="text" name="navi_search_word" onKeyUp="searchFor(this.value)/>
                     <div class="
        content_start_text" id="ergebnis"></div>';      
              } 
        ...... alle anderen Buttons
        form ende div ende
        }



        ich weis alle ergebnisse stehen im ergebnis aber wie bekomm ich das ordentlich manipuliert, falls ich was vergessen hab einfach schreiben dann post ich was noch fehlt

        FireBugAusgabe

        http://www2.htw-dresden.de/~s64564/forum%20bild.jpg

        weis echt net weiter gerade und javascript is nun ma nich meine stärke
        Zuletzt geändert von Elde; 09.05.2012, 11:38.

        Kommentar


        • #5
          Auf die Schnelle fällt mir auf, dass du in der navi_search_out.php keinen Header sendest (muy importante!). Außerdem gibt es bei innerHTML ab und zu Probleme, besonders im IE.

          Peter
          Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
          Meine Seite

          Kommentar


          • #6
            header beim request... ehhh muss das da der ja nur nen teil zur hauptseite ausgibt ? und als ich die funktion im einzelnen getestet habe brauchte ich keinen daher ka bin wie gesagt langsam echt am ende mit´m verständiss.
            ich porbiers ma aus....
            also teste derzeit nur im Firefox und opera

            Kommentar


            • #7
              ne geht auch net mit header also hab einen rein gemacht, body und fooder.

              Kommentar


              • #8
                Zitat von Elde Beitrag anzeigen
                ne geht auch net mit header also hab einen rein gemacht, body und fooder.
                Du hast was? HTML-Code eingefügt? Könntest du mal ein klein wenig präziser bei deinen Erläuterungen sein?

                Peter

                PS: Achte mal ein wenig auf deine Rechtschreibung.
                Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                Meine Seite

                Kommentar


                • #9
                  Entschuldigung zwecks der Umgangssprache.
                  Ich habe einen eigenen Header der navi_search_out.php geben.
                  Was leider nichts gebracht hat und ich auch leider keine Ahnung hätte was mir das an der Stelle bringen könnte.

                  Wie würdest du denn den Header schreiben oder was söllte der bewirken?

                  Kommentar


                  • #10
                    Also bei der Orthographie fällt es mir schwer, dem Thread zu folgen, aber ich vermute, dass Kropff einen HTTP-Header meinte.

                    Kannst du vielleicht deinen aktuellen Status nochmal klar und deutlich formulieren? Poste PHP-Code bitte auch nur da, wo er wirklich nötig ist. Ist ja schließlich ein JS-Problem. Theoretisch solltest du testweise sogar komplett ohne PHP auskommen.

                    Kommentar


                    • #11
                      Der Thread ging damit los das ich nicht recht wusste wie ich eine Suchfunktion mit Vorschlägen nach der jeweiligen Eingabe umsetzen sollte, das waren die ersten drei Beträge.

                      Gestern hatte ich dann den Lösungsvorschlag von @Kropff soweit wie ich es konnte umgesetzt. Und meine Frage war, wie bekomme ich die Daten manipuliert so das diese unter dem Sucheingabe-Textfeld stehen und idealer weise auch übernommen werden können?
                      mögliche Variante 1. per javascript die Ausgabe anzeigen und auswählen realisieren , da weiss ich leider nicht wie.
                      Variante 2. per PHP und HTML Auswahlfeld wie ich es in der navi_search_out.php versucht habe. Ein Fehler habe ich da gefunden bekomme jetz ,wenn ich nur mit einen Textfeld ohne Menü teste die Vorschläge in einem Auswahlfeld angezeigt. Bloß im Menü geht es nicht.

                      Was relavanten Codeauszüge angeht, dachte ich ja das die Java Funktion ausm Header und die navi_search_out wichtig sind. Der Auszug aus der Menüfunktion wo die Suche eingebunden wird geb ich zu war überflüssig.

                      danke an der Stelle an euch für´s Lesen ,hoffe das ich jetz das Problem halbwegs erklären konnte.

                      mfg der Elde
                      Zuletzt geändert von Elde; 09.05.2012, 11:24.

                      Kommentar


                      • #12
                        Zitat von Elde Beitrag anzeigen
                        Ich habe einen eigenen Header der navi_search_out.php geben.
                        Und wie sieht der im Detail aus?

                        Peter
                        Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                        Meine Seite

                        Kommentar


                        • #13
                          das wäre jetz die navi_search_out mit dem Header aus dem Beispiel was ich zuvor genutzt hatte. Aber denke dass das im ansatz schon nicht geht.

                          PHP-Code:
                          include_once './inc/db_master.php';
                          include_once 
                          './inc/htm_display.php';
                          include_once 
                          './inc/config.php';
                          include_once 
                          './inc/sql_query.php';

                          $datenbank = new db_master($aktuelle_db);
                          $mydisplay = new htm_display();

                              
                              if (
                          $_POST["navi_search_request"] != '')
                              {
                               echo 
                          '
                               <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
                             <html xmlns="http://www.w3.org/1999/xhtml">
                             <head>
                             <title>MyMeeting</title>
                             <script src="SpryAssets/SpryValidationTextField.js" type="text/javascript"></script>
                             <link href="SpryAssets/SpryValidationTextField.css" rel="stylesheet" type="text/css" />
                             <link rel="stylesheet" href="css/style.css" type="text/css" />
                             <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
                             <script type="text/javascript">  
                                function searchRe(search_request)
                                  {
                                      var xmlHttp = null; //Request def.
                                      // Mozilla, Opera, Safari sowie Internet Explorer 7
                                      if (typeof XMLHttpRequest != "undefined") {
                                          xmlHttp = new XMLHttpRequest();
                                      }
                                      if (!xmlHttp) {
                                          // Internet Explorer 6 und älter
                                          try {
                                              xmlHttp  = new ActiveXObject("Msxml2.XMLHTTP");
                                          } catch(e) {
                                              try {
                                                  xmlHttp  = new ActiveXObject("Microsoft.XMLHTTP");
                                              } catch(e) {
                                                  xmlHttp  = null;
                                              }
                                          }
                                      }
                                      // Wenn das Objekt erfolgreich erzeugt wurde            
                                      if (xmlHttp) {
                                          var url = "index.htm";// Zielscript
                                          var params = "navi_search_request="+search_request;
                                          xmlHttp.open("POST", url, true);
                                          
                                          //Headerinformationen für den POST Request
                                          xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
                                          xmlHttp.setRequestHeader("Content-length",params.length);
                                          xmlHttp.setRequestHeader("Connection", "close");                    
                                                      
                                          xmlHttp.send(params);
                                      }            
                                  }//function searchfor
                                  
                            
                          </script> 
                             </head>   
                               '
                          ;
                          // Mysql Abfrage wird gespeichert mit den Notwendigen Parameter
                                  
                          $sql "SELECT ".$_POST['navi_search_field']." FROM ".$_POST['navi_search_table']." WHERE ".$_POST['navi_search_field']." LIKE '%".$_POST["suchbegriff"]."%'"

                          // Mysql Abfrage wird durchgeführt
                                  //echo $sql;
                                  
                          $out_box $datenbank->results_geter($sql);
                                  
                          $out_box[0][2]= 'Kunden Liste';

                           echo 
                          '<select name="navi_search_request" id="navi_search_request" onchange="searchRe(this.value);" size="1">
                                        <option></option>'
                          ;//change an der stelle erzwingen
                                  //action_search_table()
                                  
                                  
                          for($i=0;$i<=$out_box[0][1]-1;$i++)
                                   {
                                    echo 
                          '<option value="'.$i.'" >'.$out_box[$i+2][0].'</option>';     
                                   }
                                  echo 
                          '</select>';
                                  
                                  
                          print_r($_POST);
                                  
                              } 
                          Zuletzt geändert von Elde; 09.05.2012, 18:38.

                          Kommentar


                          • #14
                            Dann hast du dir mein Tutorial nicht richtig durchgelesen. Ich meint solche Header (Punkt 4).

                            Peter
                            Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                            Meine Seite

                            Kommentar


                            • #15
                              OffTopic:
                              und bitte einen Keks für mich, fürs Raten...

                              Kommentar

                              Lädt...
                              X