Doppelte Sucheinschränkung

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

  • Doppelte Sucheinschränkung

    Ich habe folgendes Problem:

    Ich habe eine Seite wo man zuerst die ersten 2 Stellen seiner Vorwahl wählt und dann einen Shop bzw. eine Shopkategorie also zum Beispiel Bäcker.

    Dieses wird dann weitergegeben und soll dann aus der Datenbank mir alle Bäcker im Vorwahlbereich z.Bsp. 07

    Also so:
    PHP-Code:
    suche.php?branche=&postzip3
    Nun zeigt er mir jedoch wenn ich mit:
    PHP-Code:
     $abfrage "SELECT Firma1, branche_tr, vorwahl FROM nuke_search  WHERE branche_tr = '".$HTTP_POST_VARS['branche']."' ORDER BY Firma1 "
    suche alle Bäcker an.

    Wie grenz ich das ein so das er mir NUR die Bäcker anzeigt die in dem Vorwahlbereich sind!?

  • #2
    SELECT branche, vorwahl FROM tabelle WHERE branche = 'baecker' AND vorwahl = '030';
    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


    Kommentar


    • #3
      Ahja hmm ok das hab ich jetzt bisher nirgends lernen können das man mit einem AND einfach verknüpfen kann.


      Ach da fällt mir aber was ein/auf:

      Ich hab ja nur die ersten Stellen einer Vorwahl...also das bedeutet das meine postzip3 wie ich es ja weitergebe von der vorherigen Seite nur 2 Stellen hat z.Bsp. 07 statt 0711 oder so.

      Und das muss ich ja so machen das er mir alle 07er anzeigt...denn wenn er nur AND sucht dann findet er ja nix da es keine 07 gibt!?
      Zuletzt geändert von rookie51; 17.11.2003, 08:35.

      Kommentar


      • #4
        PHP-Code:
        SELECT branchevorwahl FROM tabelle WHERE branche 'baecker' AND vorwahl LIKE '07%'
        Mit dem LIKE 07% sucht er alle Einträge, die mit 07 anfangen.
        it's not a bug,
        it's a feature!

        Kommentar


        • #5
          Original geschrieben von XGremliN
          [B
          Mit dem LIKE 07% sucht er alle Einträge, die mit 07 anfangen. [/B]

          Also wäre es in meinem Fall:

          PHP-Code:
          SELECT branchevorwahl FROM tabelle WHERE branche '".$HTTP_POST_VARS['branche']."' AND vorwahl LIKE '".$HTTP_POST_VARS['postzip3']."%' 
          !?

          Kommentar


          • #6
            japp, das sollte gehen!

            gruss

            Kommentar


            • #7
              @rookie51

              http://www.schattenbaum.net/php/ kann ich dir nur empfehlen, um noch was zu lernen.

              und das LIKE kann man auch eleganter mit LEFT() [mysql-funktion] machen. ist ein wenig schneller.

              habe ich auch erst hier im forum gelernt ...
              INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


              Kommentar


              • #8
                Original geschrieben von Abraxax
                @rookie51

                http://www.schattenbaum.net/php/ kann ich dir nur empfehlen, um noch was zu lernen.

                und das LIKE kann man auch eleganter mit LEFT() [mysql-funktion] machen. ist ein wenig schneller.

                habe ich auch erst hier im forum gelernt ...
                Jo die schattenbaum seiten hab ich mir schon komplett ausgedruckt.

                War zwar einiges aber dafür hab ichs jetzt mehr oder weniger kapiert!

                Hmm mir scheint aber das es trotz dem LIKE und dem % nicht alle 07er anzeigt

                Hier mal der Sourcecode:
                PHP-Code:

                <?php
                  mysql_connect
                ("blablabla","blablabla","blablabla");
                  
                mysql_select_db("DBNAME");


                  
                $abfrage "SELECT Firma1, branche_tr, vorwahl FROM nuke_search  WHERE branche_tr = '".$HTTP_POST_VARS['branche']."' AND vorwahl LIKE  '".$HTTP_POST_VARS['postzip3']."%' ORDER BY Firma1 ";
                  
                $ergebnis mysql_query($abfrage);
                  
                $res mysql_query($abfrage) or die(mysql_error());
                  
                $num mysql_num_rows($res);
                ?>
                <html>
                <head>
                </head>
                <body bgcolor="ffe400">
                <table>
                  <tr>
                    <th width='200' valign='top' align='left'>Name</th>
                    <th width='200' valign='top' align='left'>Vorwahl</th>
                  </tr>

                <?php
                   
                for ($i=0$i<$num$i++)
                   {

                   
                $branche_tr mysql_result($res$i"branche_tr");
                   
                $Firma1 mysql_result($res$i"Firma1");
                   
                $vorwahl mysql_result($res$i"vorwahl");

                   echo 
                "<tr>";
                   echo 
                "<td valign='top'>$Firma1</td>";
                   echo 
                "<td valign='top'>$vorwahl</td>";
                   echo 
                "</tr>";
                   }
                ?>

                </table>
                </body>
                </html>

                Hmm und die suchanfrage geht folgendermaßen:
                PHP-Code:
                    <FORM ACTION="suche.php?branche=<? echo $HTTP_GET_VARS ["$i"]; ?>&postzip3=<? echo $HTTP_GET_VARS ["$postzip2"]; ?>" METHOD="post">

                Kommentar


                • #9
                  Du versendest die Daten auch mit post und nicht mit get.
                  ändere das bei der Method im form-Tag.
                  it's not a bug,
                  it's a feature!

                  Kommentar


                  • #10
                    Ja stimmt.....und im suche.php file musst ich das auch noch angleichen jetzt gehts....


                    Schön!

                    *freu*

                    Nur hab ich wenn ich schon mal dabei bin noch ne Frage:

                    Ich würde jetzt gerne einen Link draufsetzen auf jede ausgabe.

                    Nehmen wir an er zeigt mir folgendes an:

                    Bäckerei Mayer 07153
                    Bäckerei Olaf 07735
                    Bäckerei Anton 07721

                    So und nun wenn ich auf einen von denen Klick sollen mir alle Daten also die gesamte dazugehörige Zeile angezeigt werden.

                    Sozusagen ein neues Fenster wieder mit Namen und Vorwahl nur jedoch auch mit Straße, Website, Telefonnummer

                    Wisst ihr nen schlauen vorschlag.....zum Beispiel IDs vergeben an jede Adresse was ja bei 1600 Adressen sehr aufwendig wäre......und glaub garnicht gehen würde da er wieder net wüsste welcher name welche id besitzt.



                    EDIT:

                    Ach da fällt mir grad ein was für ne Möglichkeit es geben würde:

                    Wenn man jedem Link nen Wert zuordnen würde und sobald man auf einen Link klickt dann einfach in diesem Wert die Zelle wo der name drin steht ausgelesen werden würde - sozusagen "Mayer" - und dieses weiter gegeben werden würde dann würds gehen!

                    Nur wie mach ich das hehe!?!
                    Zuletzt geändert von rookie51; 17.11.2003, 10:31.

                    Kommentar


                    • #11
                      Die Spalte mit ID würde ich auf jeden Fall anhängen.
                      Das sollte ja kein Problem sein.

                      Wenn du die ID des Datensatzes haben willst, musst du sie dann nur noch mit auslesen und fertig.
                      Also hier noch eine Zuweisung für die ID.
                      PHP-Code:
                         $branche_tr mysql_result($res$i"branche_tr");
                         
                      $Firma1 mysql_result($res$i"Firma1");
                         
                      $vorwahl mysql_result($res$i"vorwahl");
                         
                      $id mysql_result($res$i"id"); 
                      it's not a bug,
                      it's a feature!

                      Kommentar


                      • #12
                        Original geschrieben von XGremliN
                        Die Spalte mit ID würde ich auf jeden Fall anhängen.
                        Das sollte ja kein Problem sein.

                        Wenn du die ID des Datensatzes haben willst, musst du sie dann nur noch mit auslesen und fertig.
                        Also hier noch eine Zuweisung für die ID.
                        PHP-Code:
                           $branche_tr mysql_result($res$i"branche_tr");
                           
                        $Firma1 mysql_result($res$i"Firma1");
                           
                        $vorwahl mysql_result($res$i"vorwahl");
                           
                        $id mysql_result($res$i"id"); 
                        Hmm ok also dann führt wohl kein weg dran vorbei jedem Datenbankeintrag eine ID zuzuweisen die dann ausgelesen und dann weiter gesendet wird, an das Fenster was dann die daten bekommt, die Zeile in der Datenbank sucht und ausgibt!?

                        Kommentar


                        • #13
                          Nimm doch einfach den phpMyAdmin und füge deiner Tabelle eine Spalte ID hinzu. DIese erhält das Attribut auto_increment und wird der Primärschlüssel.
                          So wird jedem Datensatz automatisch eine ID zugewiesen.
                          it's not a bug,
                          it's a feature!

                          Kommentar


                          • #14
                            Hmm ja ich machs ja mit phpmyadmin.

                            Also dann füg ich einfach ne Spalte hinzu in meiner tabelle mit der Bezeichnung kunden_id.

                            Aber wie das mit dem auto_increment gehen soll hab ich net begriffen......bleibt dann der Wert immer unverändert und wenn ich nen neuen hinzufüg wird der neuen Zeile ein neuer wert zugewiesen?!?

                            Hmm somit müsst ich keine IDs vergeben!?

                            Gibts dazu auch einen Link wo ich das finden kann..bei Schattenbaum gabs das net.

                            Kommentar


                            • #15
                              Wenn du eine Spalte mit dem Attribut auto_increment hinzufügst, erhält jeder Datensatz eine ID - jeder eine andere, da brauchst du dir keine Sorgen zu machen. Jeder weitere hinzugefügte Datensatz erhält eine neue ID.
                              it's not a bug,
                              it's a feature!

                              Kommentar

                              Lädt...
                              X