auslesen in php seite mit Suchfunktion

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

  • auslesen in php seite mit Suchfunktion

    [COLOR="red"]Habs mir so vorgestellt: [COLOR="orange"]2 Dateien[/COLOR] befinden sich auf dem Server ([COLOR="orange"]test.htm / auslesen.php[/COLOR]) wobei *.htm meine Daten beinhaltet. Jetzt möchte ich auf der php. Seite die Daten auslesen mittels eines Suchfeldes.[/COLOR]

    *.htm (beinhaltet Tabelle)


    [COLOR="red"]Die test.htm beinhaltet Daten ([COLOR="grey"]ID | Name | Vorname | Telefonnummer | E-Mail[/COLOR]) welche auf der Seite "auslesen.php" anhand eines Suchfeldes ausgelesen werden soll. Die php-Seite hab ich mal nachfolgend probiert.[/COLOR]
    Die 2 Dateien befinden sich im gleichen Verzeichnis. Wenn ich jetzt im Suchfeld "He" eingebe soll er alles was er bei der Auswahl "Name" findet auf der PHP-Seite ausgeben einschließlich der anderen Daten (Vorname | Telefon ...)

    PHP-Seite-(siehe Dateianhang - das kommt vom Code heraus)


    Kann man den Code so machen? Was fehlt da noch? Bin für jede Hilfe dankbar!
    --------------------------------------------------------------------
    [COLOR="orange"]<!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">[/COLOR]
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>Unbenanntes Dokument</title>
    </head>

    <body>
    <form action="test.htm" method="post" >
    <table width="100%" border="0" bgcolor="#E5E5E5">
    <tbody>
    <tr>
    <td width="170">
    <font face="Arial">
    <span style="font-size:10pt;">Suchtext:</span>
    </font>
    </td>
    <td width="165">
    <font face="Arial">
    <span style="font-size:10pt;">Suche in:</span>
    </font>
    </td>
    <td width="619">
    <font face="Arial">
    <span style="font-size:10pt;">Suchtyp:</span>
    </font>
    </td>
    </tr>
    <tr>
    <td>
    <input size="25" name="suchtext">
    </td>
    <td>
    <select name="suchfeld">
    <option value="[COLOR="grey"]ID[/COLOR]">ID</option>
    <option value="[COLOR="grey"]Name[/COLOR]">Name</option>
    <option value="[COLOR="grey"]Vorname[/COLOR]">Vorname</option>
    <option value="[COLOR="grey"]Telefon[/COLOR]">Telefon</option>
    <option value="[COLOR="grey"]E-Mail[/COLOR]">E-Mail</option>
    <option selected="" value="Name">Name</option>
    </select>
    </td>
    <td width="619">
    <select name="suchtyp">
    <option value="0">exakte Schreibweise</option>
    <option selected="" value="1">Teil eines Wortes/einer Zahl</option>
    </select>
    </td>
    </tr>
    <tr>
    <td width="1079" colspan="3">
    <input type="submit" style="font-family:Arial,sans-serif; font-style:normal; font-weight:normal; font-size:10pt;" value="Anfrage senden">
    <input type="reset" value="Zurücksetzen" name="Reset">
    </td>
    </tr>
    </tbody>
    </table>
    Angehängte Dateien
    Zuletzt geändert von cypersand; 27.10.2012, 11:32.

  • #2
    HTML-Code:
    <form action="auslesen.php" method="post" >
    PHP-Code:
    print_r($_POST); 
    Ansonsten erst mal ein paar Grundlagen-Tutorials lesen.

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

    Kommentar


    • #3
      Meinst du so:
      [COLOR="red"]Form Action wäre "test.htm" oder?? weil da ja die Daten drin wären.[/COLOR]

      In der php Seite "auslesen.php" soll dann benutzt werden um die Daten zu suchen und da auszugeben. Mein Ansatz war ja der nachfolgende ...

      ---------------------"auslesen.php"------------------
      PHP-Code:
      <!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
       <
      meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 
       <
      title>auslesen.php</title
       </
      head

       <
      body
       <
      form action="test.db" method="post" 
       <
      table width="100%" border="0" bgcolor="#E5E5E5"
       <
      tbody
       <
      tr
       <
      td width="170"
       <
      font face="Arial"
       <
      span style="font-size:10pt;">Suchtext:</span
       </
      font
       </
      td
       <
      td width="165"
       <
      font face="Arial"
       <
      span style="font-size:10pt;">Suche in:</span
       </
      font
       </
      td
       <
      td width="619"
       <
      font face="Arial"
       <
      span style="font-size:10pt;">Suchtyp:</span
       </
      font
       </
      td
       </
      tr
       <
      tr
       <
      td
       <
      input size="25" name="suchtext"
       </
      td
       <
      td
       <
      select name="suchfeld"
       <
      option value="ID">ID</option
       <
      option value="Name">Name</option
       <
      option value="Vorname">Vorname</option
       <
      option value="Telefon">Telefon</option
       <
      option value="E-Mail">E-Mail</option
       <
      option selected="" value="Name">Name</option
       </
      select
       </
      td
       <
      td width="619"
       <
      select name="suchtyp"
       <
      option value="0">exakte Schreibweise</option
       <
      option selected="" value="1">Teil eines Wortes/einer Zahl</option
       </
      select
       </
      td
       </
      tr
       <
      tr
       <
      td width="1079" colspan="3"
       <
      input type="submit" style="font-family:Arial,sans-serif; font-style:normal; font-weight:normal; font-size:10pt;" value="Anfrage senden"
       <
      input type="reset" value="Zurücksetzen" name="Reset"
       </
      td
       </
      tr
       </
      tbody
       </
      table
      Es soll dann so als Suche benutzt werden.
      Wenn ich z.B. Suchtext:"Mül" eingebe soll in Verbindung mit dem selektierten Auswahl-Feld "Namen" nach den Buchstaben "And" suchen und jede Person auf der PHP-Seite Auflisten die er in der Spalte Namen findet. Einschließlich einer Auflistung der anderen Felder.

      Das Ergebnis soll dann so ungefähr aussehen:


      ID | Name | Vorname | Telefon | E-Mail
      1 Müller Bernd 0161/666665 Bernd@t-online.de
      2 Müller Miriam 0152/4632525 Miriam@web.de

      Kommentar


      • #4
        Sorry, aber das ist elementares(!) Grundlagenwissen. So lange du das nicht beherrschst, müssten wir dir deinen Code komplett selber programmieren. Und das wird keiner hier tun.

        Darum noch mal ein wenig Lesestoff:
        PHP - Einleitung
        Tutorials - PHP/MySQL - Übersicht

        Und das solltest du dir zu Gemüte führen. Denn wenn du nicht die Basics begreifst, ist alles andere sinnlos.

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

        Kommentar


        • #5
          Hi cypersand,
          Zitat von cypersand Beitrag anzeigen
          Kann man den Code so machen? Was fehlt da noch?
          Ich würde sagen: Wenn deine Daten tatsächlich in einer Datei stehen, fehlt da ein bißchen PHP-Code.
          Nur weil du in der Datei auslesen.php im Formular bei action= die Seite test.htm angibst, heißt das nicht, dass das von alleine geht.

          Zum zweiten: Wenn man Daten aus einer Datei ausgibt/einliest, nimmt man üblicherweise eine so genannte CSV-Datei.
          Jeder Datensatz steht in einer Zeile, die Felder werden durch ein Zeichen getrennt, Beispiel . . .
          CSV-Datei daten.csv:
          ID,Name,Vorname,Telefon,Mail
          1,Müller,Bernd,0161/666665,Bernd@t-online.de
          2,Müller,Miriam,0152/4632525,Miriam@web.de
          3,Schmitz,Heiner,0172/4632525,heiner.schmitz@hschmitz.net

          Da Peter dich schon zweimal auf Grundlagen hingewiesen hat, sende ich dir zum Lernen ein "kleines" Script, das Datensätze in einer CSV-Datei
          sucht und bei Fund in einer Tabelle ausgibt. "Klein", weil das Script nur das Nötigste enthält.
          Erläuterungen zu den verwendeten Funktionen findest du hier:
          PHP: Arrays - Manual
          PHP: String-Funktionen - Manual
          PHP: Dateisystem - Manual
          PHP-Code:
          <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
          <html>
          <head>
          <title>Suchen in einer CSV-Datei</title>
          </head>
          <body>
          <?php
          if(isset($_POST['cmd'])){
           
          $file='daten.csv';
           
          $f=fopen($file,'r');
           
          //Die erste Zeile (Tabellenköpfe, siehe oben) einlesen
           //Die Funktion fgetcsv generiert anhand des Trennzeichens ein Array
           
          $head_line=fgetcsv($f);
           
          //In der while-Schleife werden die Datensätze gelesen
           //Die Funktion array_combine($array, $array) verwendet die Werte des ersten Arrays ($head_line) als Schlüssel,
           //die Werte des zweiten Arrays werden "als Werte" übernommen. Die Rückgabe der Funktion ist dann ein assoziatives
           //Array (Schlüsselname => Wert), dessen Elemente sich durch Namen => Value des gesendeten select-Tags
           //ansprechen lassen. Vorausgesetzt, die Namen der Tabellenköpfe stimmen mit den Value-Werten des select-Tags überein
           //siehe CSV-Datei Formular
           
          while($line=fgetcsv($f)){
            
          $data_arr[]=array_combine($head_line,$line);
           }
           
          fclose($f);
            echo 
          '<h4>Ihre Suche nach "'.$_POST['suchtext'].'" in "'.$_POST['suchfeld'].'" brachte folgende Ergebnisse: </h4>';
            echo 
          '<table border="1">';
            echo 
          '<tr><th>';
            echo 
          implode('<th>'$head_line);
            echo 
          '</tr>';
           
          // Suchen
           
          foreach($data_arr as $data){
            
          // Suchtyp Wortteil
            
          if($_POST['suchtyp'] == 2){
             if(
          stripos($data[$_POST['suchfeld']], $_POST['suchtext']) !== false){
              echo 
          '<tr><td>';
               echo 
          implode('<td>'$data);
              echo 
          '</tr>';
             }
            }
            
          // Suchtyp Wortteil Ende
            // Suchtyp exakt
            
          if($_POST['suchtyp'] == 1){
             if(
          strcmp(strtolower($data[$_POST['suchfeld']]),strtolower($_POST['suchtext']))==0){
              echo 
          '<tr><td>';
               echo 
          implode('<td>'$data);
              echo 
          '</tr>';
             }
            }
            
          // Suchtyp exakt Emde
           // Suchen Ende
           
          }
           echo 
          '</table>';
          }
          ?>
          <form action="" method="post">
          <table border="1">
          <tr>
          <td>Suchbegriff</td>
          <td>Suchen in</td>
          <td>Suchtyp</td>
          </tr>
          <tr>
          <td>
          <input type="text" size="25" name="suchtext">
          </td>
          <td>
          <select name="suchfeld">
          <option value="ID">ID</option>
          <option value="Name" selected>Name</option>
          <option value="Vorname">Vorname</option>
          <option value="Telefon">Telefon</option>
          <option value="Mail">Mail</option>
          </select>
          </td>
          <td>
          <select name="suchtyp">
          <option value="1">Exakte Schreibweise</option>
          <option selected="" value="2">Teil eines Wortes/einer Zahl</option>
          </select>
          </td>
          </tr>
          <tr>
          <td colspan="3">
          <input type="submit" name="cmd" value="Anfrage senden"/>
          <input type="reset" name="cmd_reset" value="Zurücksetzen">
          </td>
          </tr>
          </table>
          </form>
          </body>
          </html>
          Gruß
          Günni

          Kommentar


          • #6
            Günni du bist super!!! CSV ist genau das richtige!

            Sowas in der Richtung mein ich. Habs probiert, es zeigt aber nur die 1. Zeile der *.CSV-Datei an. Muss ich irgendwie eine Wiederholung (Schleife?) reinmachen???
            Zuletzt geändert von cypersand; 05.11.2012, 17:32.

            Kommentar


            • #7
              Hi cypersand,
              Zitat von cypersand Beitrag anzeigen
              Günni du bist super!!! CSV ist genau das richtige!
              Sowas in der Richtung mein ich. Habs probiert, es zeigt aber nur die 1. Zeile der *.CSV-Datei an.
              Muss ich irgendwie eine Wiederholung (Schleife?) reinmachen???
              Nee, die Datei wird komplett gelesen, und die Zeilen werden als Arrays in einem Array abgelegt.
              Gib' mal nach der Zeile fclose($f); das Array $data_arr aus:
              PHP-Code:
              echo '<pre>';
                
              print_r($data_arr);
              echo 
              '</pre>'
              Ausgabe sollte dann etwa so sein:
              Array
              (
              [0] => Array
              (
              [ID] => 1
              [Name] => Müller
              [Vorname] => Bernd
              [Telefon] => 0161/666665
              [Mail] => Bernd@t-online.de
              )
              [1] => Array
              (
              [ID] => 2
              [Name] => Müller
              [Vorname] => Miriam
              [Telefon] => 0152/4632525
              [Mail] => Miriam@web.de
              )
              . . . usw..
              )
              Damit du die Elemente mit der select-Box ansprechen kannst . . .
              PHP-Code:
              foreach($data_arr as $data){ //$data ist ein Array
                // Suchtyp Wortteil
                
              if($_POST['suchtyp'] == 2){
                 if(
              stripos($data[$_POST['suchfeld']], $_POST['suchtext']) !== false){ // <-- siehe hier: $data[$_POST['suchfeld']]
                   
              echo '<tr><td>';
                    echo 
              implode('<td>'$data);
                   echo 
              '</tr>';
                 }

              . . . müssen die value-Werte in der select-Box natürlich mit den Schlüsselfeldern der Arrays übereinstimmen:
              HTML-Code:
              <select name="suchfeld">
              <option value="ID">ID</option>
              <option value="Name" selected>Name</option>
              <option value="Vorname">Vorname</option>
              <option value="Telefon">Telefon</option>
              <option value="Mail">Mail</option>
              </select>
              Wenn du als Suchbegriff z.B. nur einen Buchstaben eingibst, erscheint dann folg. Zeile:
              Ihre Suche nach "m" in "Name" brachte folgende Ergebnisse:

              Erklär' doch erst mal bitte, was du probiert hast.
              Gruß
              Günni

              Kommentar


              • #8
                Ich habe Günni,s Vorschlag 1zu1 probiert, und es klappt zu 100 %

                Man könnte die SELECT-Felder auch via FOREACH aus dem ARRAY $head_line nehmen,
                um auf der sicheren Seite zu sein
                Zuletzt geändert von Wasser_Wanderer; 07.11.2012, 19:06.

                Kommentar


                • #9
                  Hi Wasser_Wanderer,
                  Zitat von Wasser_Wanderer Beitrag anzeigen
                  Ich habe Günni,s Vorschlag 1zu1 probiert, und es klappt zu 100 %
                  Man könnte die SELECT-Felder auch via FOREACH aus dem ARRAY $head_line nehmen,
                  um auf der sicheren Seite zu sein
                  Hier nicht . . . . Die Variable $head_line wird ja erst nach Absenden des Formulars initialisiert :-)

                  Aber trotzdem, guter Vorschlag:
                  Vor der Ausgabe des Formulars liest man die erste Zeile einer CSV-Datei (sofern die erste Zeile die Spaltennamen enthält,
                  bzw. welche man auch nachträglich ergänzen könnte), und könnte so ein Formular entwerfen, das universell auf jede CSV-Datei passt,
                  unabhängig von der Spaltenzahl der Datei.

                  Gruß
                  Günni

                  Kommentar


                  • #10
                    Zitat von Guenni61 Beitrag anzeigen
                    Hier nicht . . . . Die Variable $head_line wird ja erst nach Absenden des Formulars initialisiert :-)
                    Richtig :-)

                    Aber dein Ansatz war schon suppi Günnie

                    Kommentar

                    Lädt...
                    X