Daten nicht nur auslesen sondern auch durchsuchen

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

  • Daten nicht nur auslesen sondern auch durchsuchen

    Hallo phplerInnen
    wie ich meine gesamten Daten aus der MySQL-DB auslese, habe ich mittlerweilen verstanden. Doch was tun, wenn ich gewisse Daten suche?
    Ich möchte ein Suchformular auf einer Website implementieren, welches den UserInnen die Möglichkeit bietet, die Adressdatenbank zu durchsuchen.
    Wie muss ich folgenden Code ändern, damit das Suchformular nicht einfach alle Daten auflistet, sondern wirklich nur diejenigen zurückgibt, die ich im Suchfeld eingegeben habe?

    $abfrage="SELECT anz_id,Organisation,PLZ,Ort,E_Mail FROM anzeigen ORDER BY Organisation ASC";

    und

    while(list($anz_id,$Organisation,$PLZ,$Ort,$E_Mail
    )=mysql_fetch_row($ergebnis)) {

    echo "<tr align=center>";
    echo "<td align=left><font color=#000000 face=verdana size= 2>$Organisation</font></td>";
    echo "<td align=left><font color=#000000 face=verdana size=-2>$PLZ</font></td>";
    echo "<td align=left><font color=#000000 face=verdana size=-2>$Ort</font></td>";
    echo "<td align=left><font color=#000000 face=verdana size=-2>$E_Mail</font></td>";
    echo "</tr>";
    }


    DANKE FÜR DIE HILFE!
    femjava

  • #2
    http://www.mysql.com/doc/S/E/SELECT.html
    carpe noctem

    [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
    [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

    Kommentar


    • #3
      Lösungsvorschlag

      Natürlich kann ich Dir keine Komplettlösung bieten ... allerdings habe ich einen Lösungsvorschlag.
      Ich würde unter Verwendung von Sessions 'ne Kombination aus 2 Scripten und einer Include-Datei machen:
      (Allerdings wiedermal nicht getestet da ich Deine DB nicht habe)

      1. search.php

      PHP-Code:
      <?php
      ini_set
      ("session.use_cookies"0);
      ini_set("session.use_trans_sid"1);
      session_start();
      if ( !isset(
      $HTTP_GET_VARS[session_name()]) ) {
          
      header("Location: $PHP_SELF?".session_name()."=".session_id());
      } else {
          require_once(
      "organisation.inc.php");
      ?>
      <html>
          <head>
              <title>Suchen</title>
          </head>
          <body>
              <form name="frmSearch" action="send.php" method="post">
      <?php if ( isset($HTTP_SESSION_VARS["search_errors"]["--"]) ) { /* Allgemeine Fehlermeldungen */ ?>
                      <tr>
                          <td colspan="2"><?=$HTTP_SESSION_VARS["search_errors"]["--"]?></td>
                      </tr>
      <?php ?>
                  <table width="100%">
      <?php foreach ( $infOrganisation AS $field ) { ?>
                      <tr>
                          <td width="20%"><label for="<?=$field["input"]?>"><?=$field["label"]?></label></td>
                          <td width="80%"><input id="<?=$field["input"]?>" name="<?=$field["input"]?>"<?php 
                          
      if ( isset($HTTP_SESSION_VARS["search_form"][$field["input"]]) ) echo " value=\"".$HTTP_SESSION_VARS["search_form"][$field["input"]]."\""; if ( isset($field["maxlength"]) ) echo " maxlength=\"".$field["maxlength"]."\""; if ( isset($field["size"]) ) echo " size=\"".$field["size"]."\""; else if ( isset($field["maxlength"]) ) echo " size=\"".$field["size"]."\""?> /></td>
                      </tr>
      <?php if ( isset($HTTP_SESSION_VARS["search_errors"][$field["input"]]) ) { /* Fehlermeldungen für ein einzelnes Feld */ ?>
                      <tr>
                          <td colspan="2"><?=$HTTP_SESSION_VARS["search_errors"][$field["input"]]?></td>
                      </tr>
      <?php ?>
      <?php 
      ?>
                      <tr>
                          <td colspan="2"><input type="submit" value="suchen" /></td>
                      </tr>
                  </table>
              </form>
      <?php if ( isset($HTTP_SESSION_VARS["search_results"]) && count($HTTP_SESSION_VARS["search_results"]) ) { ?>
              <br />
              <table width="100%">
                  <tr>
      <?php foreach ( $infOrganisation AS $field ) { ?>
                      <th<?php if ( isset($field["colwidth"]) ) echo " width=\"".$field["colwidth"]."\""?>><?=$field["label"]?></th>
      <?php ?>
                  </tr>
      <?php    foreach ( $HTTP_SESSION_VARS["search_results"] AS $value ) { ?>
                  <tr>
      <?php foreach ( $infOrganisation AS $key=>$field ) { ?>
                      <td><?=$value[$key]?></td>
      <?php ?>
                  </tr>
      <?php ?>            
              </table>
      <?php ?>
          </body>
      </html>
      <?php ?>

      2. send.php:

      PHP-Code:
      <?php
      require_once("organisation.inc.php");
      ini_set("session.use_cookies"0);
      ini_set("session.use_trans_sid"1);
      session_start();

      define("MAX_RESULTS"20);

      if ( !
      session_is_registered("search_form") ) session_register("search_form");
      $search_form=$HTTP_POST_VARS;
      if ( !
      session_is_registered("search_errors") ) session_register("search_errors");
      $search_errors=array();
      if ( !
      session_is_registered("search_records") ) session_register("search_records");
      $search_records=0;
      if ( !
      session_is_registered("search_results") ) session_register("search_results");
      $search_results=array();

      if ( 
      count($search_errors)==&& @mysql_connect() && mysql_select_db("datenbank") ) {
          
      $where="";
          foreach ( 
      $infOrganisation AS $key=>$field ) {
              if ( isset(
      $HTTP_POST_VARS[$field["input"]]) && trim($HTTP_POST_VARS[$field["input"]])!="" 
                  
      $where.=( $where=="" "" " AND " ).$key.( $field["like"] ? " LIKE '%".$HTTP_POST_VARS[$field["input"]]."%'" " = '".$HTTP_POST_VARS[$field["input"]]."'" );
          }
          
      $stat="SELECT COUNT(*) FROM anzeigen".( $where=="" "" " WHERE $where);
          if ( 
      $cres=mysql_query($stat) ) {
              if ( list(
      $search_records)=mysql_fetch_assoc($cres) ) {
                  
      $search_records=1;
                  if ( 
      $search_records==$search_errors["--"]="Es wurde kein passender Datensatz gefunden!";
                  else if ( 
      $search_records>MAX_RESULTS $search_errors["--"]="Es wurden mehr als ".MAX_RESULTS." ($counted) Datensätze gefunden. Bitte schränken Sie weiter ein!";
                  else {
                      
      $stat="SELECT anz_id,Organisation,PLZ,Ort,E_Mail FROM anzeigen".( $where=="" "" " WHERE $where)." ORDER BY Organisation ASC";
                      if ( 
      $res=mysql_query($stat) ) {
                          while ( 
      $row=mysql_fetch_assoc($res) ) {
                              
      $row=array("anz_id"=>"1""Organisation"=>"Lippe-Net""PLZ"=>"33609""Ort"=>"Bielefeld""E_Mail"=>"hans@wurst.de");
                              
      $search_results[]=$row;
                          }
                          
      mysql_free_result($res);
                          
      $search_records=mysql_num_rows($res);
                      } else echo 
      "ERROR[".mysql_errno()."] ".mysql_error()."<br />$stat<br />\n";
                  }
              }
              
      mysql_free_result($cres);
          } else echo 
      "ERROR[".mysql_errno()."] ".mysql_error()."<br />$stat<br />\n";
      } else echo 
      "Datenbank Verbindung fehlgeschlagen!";
      header("Location: $HTTP_REFERER");
      ?>
      3. organisation.inc.php
      PHP-Code:
      <?php
      $infOrganisation
      =array(
          
      "Organisation"=>array("input"=>"txtOrganisation""label"=>"Organisation""colwidth"=>"35%""like"=>TRUE),
          
      "PLZ"=>array("input"=>"txtPlz""label"=>"Plz""maxlength"=>7"size"=>7"colwidth"=>"10%""like"=>TRUE),
          
      "Ort"=>array("input"=>"txtOrt""label"=>"Ort""colwidth"=>"20%""like"=>TRUE),
          
      "E_Mail"=>array("input"=>"txtEMail""label"=>"EMail""colwidth"=>"35%""like"=>TRUE));
      ?>
      carpe noctem

      [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
      [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

      Kommentar


      • #4
        vielen herzlichen Dank für diese grosse Hilfe!!! Mit Spannung werde ich Deinen Code testen und Dir Bescheid geben, obs geklappt hat.
        Einen schönen Tag wünsch ich noch, mit lieben Grüssen
        femjava


        PS: eigentlich wollte ich Dir noch eine private Mail schreiben, habe
        aber gesehen, dass Du den Maillink deaktivert hast. Also frage ich
        von hier aus: ich bin fasziniert von den php-Foren und staune
        immer wieder, wie oft und wie ausführlich viele der Fragen
        beantwortet werden (ich selber bin ja eine totale Newbie). Gleichzeitig frage ich mich, woher die Leute die Zeit nehmen,
        diese Fragen zu beantworten: Wie ist das bei Dir? Wirst Du dafür
        bezahlt? Und: wie wird mann und frau zu einem solchen
        Experten? Hast Du Dein Wissen via Studium erworben? Oder hast Du Bücher/Online-Infos, die Du im Selbststudium gelesen hast?
        Zuletzt geändert von Aroree; 24.05.2002, 10:57.

        Kommentar


        • #5
          ... eigentlich ist's nicht deaktiviert ...

          Nein ... bezahlt werde ich dafür natürlich nicht ... .

          Ich habe mit 12 mein erstes Programm geschrieben ... damals noch in Basic ... spater Assembler ... Pascal und C(++) ... dann mal wieder Basic (diesesmal Visual) ... auf PHP bin ich seit den Anfängen von PHP/FI ... nebenbei noch etwas C(++).
          Seit ich 18 bin mache ich das ganze professionell als Software-Entwickler ... heute bin ich 32 ... fast 33 ... da kommt schon etwas an Erfahrung zusammen ...

          Ausserdem bin ich Schwerpunktinformatiker in meinem Studiengang.
          Zuletzt geändert von goth; 24.05.2002, 11:00.
          carpe noctem

          [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
          [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

          Kommentar


          • #6
            hmm,

            was ist ein Schwerpunktinformatiker ??

            Kommentar


            • #7
              @fem zwischendurch ein Zeilenumbruch macht deinen Text leichter lesbar

              dann muß man net soviel scrollen...

              Kommentar


              • #8

                Studiengang Wirtschaftswissenschaften ... Studienschwerpunkt Informatik ... also nur 'n halber ...
                carpe noctem

                [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
                [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

                Kommentar


                • #9
                  Danke für Deine Werdegang-Infos... Hab selber auch mal studiert (Informatik im Nebenfach...) und überlege mir, ein Informatik-Nachdiplom zu machen (ETH Zürich), weil mir die ganze Theorie von damals an der Uni nicht viel gebracht hat.

                  Deinen Code habe ich übrigens getestet und komme an gewissen Stellen nicht weiter (liegt bestimmt nicht an Deinem Code). Wenn ich Datei search.php aufrufe erscheinen zunächst Fehlermeldungen

                  --> über der Formularausgabe erscheint:

                  Warning: open(/tmp\sess_8f5e65d3be2a24eca4473e93bb33ecf9, O_RDWR) failed: No such file or directory (2) in C:\Inetpub\wwwroot\myadmin\b\search.php on line 4
                  ---------------------

                  --> unter der Formularausgabe:

                  Warning: open(/tmp\sess_8f5e65d3be2a24eca4473e93bb33ecf9, O_RDWR) failed: No such file or directory (2) in Unknown on line 0

                  Warning: Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/tmp) in Unknown on line 0
                  ------------------------------------------------------------------------------

                  Wenn ich dann eine Eingabe mache, erscheint beim Absenden:

                  You are not authorized to view this page
                  You might not have permission to view this directory or page using the credentials you supplied.


                  If you believe you should be able to view this directory or page, please try to contact the Web site by using any e-mail address or phone number that may be listed on the localhost home page.

                  You can click Search to look for information on the Internet.

                  HTTP Error 403 - Forbidden
                  Internet Explorer

                  ------------------------------------------------------------------------------

                  Und dies, obwohl ich die entsprechenden Dateien "config.php3" und "db_connect.php3" ins Verzeichnis abgelegt habe und diese sonst funktionieren.

                  Frage: muss ich den Sessionteil entsprechend anpassen oder sollte sich dies mit "session.use_trans_sid" von selbst erledigen? Oder geht das nicht: session UND conf?

                  Verregnete Grüsse
                  femjava

                  Kommentar


                  • #10
                    Da würde ich doch erstmal in die php.ini reinschauen und den Parameter 'session.save_path' auf dein Temporäres Verzeichnis umstellen!

                    Welchen Sessionteil willst Du anpassen ...

                    Die beiden ini_set() Angaben habe ich nur gemacht damit die SessionID über die Komandozeile kommt.
                    carpe noctem

                    [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
                    [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

                    Kommentar


                    • #11
                      hmh, ich glaub die Konfigurationen stimmen bereits...


                      [Session]
                      ; Handler used to store/retrieve data.
                      session.save_handler = files

                      ; Argument passed to save_handler. In the case of files, this is the path
                      ; where data files are stored. Note: Windows users have to change this
                      ; variable in order to use PHP's session functions.
                      session.save_path = /tmp

                      ; Whether to use cookies.
                      session.use_cookies = 1


                      ; Name of the session (used as cookie name).
                      session.name = PHPSESSID

                      ; Initialize session on request startup.
                      session.auto_start = 0

                      ; Lifetime in seconds of cookie or, if 0, until browser is restarted.
                      session.cookie_lifetime = 0

                      ; The path for which the cookie is valid.
                      session.cookie_path = /

                      ; The domain for which the cookie is valid.
                      session.cookie_domain =

                      ; Handler used to serialize data. php is the standard serializer of PHP.
                      session.serialize_handler = php

                      ; Percentual probability that the 'garbage collection' process is started
                      ; on every session initialization.
                      session.gc_probability = 1

                      ; After this number of seconds, stored data will be seen as 'garbage' and
                      ; cleaned up by the garbage collection process.
                      session.gc_maxlifetime = 1440

                      ; Check HTTP Referer to invalidate externally stored URLs containing ids.
                      ; HTTP_REFERER has to contain this substring for the session to be
                      ; considered as valid.
                      session.referer_check =

                      hmh, ich glaub, das ist bereits richtig konfiguriert (vlg. Abschnitt 2)

                      ; How many bytes to read from the file.
                      session.entropy_length = 0

                      ; Specified here to create the session id.
                      session.entropy_file =

                      ;session.entropy_length = 16

                      ;session.entropy_file = /dev/urandom

                      ; Set to {nocache,private,public} to determine HTTP caching aspects.
                      session.cache_limiter = nocache

                      ; Document expires after n minutes.
                      session.cache_expire = 180

                      ; use transient sid support if enabled by compiling with --enable-trans-sid.
                      session.use_trans_sid = 1

                      -------------------------------------------

                      Den Session-Teil wollte ich eigentlich erst dann angehen, sobald
                      das Search-Tool läuft. Das ganze ist ja noch nicht (offziell) online...

                      Jetzt scheint die Sonne - in diesem Sinne, strahlende Grüsse
                      und thanks a lot!!!
                      femjava
                      Zuletzt geändert von femjava; 24.05.2002, 12:23.

                      Kommentar


                      • #12
                        Nein ... session.save_path steht bei Dir auf:

                        Code:
                        session.save_path = /tmp
                        Wie es aussieht hast Du aber 'nen Windows-Server ... da kann das nicht passen!
                        carpe noctem

                        [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
                        [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

                        Kommentar


                        • #13
                          ja, hab ich geändert und nun erscheint ein wunderbares
                          Formular. Wunderbar! Dennoch bin ich noch immer nicht berechtigt, eine Anfrage zu starten:

                          -----------------------
                          You are not authorized to view this page
                          You might not have permission to view this directory or page using the credentials you supplied.

                          If you believe you should be able to view this directory or page, please try to contact the Web site by using any e-mail address or phone number that may be listed on the localhost home page.

                          You can click Search to look for information on the Internet.


                          HTTP Error 403 - Forbidden
                          Internet Explorer
                          ------------------------

                          ist doch komisch, denn das ganze läuft auf meinem PC lokal und die Usereinstellungen sind immer dieselben (localhost, root, kein Passwort, DB-name=WhoIsWho).

                          Ich begreifs nicht...

                          Vermutlich geh ich Dir langsam auf den Wecker mit all meinen simplen Fragen (ich meinerseits hab aber schon ne Menge durch Deine Antworten gelernt)

                          Kommentar

                          Lädt...
                          X