Ankündigung

Einklappen
Keine Ankündigung bisher.

PHP Abfage von einer Access DB

Einklappen

Neue Werbung 2019

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

  • PHP Abfage von einer Access DB

    Hallo zusammen

    Ich habe ein Telefonbuch das in einer Access Datenbank angelegt ist.
    Nun mach ich via PHP eine Suchabfrage und gebe das Resultat in
    unserem Intranet aus.
    Mein Problem ist, dass eine Abfrage nur möglich ist, wenn ich den gesuchten Name
    voll ausschreibe. Nun möchte ich gerne, dass mir die Suche schon beim Teilwort eine Auswahl an DB Einträgen ausgibt.

    Beispiel, ich suche nach Muster.

    Situation jetzt:
    Muster in das Suchfeld eintragen, da sonst nichts gefunden wird.

    Gewünschte Suchabfrage:
    Mu in das Suchfeld eintragen und es werden Muster, Munz, Muler... etc ausgegeben.

    Ich hoffe mir kann jemand helfen.

    Ein Teil meines Suchcodes sieht so aus:

    PHP-Code:
       // -------------------------------------------------------
       // Create SELECT List with Name(Abteilung)
       // -------------------------------------------------------
       
    function select_name_abteilung($connection$pulldownName)
       {
          
    //
          // Query to find name,abteilung (seems to be distinct)
          
    $query "SELECT name, abteilung
                      FROM data1
                     WHERE name IS NOT NULL
                     ORDER BY name"
    ;
          
    //
          // Run the Query
          
    if (!($resultId = @ odbc_exec($connection$query))) {
             
    $err "Error Executing SQL Query: " $query;
             exit(
    $err);
          }
          
    //
          // Start the select widget
          
    print "\n<select name=\"{$pulldownName}\">";
          
    //
          // The first Entry is to show All (no WHERE clause)
          
    print "\n<option selected value=\"Alle\">Alle</option>";
          
    //
          // Retrieve each row from the query
          
    while (odbc_fetch_row($resultId))
          {
             
    // Get the value for the column
             
    $name odbc_result($resultId,"Name");
             
    $abteilung odbc_result($resultId,"Abteilung");
             
    $result $name " (" $abteilung ")";
             print 
    "\n<option value=\"{$result}\">{$result}";
             print 
    "</option>";
          }
       } 

    Ich hoffe sehr, dass mir hier jemand helfen kann.

    Danke und Gruss
    Michael

  • #2
    WHERE name = "Mu%"

    evl.

    WHERE name LIKE "Mu%"


    Das % ist bei MS SQL das gleiche wie *
    Gewisse Dinge behält man besser für sich, z.B. das man gewisse Dinge für sich behält.

    Kommentar


    • #3
      Danke, für deine Antwort.
      Ich glaube aber, du hast da was falsch verstanden.
      Ich suche eine Abfragemöglichkeit mit PHP in Access die es ermöglicht, dass wenn ich z.B. nach Bahn suche mir Bahn, Bahnhof, Bahngleis etc ausgewiesen werden. Das Ganze ist ein internes Telefonbuch und manchmal weiss der User nicht, wie genau sich ein Name schreibt. In diesem Fall sollte er die Nummer mit ein paar Buchstaben finden.

      Solltest du „Mu“ als Platzhalter gemein haben, so funktioniert das mit Access auch nicht.

      Gruss Michael

      Kommentar


      • #4
        Ich denke das was HStev gepostet hat, ist genau das was du suchst: Platzhalter / Wildcards. Hast dus denn mal ausprobiert?

        Kommentar


        • #5
          Hallo Zergling

          Ich muss gestehen dass ich ein Anfänger in php bin. Ich habe auch schon was von Wildcards gehört, doch nie richtig einordnen können. Was ich probiert habe ist

          PHP-Code:
          $query "SELECT name, abteilung 
                            FROM data1 
                           WHERE name LIKE '%name%' IS NOT NULL 
                           ORDER BY name"

          ...dann...

          PHP-Code:
          $query "SELECT name, abteilung 
                            FROM data1 
                           WHERE name LIKE '%.
          $pulldownName.%' IS NOT NULL 
                           ORDER BY name"

          ...oder...

          PHP-Code:
          $query "SELECT name, abteilung 
                            FROM data1 
                           WHERE name LIKE '%.
          $connection.%' IS NOT NULL 
                           ORDER BY name"

          etc...
          funzt alles nicht.

          Ich denke auch, dass ich sicher auf dem richtigen Weg bin, doch verstehe ich zu wenig um nicht Tausende von Variationen zu testen.

          Wenn Du mir einen Tipp hättest, wäre ich dir sehr dankbar.

          Gruss Michael

          Kommentar


          • #6
            Wofür verwendest du IS NOT NULL?

            Richtig wäre es so (vorrausgesetzt Access verhält sich da so, wie es MySQL tut):
            PHP-Code:
            <?php
                $query 
            "SELECT
                                name,
                                abteilung
                            FROM
                                data1
                            WHERE
                                name LIKE '%
            $connection%'
                            ORDER BY
                                name"
            ;
            ?>

            Kommentar


            • #7
              IS NOT NULL benötigt das Script, weil neben dem Textfeld ein Dropdown Feld ist, bei dem der User alle Namen
              aus der Access DB aufgelistet bekommt und sich seinen so aussuchen kann. Auf alle Fälle gibt das Dropdown
              nur noch die Variante "alle auswählen" an, wenn ich den IS NOT NULL Code weglasse.


              PHP-Code:
              WHERE  name LIKE '%$connection%' 
              hab ich auch schon probiert. Der einzige Unterschied war das es bei mir
              PHP-Code:
              WHERE  name LIKE '%.$connection.%' 
              hiess.

              Kommentar


              • #8
                Zitat von xabbuh
                Richtig wäre es so (vorrausgesetzt Access verhält sich da so, wie es MySQL tut):
                evl. must andere Hochkommatas verwenden aber ansonsten sieht die Syntax richtig aus


                WHERE name LIKE '%name%' IS NOT NULL

                würde nicht funktionieren wenn dann

                WHERE name LIKE '%name%' AND name IS NOT NULL
                Gewisse Dinge behält man besser für sich, z.B. das man gewisse Dinge für sich behält.

                Kommentar

                Lädt...
                X