kleinschreibung==GROßSCHREIBUNG ?!

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

  • kleinschreibung==GROßSCHREIBUNG ?!

    ich habe ein problem, bei dem ich nicht weiterkomme.
    habe im manual nichts gefunden und mit der suchenfunktion komme ich hier auch nicht weiter...


    es geht um den bereich der anmeldung (registration) bei meinem script.

    bei der registration eines neuen users frage ich in der db ab, ob dieser username schon vergeben ist, damit usernamen nicht doppelt vergeben werden.

    das geschieht mit einem einfachen

    PHP-Code:
        $user=mysql_query("SELECT * FROM table WHERE username='".$_POST['username']."';"); 
    es wird dann geprüft ob der wert bereits vorhanden ist, wenn ja, muss der user sich einen anderen anmeldenamen zulegen.


    so weit funktioniert alles aber:

    wie bekomme ich es hin, dass mein script den gleichen namen in unterschiedlicher groß/kleinschreibung nicht zulässt?

    mit der jetzigen lösung ist es zum beispiel möglich, sich als Tom oder als tom oder als tOm etc. anzumelden.

    ich möchte aber dass dieser name nur 1x vergeben wird, egal in welcher schreibweise, da es sonst im weiteren verlauf zu fehlern im script kommen kann, da ich nicht nur mit der unverwechselbaren userid arbeite, sondern auch an bestimmten stellen mit dem usernamen arbeiten muss und bei diesem wird auf groß/kleinschreibung nicht geachtet....

  • #2
    ich kenn mich zwar kaum mit php aus aber, vielleicht gehts ja, das er gleich in mehreren verschiedenen varianten in die datenbank eingetragen werden kann.

    Kommentar


    • #3
      ich wage zu behaupten, dass du es noch nicht probiert hast, denn mysql macht das von ganz alleine

      @Krieger
      tolle idee, ich melde mich als longjohnsilver an und du willst dann die datenbank mit allen 2^14 = 16.384 möglichen einträgen zumüllen?
      Zuletzt geändert von mrhappiness; 09.03.2004, 07:31.
      Ich denke, also bin ich. - Einige sind trotzdem...

      Kommentar


      • #4
        @mrhappiness

        ich wage zu behaupten, dass du es noch nicht probiert hast, denn mysql macht das von ganz alleine
        leider nein, also ja *g*

        ich meine , das script läuft schon seit einiger zeit und es ist eine anmeldung mit allen varianten möglich.

        sowohl als

        longjohnsilver also auch Longjohnsilver usw.

        später werden am im script komischerweise von mysql die namen dan gleichwertig behandelt, dadurch kommen dann ja auch die fehler.

        bei der anmeldung wird dieses aber nicht erkannt.

        ich bin auch ratlos

        Kommentar


        • #5
          wie prüfst du denn?

          wenn der name eindeutig seinsoll, dann gebe der entsprechenden spalte das attribut UNIQUE
          wenn du das machst, kümmert die datenbank sich darum, dass man sich nur einmal je name (ungeachtet der groß-KLEINschreibung) anmelden kann
          du kannst dann einfach ein INSERT machen und wenn es keine fehlermeldung gibt, hat's geklappt
          Zuletzt geändert von mrhappiness; 09.03.2004, 08:16.
          Ich denke, also bin ich. - Einige sind trotzdem...

          Kommentar


          • #6
            also ich prüfe, indem ich aus der datenbank auslesen lasse, ob zu dem neuen usernamen bereits eine userid vergeben wurde.

            wenn der wert der userid > 0 ist, dann kommt die fehlermeldung, dass der name bereits vergeben ist.

            eine weitere prüfungsvariante, die ich schon versucht habe war den usernamen aus dem formular dann auch in der db auszulesen und wenn username_db=username_formular, dann ebenfalls name vergeben.

            bei beiden varianten funktioniert das script super, nur es wird eben die groß/kleinschreibung nicht berücksichtigt.


            wie setze ich das feld 'unique' ?
            führt denn das nicht bei einem erneuten anmeldeversucht mit solch einem namen zu einer sql-fehlermeldung?

            Kommentar


            • #7
              Original geschrieben von dertom
              wie setze ich das feld 'unique' ?
              phpmyadmin?

              führt denn das nicht bei einem erneuten anmeldeversucht mit solch einem namen zu einer sql-fehlermeldung?
              wenn es keine fehlermeldung gibt, hat's geklappt
              Ich denke, also bin ich. - Einige sind trotzdem...

              Kommentar


              • #8
                ich bin in phpmyadmin, finde aber für die spalte nicht einstellungsmöglichkeit 'unique' sonst hätte ich doch nicht gefragt...

                Kommentar


                • #9
                  tut mir leid, konnte deinen bildschirm von meinem büro aus nicht so gut erkennen


                  Eigenschaften der Tabelle anzeigen, dann steht bei mir hinter jedem spaltenname der datentyp und noch viel mehr unter anderem ein link mit der aufschrift UNIQUE
                  Ich denke, also bin ich. - Einige sind trotzdem...

                  Kommentar


                  • #10
                    Hallo!

                    Probier's doch mal so:
                    PHP-Code:
                    $user=mysql_query("SELECT * FROM table WHERE UPPER(username)=UPPER('".$_POST['username']."');"); 
                    Gruß,
                    Lugi.

                    Kommentar


                    • #11
                      @mrhappines sorry, ich nutze seit kurzem phpMyAdmin-2.5.4 und da gibt es für unique nur so ein kleines grünes symbol, das muss man erst mal finden....

                      ich habe es jetzt mal eingerichtet und probiere aus, wie ich das mit der fehlermeldung elegant lösen könnte, wäre ziemlich doof, wenn den usernm da so eine sql fehlermeldung um die ohren fliegt


                      @lugi27 dein vorschlag hilft mir leider nicht weiter, es bleiben trotzdem alle groß/kleinvarianten möglich...

                      Kommentar


                      • #12
                        Hallo!

                        Hm, vielleicht hast Du da einen kleinen Denkfehler...
                        Sollte MySQL bei der o.g. Abfrage Ergebnisse finden, dann ist der Benutzername schon in der DB vorhanden --> Der Benutzername darf NICHT vergeben werden.
                        Oder sehe ich da was falsch???

                        Kommentar


                        • #13
                          du hast UNIQUE gesetzt?

                          mach dein insert und dnach schaust du dir mysql_errno an, steht da was anderes als 0 drin, konnte der datensatz nicht hinzugefügt werden
                          das geht natürlich ohne dem benutzer ne fehlermeldung um die ohren zuu hauen
                          Ich denke, also bin ich. - Einige sind trotzdem...

                          Kommentar


                          • #14
                            @lugi genau so ist es, findet mysql ein ergebnis erfolgt eine fehlerausgabe.
                            findet mysql kein ergebnis, wird der datensatz inserted.

                            @mrhappiness habe jetzt unique gesetzt, aber es wird kein feheler angezeigt, der datensatz wird nur einfach nicht eingefügt....

                            wie bekomme ich eine brauchbare fehlerrückmeldung, mit der ich vergleichen kann?

                            Kommentar


                            • #15
                              mit mysql_errno()?
                              PHP-Code:
                              mysql_query('INSERT ...');
                              if (
                              mysql_errno() != 0)
                                echo 
                              'Konnte Datensatz nicht anlegen';
                              else
                                echo 
                              'Alles OK'
                              Zuletzt geändert von mrhappiness; 09.03.2004, 09:21.
                              Ich denke, also bin ich. - Einige sind trotzdem...

                              Kommentar

                              Lädt...
                              X