Suchfunktion über Formular auf MySQL Datenbank

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

  • Suchfunktion über Formular auf MySQL Datenbank

    Hallo alle zusammen,

    ich habe folgendes Problem zu lösen. Ich bin PHP-Anfänger. Ich denke mal das es für euch kein Problem ist ;-)

    Also, ich habe ein Formular, über das ich Daten in eine Datenbank schreibe. Kein Problem... Jetzt möchte ich eine Suchfunktion haben, die über das selbe Formular, je nach dem was ich eingegeben habe, die Datenbankabfrage startet.

    Zur verständigung:

    Formular zur Eingabe:
    Bearbeiter:
    Bereich:
    Betrieb:

    Datenbank 'logbuch' Tabelle 'eintraege':
    bearbeiter
    bereich
    betrieb

    Ich möchte als je nach dem was ich suche, meine Abfrage gestalten. Bearbeiter, Bearbeiter und Bereich, Bearbeiter und Bereich und Betrieb, Bearbeiter und Betrieb, Betrieb und Bereich. Ich habe noch mehr felder. Es sind ges. 12.

    Ich hoffe mir kann jemand helfen, muß nämlich Mittwoch morgen meine Lösung Präsentieren.

    Vielen Dank schon einmal

    Chronos

  • #2
    Re: Suchfunktion über Formular auf MySQL Datenbank

    Original geschrieben von Chronos
    ich habe folgendes Problem zu lösen. Ich bin PHP-Anfänger. Ich denke mal das es für euch kein Problem ist ;-)
    das ist dann kein problem, wenn ein wenig eigeninitiative erkennbar ist ...
    Ich hoffe mir kann jemand helfen, muß nämlich Mittwoch morgen meine Lösung Präsentieren.
    für's schul- oder sonstige-aufgaben machen sind wir hier allerdings nicht da.


    es gibt geüngend quellen im netz, wo du zum suchen mit mysql info finden dürftest.

    wenn du konkrete probleme damit hast, dann komm wieder, und zeig uns was du bisher versucht hast.
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      Unter Eigeninitiative wird übrigends auch das SUCHEN in diesem Forum gezählt.

      Kommentar


      • #4
        Das Suchen an sich ist auch nicht wirklich das Problem. Das Suchen ist eine einfache select-Abfrage.

        Eigeninitiative ist gegeben ;-) sitze an dem Mist jetzt schon 4 Wochen. Das ist das letzte was mir in meinem Projekt fehlt... Schulaufgaben sind es nicht... was würde da gegen sprechen, wenn es welche wären? Lernen müßte ich es trotzdem...

        aber back to the roots... Mein einfaches Problem ist, das ich verschiedene Variablen an ein weiteres Skript übergebe... z.b.

        $von="2003-07-21 08:00:00"
        $bearbeiter="Müller";
        $bereich="FKFW3";
        $betrieb="Stützpunkt";
        $nachfa="1";

        die Abfrage
        PHP-Code:
        "SELECT * FROM eintraege WHERE 
        bearbeiter LIKE '%
        $bearbeiter%' AND 
        bereich LIKE '%
        $bereich%' AND
        betrieb LIKE '%
        $betrieb%' AND
        nachfa == '
        $nachfa' AND
        von == '
        $von'
        ORDER BY von ASC"

        ist auch nicht das Problem. Ich möchte nur wissen wie ich vorher abfragen kann, welche Variablen gegeben sind um dann den SELECT Befehl auf zu bauen. Ich könnte ja entweder nach Bearbeiter suchen, oder Bearbeiter und Betrieb verknüpfen... usw.

        Es wäre schön hier eine Antwort zu finden.

        Gruß
        Chronos

        Kommentar


        • #5
          Original geschrieben von Chronos
          Ich möchte nur wissen wie ich vorher abfragen kann, welche Variablen gegeben sind
          dafür sollte sich if in kombination mit isset() und empty() ganz gut eigenen ...
          um dann den SELECT Befehl auf zu bauen.
          das sind ja dann nur noch stringoperationen in abhängigkeit der mit if durchgeführten prüfungen.
          I don't believe in rebirth. Actually, I never did in my whole lives.

          Kommentar


          • #6
            Original geschrieben von TobiaZ
            Unter Eigeninitiative wird übrigends auch das SUCHEN in diesem Forum gezählt.
            Danke, danke, du kannst mir glauben, dass habe ich schon getan. Sollte ich nicht den richtigen Suchbegriff gefunden haben und dieses Problem wirklich schon mehrfach besprochen worden sein, muß ich mich entschuldigen. Aber immerhin ist dies ja ein Forum, von dem ich glaube das es sehr gut ist. Doppelte Fragen hat man immer und überall... oder nicht?

            Kommentar


            • #7
              Jupp, aber genau das ist ja eigentlich überflüssig.

              Und ich glaube nicht, dass man unter "Suchen Mysql" nichts findet.

              Kommentar


              • #8
                habe heute auch den ganzen tag damit verbracht mir eine Suchfunktion zu<br> basteln. nach langem lesen und surfen durch diverse boards, habe ich das hier auf die beine gestellt:

                am anfang der datei solltest du noch die configdaten für mysql includen
                PHP-Code:
                include("./include/config.inc.php");

                // und das sollte drin stehen
                $link mysql_connect(db_server,db_user,db_pass);
                    if(!
                $link)
                        die (
                "Keine Verbindung zu MySQL");
                    
                mysql_select_db(logbuch,$link)
                        or die (
                "Keine Verbindung zur Datenbank \"$db_name\": ".mysql_error() ); 
                PHP-Code:
                <form name="form1" method="post" action="./index.php?links=suche"> // link zu deinem suchscript
                  <input name="eingabe" type="text" id="eingabe">
                  <input type="submit" name="Suchen" value="Suchen">
                </form>

                <? 

                $limit = 10;
                if ($page == 0) $page=1;  
                $spalte = $_POST['eingabe'];
                if ( empty($spalte)){
                     echo "<h1 align=\"center\">bitte Suchbegriff eingetragen</h1><br><br><br>\n";}
                    else { 
                          $sqlab  = "SELECT * FROM eintraege where bearbeiter like '%$spalte%' OR bereich like '%$spalte%' OR betrieb like '%$spalte%' ORDER BY bereich LIMIT ".($page-1)*$limit.",".$limit;
                $result_articles = mysql_query ($sqlab,$link);    
                list($sql_num,) = split("LIMIT",$sqlab);
                $result_num = mysql_query ($sql_num,$link); 
                $num = mysql_num_rows($result_num); 

                echo "
                <table border=0>
                <tr>
                <td>&nbsp;</td>
                <td><b>Bei der Suche nach <font color=red><b>$spalte</b></font> wurden
                <font color=red><b>$num</b></font> Einträge gefunden</b><p></td>
                </tr>
                </table>
                "; 

                if ($num==0) echo "<b>keine passenden Datensätze gefunden</b>"; 

                while ($daten=mysql_fetch_array($result_articles))
                 {
                ?>
                <table width="452" height="18" border="0" cellpadding="0" cellspacing="0" bgcolor="#666666">
                  <tr> 
                    <td width="145" height="4" valign="middle"><div align="center"><font color="#FFFFFF" size="1" face="Arial">Bearbeiter</font></div>
                      <div align="center"><font color="#FFFFFF" size="1" face="Arial"></font></div>
                      </td>
                    <td width="173" height="4" valign="middle"> <div align="center"><font color="#FFFFFF" size="1" face="Arial">Bereich</font></div>
                      <div align="center"></div>
                      <div align="right"></div></td>
                    <td width="134" height="4" valign="middle"><div align="center"><font color="#FFFFFF" size="1" face="Arial">Betrieb</font></div></td>
                  </tr>
                  <tr> 
                    <td height="4" valign="middle"><div align="center"><font color="#FFFFFF" size="1" face="Arial"><strong><? echo $daten[bearbeiter]; ?></strong></font></div></td>
                    <td height="4" valign="middle"><div align="center"><font color="#FFFFFF" size="1" face="Arial"><strong><? echo $daten[bereich]; ?></strong></font></div></td>
                    <td valign="middle"><div align="center"><font color="#FFFFFF" size="1" face="Arial"><strong><? echo $daten[betrieb]; ?></strong></font></div></td>
                  </tr>
                </table><? }
                 if ($num > 0)
                 {
                  echo ceil($num/$limit);
                  if (ceil($num/$limit) == 1) echo " Seite";
                   else echo " Seiten";
                  echo "<br><br>";
                  if ($page > 1)
                   echo "<a href=\"$PHP_SELF?page=".($page-1)."&spalte=".rawurlencode($spalte)."\">vorherige</a> &nbsp;";
                  if ($page < $num/$limit && $num > $num/$limit)
                   echo " <a href=\"$PHP_SELF?page=".($page+1)."&spalte=".rawurlencode($spalte)."\">nächste</a> &nbsp;";
                  echo "<br>";
                  for ($i=1;$i<$num/$limit+1 and $num/$limit > 1;++$i)
                   {
                    if ($page == $i) echo "<b>[$i]</b> &nbsp;";
                     else echo "<a href=\"$PHP_SELF?page=$i\">$i</a> &nbsp;";
                   }
                 }
                }
                mysql_close($link); 
                ?>

                damit solltest du es hinkriegen, wie du vielleicht bemerkt hast
                habe ich deine tabellen schon eingetragen. brauchst einfach nur noch deine mysql daten eintragen und ab geht es.


                bin wieder viel zu gut heute nicht schimpfen

                Kommentar


                • #9
                  Danke @römer,

                  ich werde es morgen früh direkt mal ausprobieren...

                  Gruß

                  Chronos

                  Kommentar


                  • #10
                    Original geschrieben von römer
                    habe heute auch den ganzen tag damit verbracht mir eine Suchfunktion zu<br> basteln.
                    da du formulareingaben ungeprüft in die query übernimmst, musst du wahrscheinlich eines tages wirklich nach deiner datenbank suchen *g*
                    I don't believe in rebirth. Actually, I never did in my whole lives.

                    Kommentar


                    • #11
                      Original geschrieben von wahsaga
                      da du formulareingaben ungeprüft in die query übernimmst, musst du wahrscheinlich eines tages wirklich nach deiner datenbank suchen *g*
                      Hmm, erkläre mir bitte, wo da das Problem liegen würde.

                      Kommentar


                      • #12
                        Okay...

                        ich habe mir dein Skript mal angeguckt. Danke übrigens. Aber leider ist mir noch nicht ganz geholfen. Ich habe zum suchen z.B. folgendes vereinfachtes Formular:

                        PHP-Code:
                        <form name="form" method="post" action="">
                          <
                        p
                            <
                        input name="bearbeiter" type="text" id="bearbeiter">
                            
                        Bearbeiter</p>
                          <
                        p
                            <
                        input name="bereich" type="text" id="bereich">
                            
                        Bereich </p>
                          <
                        p
                            <
                        input name="betrieb" type="text" id="betrieb">
                            
                        Betrieb </p>
                          <
                        p
                            <
                        input name="stoerungfe" type="checkbox" id="stoerungfe" value="checkbox">
                            
                        St&ouml;rung FE</p>
                          <
                        p>
                            <
                        input type="submit" name="Submit" value="Suchen">
                          </
                        p>
                          </
                        form
                        Wenn ich nun auf suchen Klicke müßte mein Skript überprüfen, welche Variablen gesetzt sind, und dann den

                        PHP-Code:
                        SELECT FROM eintraege WHERE 
                        bearbeiter LIKE 
                        '%$bearbeiter%' AND 
                        bereich LIKE '%$bereich%' AND
                        betrieb LIKE '%$betrieb%' AND
                        nachfa == '$nachfa' AND
                        von == '$von'
                        ORDER BY von ASC 
                        SQL Befehl zusammen setzen. Aber ich bastel auch noch mal weiter ;-)

                        Trotzdem vielen Dank

                        Chronos
                        Zuletzt geändert von Chronos; 22.07.2003, 10:07.

                        Kommentar


                        • #13
                          Okay

                          Ich habe mir jetzt hiermit beholfen...
                          PHP-Code:
                          <?php

                          $werksbereich
                          ="KW1";
                          $betrieb="HGL2";
                          $bearbeiter="";

                          echo 
                          "werksbereich= ".$werksbereich;
                          echo 
                          "<br>";
                          echo 
                          "betrieb= ".$betrieb;
                          echo 
                          "<br>";
                          echo 
                          "bearbeiter= ".$bearbeiter;

                          $i=0;

                          if (
                          $werksbereich)
                            {
                            
                          $abfrage[$i] = "werksbereich LIKE '%".$werksbereich."%'";
                            
                          $i++;
                            };

                          if (
                          $betrieb)
                            {
                            
                          $abfrage[$i] = "berieb LIKE '%".$betrieb."%'";
                            
                          $i++;
                            };

                          if (
                          $bearbeiter)
                            {
                            
                          $abfrage[$i] = "bearbeiter LIKE '%".$bearbeiter."%'";;
                            
                          $i++;
                            };

                          echo
                          "<br><br>";

                          $sql="SELECT * FROM eintraege WHERE ";

                          $ausgabe sizeof($abfrage);
                          for(
                          $count=0$count $ausgabe$count++)
                          {
                          if (
                          $count $ausgabe-1$sql $sql." ".$abfrage[$count]." AND ";
                          else 
                          $sql $sql." ".$abfrage[$count];
                          }

                          $sql $sql." ORDER BY avon ASC";
                          echo 
                          $sql;
                          ?>
                          Geht das auch irgendwie einfacher ???

                          Chronos

                          Kommentar


                          • #14
                            Original geschrieben von Chronos
                            Hmm, erkläre mir bitte, wo da das Problem liegen würde.
                            sieh dir unter websecurity den obersten beitrag an.
                            I don't believe in rebirth. Actually, I never did in my whole lives.

                            Kommentar

                            Lädt...
                            X