Ben: Prüfen, ob bestimmter Service in einer bestimmten Str. verfügbar

Servus.

Ich bin echt ein Neuling, was PHP angeht und habe auch schon seit Stunden gegooglet, ob ich eine Lösung meines Problems finde, aber keine Chance.

Und zwar habe ich bisher meine Seite mit Webyep gebaut, was ja für PHP Neulinge wirklich super funktioniert. Nun habe ich allerdings vor, dass meine Kunden auf meiner Seite ihre Adresse eingeben können und dann ausgeworfen wird, ob die Adresse verfügbar ist oder nicht. Ähnlich einem DSL-Verfügbarkeitscheck.

Am liebsten würde ich die Adressen händisch in eine TXT oder sonstwas hauen und der Benutzer kann einfach in ein Formular seine Adresse eingeben und dann kommt halt als text "verfügbar" beispielsweise.

Könnt ihr mir bitte helfen? danke!

  1. Om nah hoo pez nyeetz, Ben!

    Könnt ihr mir bitte helfen? danke!

    Was für eine Adresse?
    Was soll geprüft werden?

    Matthias

    --
    Der Unterschied zwischen Java und JavaScript ist größer als der zwischen Mark und Markt.

    1. Om nah hoo pez nyeetz, Ben!

      Könnt ihr mir bitte helfen? danke!

      Was für eine Adresse?
      Was soll geprüft werden?

      Matthias

      Adressen, die ich selbst in irgendeine Liste eingebe.

      Danke,
      Ben

    2. Om nah hoo pez nyeetz, Ben!

      Könnt ihr mir bitte helfen? danke!

      Was für eine Adresse?
      Was soll geprüft werden?

      Matthias

      Eigentlich ist es ein ganz einfache Wenn-Dann-Fall. In excel wäre das kein Problem:

      wenn (eigengebene adresse) = (adresse in meiner "Datenbank" / "Excel"), dann "Ja", sonst "Nein".

      1. @@Ben:

        nuqneH

        Eigentlich ist es ein ganz einfache Wenn-Dann-Fall.

        Nein, dass ist nicht so einfach.

        Anganommen, du hast „Chelsea-Manning-Straße“ in deiner Datenbank, der Nutzer gibt aber „Chelsea-Manning-Str.“ ein. Oder „C.-Manning-Straße“. Oder er kennt die Regeln der deutschen Sprache nicht und schreibt „Chelsea Manning Straße“ …

        Qapla'

        --
        „Talente finden Lösungen, Genies entdecken Probleme.“ (Hans Krailsheimer)
        1. @@Ben:

          nuqneH

          Eigentlich ist es ein ganz einfache Wenn-Dann-Fall.

          Nein, dass ist nicht so einfach.

          Anganommen, du hast „Chelsea-Manning-Straße“ in deiner Datenbank, der Nutzer gibt aber „Chelsea-Manning-Str.“ ein. Oder „C.-Manning-Straße“. Oder er kennt die Regeln der deutschen Sprache nicht und schreibt „Chelsea Manning Straße“ …

          Qapla'

          Das stimmt schon. Aber ich kann ja vllt. eine kleine Erklärung eingeben, WIE man die Sachen eingeben soll. Sprich Straße wirklich als Str. und nicht ausgeschrieben.

          Bin mittlerweile auch schon weiter und habe bisschen was geschrieben:

          Seite des Formulars:

          <form action="check.php" method="post">  
          <input name="plz" type="text" value="Ihre Postleitzahl" size="40" onFocus="if(this.value=='Ihre Postleitzahl') this.value=''"/><br />  
          <input name="str" type="text" value="Ihre Strasse" size="40" onFocus="if(this.value=='Ihre Strasse') this.value=''" />  
          <br />  
          <br />  
          <input type="submit" value="senden >" class="button"/>  
          <input type="reset" value="zurücksetzen >" class="button" />  
          </form>
          

          Seite des Checks und der Ausgabe

          <?php  
              $plz = $_POST['plz'] ;  
              $str = $_POST['str'] ;  
          	$r = "100";  
                if ($plz == $r) echo "plz ist 100 A ist kleiner als B" ;  
                elseif ($plz > $str) echo "A ist größer als B" ;  
                else echo "$plz und $str" ;  
            
            ?>
          

          Das sind nur tests. Nun müsste ich natürlich statt "r" einfach alle postleitzahlen ausgeben können, die ich irgendwo abspeichere. es sind übrigens vllt. so 10 stück. und dazu passend die straßen.

          1. @@Ben:

            nuqneH

            Das stimmt schon. Aber ich kann ja vllt. eine kleine Erklärung eingeben, WIE man die Sachen eingeben soll.

            Das kannst du tun. Es ist bloß völlig unsinnig.

            Nutzer wollen ihre Daten eingeben, nicht Erklärungen lesen, wie sie das zu tun haben. Die meisten werden die Erjlärung nicht lesen. Es liegt an dir dafür zu sorgen, dass Nutzereingaben entsprechend verarbeitet werden.

            Du musst die Straßennamen normalisieren, z.B. Strings nicht auf Gleichheit, sondern auf Ähnlichkeit vergleichen. Oder dafür sorgen, dass sie schon normalisiert ankommen. Bei wenigen möglichen Staßen (nach Eingabe der PLZ) bietet sich ein Auswahlmenü an; wenn der Nutzer gar nichts schreiben muss, kann er gar nichts falsch schreiben. Und hat weniger Aufwand.

            Ansonsten wäre eine Mischform aus Texteingabe und Auswahl zu überdenken (Autovervollständigung).

            $plz = $_POST['plz'] ;
                $str = $_POST['str'] ;

            Das Umkopieren in Variablen ist überflüssig.

            else echo "$plz und $str" ;

            Kapitaler Fehler! Du darfst niemals Nutzereingaben unbearbeitet in HTML ausgeben. Sicherheitslücke!

            echo htmlspecialchars($_POST['plz'])

            Qapla'

            --
            „Talente finden Lösungen, Genies entdecken Probleme.“ (Hans Krailsheimer)
            1. @@Ben:

              nuqneH

              Das stimmt schon. Aber ich kann ja vllt. eine kleine Erklärung eingeben, WIE man die Sachen eingeben soll.

              Das kannst du tun. Es ist bloß völlig unsinnig.

              Nutzer wollen ihre Daten eingeben, nicht Erklärungen lesen, wie sie das zu tun haben. Die meisten werden die Erjlärung nicht lesen. Es liegt an dir dafür zu sorgen, dass Nutzereingaben entsprechend verarbeitet werden.

              Du musst die Straßennamen normalisieren, z.B. Strings nicht auf Gleichheit, sondern auf Ähnlichkeit vergleichen. Oder dafür sorgen, dass sie schon normalisiert ankommen. Bei wenigen möglichen Staßen (nach Eingabe der PLZ) bietet sich ein Auswahlmenü an; wenn der Nutzer gar nichts schreiben muss, kann er gar nichts falsch schreiben. Und hat weniger Aufwand.

              Ansonsten wäre eine Mischform aus Texteingabe und Auswahl zu überdenken (Autovervollständigung).

              $plz = $_POST['plz'] ;
                  $str = $_POST['str'] ;

              Das Umkopieren in Variablen ist überflüssig.

              else echo "$plz und $str" ;

              Kapitaler Fehler! Du darfst niemals Nutzereingaben unbearbeitet in HTML ausgeben. Sicherheitslücke!

              echo htmlspecialchars($_POST['plz'])

              Qapla'

              Danke für deine Tipps. Die Ausgabe soll allgemein am Ende gar nicht erfolgen. Die habe ich gerade nur drin, um zu sehen, ob das was ich wirklich eingebe, auch ankommt.

              Das mit dem Auswahlmenü der Str. ist eine super Idee, leider weiss ich die Umsetzung nicht. Ich habe nun mal paar Sachen in eine TXT Datei gespeichert und wollte mir auslesen lassen, ob der eingegebene Wert in der TXT vorkommt. Funktioniert aber noch nicht einwandfrei.

              <?php  
                  $plz = $_POST['plz'] ;  
                  $str = $_POST['str'] ;  
              	$plztext = "plz.txt";  
              	$plzt = fopen("plz.txt","r");  
                  if(strpos($plzt,"200")!==false) echo "Herzlichen Glückwunsch! $str in $plz ist verfügbar." ;  
                    else echo "Leider ist $str in $plz derzeit nicht verfügbar. Schau doch in ein paar Wochen nochmal vorbei." ;  
                
                ?>
              

              die "200" habe ich erstmal nur so eingetippt. am ende soll dort $plz stehen, aber es funktioniert weder mit der Zahl noch mit der Variablen :(

          2. Sprich Straße wirklich als Str. und nicht ausgeschrieben.

            Warum? Wenn schon dann gehört es so eingegeben wie die Straße offiziell benannt ist, bzw. so wie sie in deinem System zu erwarten ist. Viele Straßennamen sind ausgeschrieben, da kommt kein Mensch drauf das mit Str. abkürzen zu müssen und es ist auch nicht wirklich naheliegend.
            Wenn du im Titel Straße auch ausgeschrieben hättest, hätte ich auch früher kapiert worum es überhaupt geht ;-)

            Die Suche an sich könnte sehr komplex werden. Ein Str in Straße umsetzen ist noch denkbar, genauso ein "v." in ein "von" umzusetzen. Aber es gibt sicher weitere Fallen.

            Das Problem mit Bindestrichen und sonstigen Schreibweisen könnte man evtl. lösen indem man die Straßennamen ohne irgendwelche Sonderzeichen/Leerzeichen als spezielles Suchfeld speichert und eine Benutzereingabe dann ebenso umwandelt um danach zu suchen (natürlich ohne Beachtung der Groß/Kleinschreibung).
            Aus einer "Gustav von irgendwas Straße" oder "Gustav-von-irgendwas-Straße" wird dann zur Suche eine "GustavvonirgendwasStraße".

            Einen Hinweis wie was eingegeben werden muss, könntest du auch erst mit einer Meldung "nichts gefunden" bringen. Dann wird er wahrscheinlich eher gelesen als wenn er gleich irgendwo bei einem Suchfeld steht.

            1. Hi,

              Die Suche an sich könnte sehr komplex werden. Ein Str in Straße umsetzen ist noch denkbar, genauso ein "v." in ein "von" umzusetzen.

              L.-v.-Beethoven-Str.

              Aber es gibt sicher weitere Fallen.

              Man glaubt gar nicht, was die Leute eingeben - selbst mit Straßen-Ausfüllhilfe (abh. von PLZ/Ort).

              Strasse statt Straße, Hauspttrasse (soll Hauptstr. sein) usw.

              Außerdem muß man natürlich die vielen Sonderfälle bei Straßennamen berücksichtigen, die die Realität vorgibt (A 1, B 2, C 3 z.B. in Mannheim, in Elstertrebnitz gibt es sogar A, B, C, D usw.) Oder Straße 5 in Berlin.
              Oder "KlgV 133 Pz" ...
              Bei den erlaubten Zeichen darf man auch nicht zu restriktiv sein, der Apostroph kommt z.B. vor (Up'n Damme). Oder akzentierte Zeichen (Carl-von-Linné-Str.).
              Und Straßennamen können erstaunlich lang sein (max. 46 Zeichen, soweit mir bekannt ist), z.B. "Annette-von-Droste-Hülshoff-Str." oder "Straße der Deutsch-sowjetischen Freundschaft" oder "Bürgermeister-Johann-Müller-Str."
              Wobei Bürgermeister je nach Lust und Laune mal als Bgm. oder mal als Bürgerm. oder auch als Bürgermeister im offiziellen Straßennamen auftaucht.

              Vornamen werden gerne mal abgekürzt oder ausgeschrieben - sowohl bei der Eingabe durch den Nutzer als auch bei der Benennung der Straße) - ein guter Algorithmus sollte das trotzdem zuordnen können ...

              Ach ja, wenn auch die Hausnummer erfaßt werden soll: auf jeden Fall in einem extra Feld!
              Nachträglich automatisiert auseinandertrennen ist schwierig (Straße 5 13 usw.)

              Und auch bei Hausnummern die Spezialfälle berücksichtigen (a la 25 1/2).

              cu,
              Andreas

              --
              Warum nennt sich Andreas hier MudGuard?
              O o ostern ...
              Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.
              1. Hallo,

                Außerdem muß man natürlich die vielen Sonderfälle bei Straßennamen berücksichtigen, die die Realität vorgibt (A 1, B 2, C 3 z.B. in Mannheim, in Elstertrebnitz gibt es sogar A, B, C, D usw.) Oder Straße 5 in Berlin.

                die Planquadrate in der Mannheimer Innenstadt sind mir als Fallbeispiel bekannt, wo aber gibt es ...

                "KlgV 133 Pz" ...

                ... und was bedeutet es wirklich?

                Wobei Bürgermeister je nach Lust und Laune mal als Bgm. oder mal als Bürgerm. oder auch als Bürgermeister im offiziellen Straßennamen auftaucht.

                Oder als "BM".

                Und auch bei Hausnummern die Spezialfälle berücksichtigen (a la 25 1/2).

                Huch - 25/1 und 25/2 oder auch 16a und 16b kenne ich, aber Fünfundzwanzig-einhalb? Very weird.

                So long,
                 Martin

                --
                Wenn dir jemand eine unschlagbare Abkürzung empfiehlt, gehe einen Umweg.
                Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
                1. Hi,

                  "KlgV 133 Pz" ...
                  ... und was bedeutet es wirklich?

                  KlgV = Kleingartenverein
                  Das Pz steht vermutlich für Parzelle.

                  gibt's z.B. in Hamburg.

                  Und auch bei Hausnummern die Spezialfälle berücksichtigen (a la 25 1/2).

                  Huch - 25/1 und 25/2 oder auch 16a und 16b kenne ich, aber Fünfundzwanzig-einhalb? Very weird.

                  siehe Hausnummer 25 1/2

                  Da hab ich mal auf einer meiner Radtouren übernachtet ...

                  cu,
                  Andreas

                  --
                  Warum nennt sich Andreas hier MudGuard?
                  O o ostern ...
                  Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.
                  1. Hallo,

                    "KlgV 133 Pz" ...
                    ... und was bedeutet es wirklich?
                    KlgV = Kleingartenverein
                    Das Pz steht vermutlich für Parzelle.

                    aaah, im passenden Kontext (also irgendwo am Ortsrand in der Pampa) wäre ich vermutlich drauf gekommen, so isoliert aber sicher nicht.

                    Huch - 25/1 und 25/2 oder auch 16a und 16b kenne ich, aber Fünfundzwanzig-einhalb? Very weird.
                    siehe Hausnummer 25 1/2
                    Da hab ich mal auf einer meiner Radtouren übernachtet ...

                    Sehr schön. Das ist nicht alltäglich.

                    Ciao,
                     Martin

                    --
                    Um mit einem Mann glücklich zu werden, muss eine Frau ihn sehr gut verstehen und ein bisschen lieben.
                    Um mit einer Frau glücklich zu werden, muss ein Mann sie sehr lieben und darf gar nicht erst versuchen, sie zu verstehen.
                    Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
          3. Mahlzeit,

            Das stimmt schon. Aber ich kann ja vllt. eine kleine Erklärung eingeben, WIE man die Sachen eingeben soll. Sprich Straße wirklich als Str. und nicht ausgeschrieben.

            Ich könnte dir jetzt nichtmal sagen, ob meine Strasse mit oder ohne Bindestrich geschrieben wird.
            Zu willst mich praktisch dazu zwingen, das erstmal festzustellen. Also nachsehen im Ausweis oder rausgehen. Alternativ suchen im Internet.
            Würde mich dazu bringen, deine Seite zu verlassen und einen alternativen Service zu nutzen.

            --
            42
            1. Hi,

              Ich könnte dir jetzt nichtmal sagen, ob meine Strasse mit oder ohne Bindestrich geschrieben wird.

              im Deutschen werden Straßen, die nach einem Ortsnamen benannt sind, üblicherweise auseinander geschrieben:
               * Ulmer Straße, Thüringer Straße

              Straßen, die nach einer Person benannt sind, werden zusammengeschrieben, wenn nur der Vor- oder Nachname der Person verwendet wird:
               * Goethestraße, Karlstraße, Annastraße

              Straßen, die nach einer Person benannt sind, werden mit Bindestrich geschrieben, wenn der vollständige Name der Person verwendet wird:
               * Manfred-von-Ardenne-Straße, Friedrich-Silcher-Straße

              Straßennamen, die nach einem generischen substantivischen Begriff benannt sind, werden zusammengeschrieben:
               * Brunnenstraße, Bahnhofstraße, Biberweg, Eichenstraße

              Straßennamen, die nach einem generischen Adjektiv benannt sind, werden zusammengeschrieben:
               * Lange Straße, Weißer Weg, Neue Straße

              Es ist also schon kompliziert genug, auch ohne Ausnahmen überhaupt zu betrachten (z.B. Straße des 17. Juni). Grund genug, die Eingabe des Straßennamens möglichst tolerant und flexibel zu machen.

              Ciao,
               Martin

              --
              Ich liebe Politiker auf Wahlplakaten.
              Sie sind tragbar, geräuschlos, und leicht wieder zu entfernen.
                (Loriot, deutscher Humorist, †2011)
              Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
              1. Hi,

                Straßennamen, die nach einem generischen Adjektiv benannt sind, werden zusammengeschrieben:
                * Lange Straße, Weißer Weg, Neue Straße

                Es ist also schon kompliziert genug,

                offensichtlich zu kompliziert ... ;-)

                cu,
                Andreas

                --
                Warum nennt sich Andreas hier MudGuard?
                O o ostern ...
                Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.
                1. N'Abend auch,

                  Straßennamen, die nach einem generischen Adjektiv benannt sind, werden zusammengeschrieben:
                  * Lange Straße, Weißer Weg, Neue Straße
                  Es ist also schon kompliziert genug,
                  offensichtlich zu kompliziert ... ;-)

                  ja, sieht ganz so aus.
                  Vor allem nach einem anstrengenden Tag, der mit dem Aufstehen lange vor dem Aufwachen begann.

                  Ciao,
                   Martin, der nicht in der Müdegasse wohnt

                  --
                  Alle wollen unser bestes.
                  Aber das kriegen sie nicht.
                  Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(