komm einfach nicht weiter!

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

  • komm einfach nicht weiter!

    Habe ein Formular, wo man einen Namen in die Datenbank schreiben kann... ($Eingabe)
    jetzt soll er diesen Namen nur dann einfügen, wenn er nicht vorhanden ist, ansonsten soll die Nachricht kommen $Fehler="Name existiert bereits!"...

    Mein Problem liegt darin, was kann ich machen wenn jemand in das Eingabefeld peter, pETER, PeTeR eingeben würde und in der Datenbank Peter gespeichert ist???
    Peter-Klaus ist wiederum OK! Aber danach soll bei $Eingabe="peter-klaus" auch wieder $Fehler kommen!


    so viel hab ich bis jetzt und weiß nicht weiter:

    $db = mysql_connect();
    $res = mysql_db_query("datenbank","select name from Namen where name like '$Eingabe' ");
    if (!$res)
    {
    $sqlab = ("insert Namen (name) values ('$Eingabe' ");
    else
    {
    $Fehler="Name existiert bereits!";
    }

    Kann jemand mir ein anderes Script zeigen, wie es richtig gehört? Wäre sehr dankbar!

  • #2
    Was hälst Du denn davon, wenn Du die eingaben formatierst, bevor sie in die Datenbank geschrieben werden! So das es egal ist ob Peter, peter oder PeTeR! Formatiere den Namen einfach so, das er immer klein geschrieben wird. Dann müßte es eigentlich gehen!!
    No internationalisation, no fun.

    Kommentar


    • #3
      Wie mache ich das denn, wenn "PIT der King" erlaubt sein würde???
      Es müßte doch eine Möglichkeit geben, bei
      "select name from Name where name like '$Eingabe'",
      daß er $name="Peter-Klaus" und $Eingabe="peter-klaus" als gleich erkennt oder????
      Denn später bei der Ausgabe von der Datenbank soll er ja auch wieder das ausgeben was der User geschrieben hat!!! also auch "PIT der King"!Andersrum soll er wissen, daß "pIt DER kinG" bereits vorhanden ist!!!!

      Kommentar


      • #4
        Re:

        Hey Jump! Also ich glaube, da hast Du keine Chance! Das einzige was mir da einfällt, ist wirklich den namen zu formatieren, so das er immer alles klein oder Groß schreibt! Damit hättest Du das Problem auf jedenfall weg! Eine unterscheidung der Schriftweise "PeTeR" oder "PIT the King" ist meines wissens jedenfalls nicht möglich! Sorry!
        No internationalisation, no fun.

        Kommentar


        • #5
          so wie dein code lautet muss es eigentlich funktionieren. teste es doch einfach mal. wenn inner db z.b. PeTer steht, müsste $Fehler funzen ...

          h.a.n.d.
          Schmalle

          http://impressed.by
          http://blog.schmalenberger.it



          Wichtige Anmerkung: Ich habe keine Probleme mit Alkohol ...
          ... nur ohne :-)

          Kommentar


          • #6
            Also wenn ich PeTer eingebe funzt es nicht! Weil irgendwie Peter nicht PeTer ist! Also führt er denn Befehl IF (!res) "schreibe PeTer in die Datenbank" aus! Die Datenbank läst den Befehl aber nicht zu, weil UNIQUE für Namen aktiviert ist und da ist für ihn Peter gleich PeTer!!!

            Darum möchte ich eine Abfrage machen, wenn Peter vorhanden egal ob pETER, PeTeR usw.geschrieben und wieder PETER genommen wird (auch egal wie geschrieben) dann Nachricht: $Fehler Name existiert bereits!

            Kommentar


            • #7
              hmm,

              verwende auf beie Strings zB. http://www.php.net/manual/de/function.strtolower.php also strtolower , das wandelt einen string in kleinbuchstaben um, naja und dann vergleichen, so einfach ist das.

              Kommentar


              • #8
                Genau das sag ich doch!

                Sag ich doch die ganze Zeit! Die eingaben einfach in kleinbuchstaben umwandeln und dann vergleichen! Das ist deine Möglichkeit die du hast! Einfacher wirds net!!
                No internationalisation, no fun.

                Kommentar


                • #9
                  Hast recht! Danke jetzt hast bei mir den Stein ins rollen gebracht!

                  $Vergleich = strtolower($name);
                  $db = mysql_connect();
                  $res = mysql_db_query("datenbank","select name from Namen");
                  $num = mysql_num_rows($res);
                  for ($i=0; $i<$num; $i++)
                  {
                  $an = mysql_result($res, $i, "name");
                  $an = strtolower($an);
                  if ($an==$Vergleich)
                  {
                  $Fehler="Name existiert bereits!";
                  }
                  }

                  Eigentlich so einfach, aber trotzdem konnt vorher keiner mir so recht helfen.

                  Also nochmals danke!

                  Kommentar


                  • #10
                    Original geschrieben von Jump

                    Eigentlich so einfach, aber trotzdem konnt vorher keiner mir so recht helfen.
                    Original geschrieben von Downline

                    Was hälst Du denn davon, wenn Du die eingaben formatierst, bevor sie in die Datenbank geschrieben werden! So das es egal ist ob Peter, peter oder PeTeR! Formatiere den Namen einfach so, das er immer klein geschrieben wird. Dann müßte es eigentlich gehen!!

                    Ich weiss ja nicht, aber die erste Antwort war eigentlich schon die richtige, oder wie ?

                    Kommentar


                    • #11
                      1) like ist sowieso case-insensitiv ... zumindest bei mir
                      2) in SQL gibt´s die Funktion UPPER, also zur Not UPPER(name)=UPPER('$name') statt name like '$name'

                      PS: ein trim() vorneweg wär nicht schlecht!
                      mein Sport: mein Frühstück: meine Arbeit:

                      Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

                      Kommentar


                      • #12
                        Downline hat mir zwar den Tip gegeben, aber nicht gezeigt, wie ich es umsetzen kann... erst mit den Link konnt ich es sehen, wie es funzt! Vorher hab ich immer verstanden man macht die Buchstaben der Eingabe klein, vergleicht und speichert sie dann so in die Datenbank. Das wollt ich dann nicht, weil die Eingabe nicht verfälscht werden sollte! Dann hab ich erst gesehen, daß nur zum vergleichen beide Daten zu Kleinbuchstaben werden und die Originaleingabe gespeichert wird!

                        Tja, darum haben mir die Postings vorher nicht viel gebracht.

                        Kommentar


                        • #13
                          Re:

                          Ich hab Dir ja nur den Hinweis gegeben! Hättest mir gesagt, das Du nicht weißt wie! Aber Du wolltest es ja unbedingt anders machen!
                          No internationalisation, no fun.

                          Kommentar


                          • #14
                            Sagte ja hab Dich falsch verstanden...
                            Dachte dies würde das Ergebnis verfälschen, weil Du nicht gesagt hast, daß ich auch den Eintrag in der Datenbank zu formatieren habe! Aber Hauptsache eine Lösung ist da!

                            Kommentar

                            Lädt...
                            X