Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Benutzerprofil verändern mit Datenbanken

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Benutzerprofil verändern mit Datenbanken

    Hallo ich bin gerade dabei eigene Profile für Benutzer zu errichten.
    Ich frage mich dabei, welches die beste Methode ist.

    Ich habe zB. eine Tabelle in Mysql wo steht:
    ID / username / passwort
    1 / keinplan / ******
    2 / keinplan2 / ******
    so das klappt soweit ganz gut, auch das einloggen.

    Jetzt möchte ich, dass der User bei sich nach dem einloggen weitere Daten speichern kann. (zB. das Alter und die Stadt)

    Ist es sinnvoll eine neue Tabelle dafür zu erstellen?

    oder erweitere ich die vorhandene Tabelle um:
    ID / username / passwort / Alter / Stadt

    Doch momentan weiß ich nicht genau, wie ich es machen soll, dass der Eintrag (Alter, Stadt) beim richtigen Benutzer ankommt.

    Kann man die Aktuelle ID der erstellten Tabelle abfragen, wenn man sich eingeloggt hat? Dann würde ich mit :

    PHP-Code:
    <?php
    $eintrag 
    "INSERT INTO Tabellenname
    (Spaltenname1, Spaltenname2)
    VALUES
    ('Wert1', 'Wert1')"
    ;
    $eintragen mysql_query($eintrag);
    ?>
    die Werte eintragen und noch irgendwo mit einbauen WHERE id = $idwert

    Also quasi noch dazu:
    $idwert = (befehl, der die aktuelle id der tabelle bestimmt, vom eingeloggten user)


    Alle Daten der Tabelle würde ich dann als Variable deklarieren, und auf jedem "geschützen Bereich" (Der Bereich nach dem Login) wird dann per Variable, der Wert aus der Datenbank genommen, wo die ID des Users übereinstimmt.

    Zum Beispiel sieht "Mein Profil" dann so aus:

    PHP-Code:
    <?php

    echo "Hallo " $name ;
    echo 
    "Dein Alter:" $alter;

    ?>
    usw..... Die Daten der Variablen sind hierbei aus der Tabelle entnommen.

    So jetzt ist die Frage, ergibt das Sinn? Lieber eine andere Vorgehensweise? Ist das überhaupt realisierbar?

  • #2
    Speichere nicht alle in einer Tabelle, lagere die persönlichen Daten der User in einer zweite Tabelle aus und hole dir die Daten auch erst nach dem (erfolgreichem) login bzw. auf der entsprechenden Einstellungsseite. Verküpfe die beiden Tabellen mit der userid.

    Kommentar


    • #3
      Ok das heißt ich lege eine neue Tabelle mit id / alter / Stadt an ?

      Und wie verknüpft man die ids ?

      Wie liest man überhaupt die aktuelle id des Eingeloggten aus, sodass ich sie als Variable deklarieren kann? Das bekomme ich seit Tagen nicht gebacken...

      Kommentar


      • #4
        Zitat von Anormal Beitrag anzeigen
        Ok das heißt ich lege eine neue Tabelle mit id / alter / Stadt an ?
        Möglicherweise bricht jetzt für Dich Dein Weltbild in sich zusammen, aber Tabellen in Datenbanken können durchaus mehr als nur 1 Zeile haben. Echt!

        Und wie verknüpft man die ids ?
        Über JOIN.

        Wie liest man überhaupt die aktuelle id des Eingeloggten aus, sodass ich sie als Variable deklarieren kann? Das bekomme ich seit Tagen nicht gebacken...
        Wie wäre es mit SELECT?
        PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

        Kommentar


        • #5
          Zitat von akretschmer Beitrag anzeigen
          Möglicherweise bricht jetzt für Dich Dein Weltbild in sich zusammen, aber Tabellen in Datenbanken können durchaus mehr als nur 1 Zeile haben. Echt!?
          Du meinst Spalten?

          Zitat von Anormal Beitrag anzeigen
          Ok das heißt ich lege eine neue Tabelle mit id / alter / Stadt
          Ich würde wohl eher sagen: id / age / city / userId

          Zu Joins: http://www.w3schools.com/sql/sql_join.asp

          Kommentar


          • #6
            Was machst du denn nach dem Login? Normalerweise speicherst du, wenn Benutzername und Passwort stimmen, die Benutzer-ID in der Session.
            [I]You know, my wife sometimes looks at me strangely. „Duncan“, she says, „there's more to life than Solaris“. Frankly, it's like she speaks another language. I mean, the words make sense individually, but put them together and it's complete nonsense.[/I]

            Kommentar


            • #7
              Normalisierung heißt das Stichwort, schau dir das hier mal an http://www.peterkropff.de/site/mysql/normalisierung.htm

              Kommentar


              • #8
                Zitat von Anormal Beitrag anzeigen
                Ok das heißt ich lege eine neue Tabelle mit id / alter / Stadt an ?
                Beachte den Tipp von jprangenberg bezüglich der Benennung dieser Spalten. "alter" ist ein von MySQL reserviertes Keyword, wenn du das verwendet willst musst du immer Backticks verwenden wenn du den Spaltennamen ansprichst. (Sollte man generell, aber trotzdem ist es sinnvoll wenn man keywords vermeidet.)

                Kommentar


                • #9
                  Vielen Dank für die ganzen Tipps, haben mir sehr weitergeholfen.

                  Ich verknüpfe also beide Tabellen über die user-id.

                  Jetzt verwirrt mich aber der Aufbau: id / age / city / userId

                  Heißt das, dass die userId gleichzusetzen ist mit username? Weil dachte eigentlich, dass ich id dafür nehme.

                  Kommentar


                  • #10
                    Zitat von Anormal Beitrag anzeigen
                    Vielen Dank für die ganzen Tipps, haben mir sehr weitergeholfen.

                    Ich verknüpfe also beide Tabellen über die user-id.

                    Jetzt verwirrt mich aber der Aufbau: id / age / city / userId

                    Heißt das, dass die userId gleichzusetzen ist mit username? Weil dachte eigentlich, dass ich id dafür nehme.
                    Du hast eine User Tabelle mit id / username / password
                    Du hast eine UserDetail Tabelle mit id / age / city / userId

                    Die User Tabelle steht in Relation zur UserDetail Tabelle anhand id <> userId

                    Kommentar


                    • #11
                      Wozu 2 ID-Felder in einer 1:1-Beziehung? Also in dem Fall `id` und `userID` in der UserDetail-Tabelle?

                      Kommentar


                      • #12
                        Du hast eine User Tabelle mit id / username / password
                        Du hast eine UserDetail Tabelle mit id / age / city / userId
                        genau

                        Die User Tabelle steht in Relation zur UserDetail Tabelle anhand id <> userId
                        sorry, das habe ich nicht verstanden ^^

                        Kommentar


                        • #13
                          ja das mit den beiden Feldern habe ich ja auch nicht verstanden, warum ich einmal id und dann noch einmal userID brauche

                          Kommentar


                          • #14
                            Zitat von Tropi Beitrag anzeigen
                            Wozu 2 ID-Felder in einer 1:1-Beziehung? Also in dem Fall `id` und `userID` in der UserDetail-Tabelle?
                            Ich designe generell meine Tabellen immer so, dass jede Tabelle eine ID (Primary-Key inkl. auto_increment) besitzt.

                            Erklärung:
                            Alle weiteren Relationen der UserDetail Tabelle haben dann eine Relation zur UserDetail.id und letztendlich nichts mit der User.id zutun. Sollte sich die User.id einmal ändern (was vermutlich nicht vorkommt, aber könnte), müsste man die weiteren Relationen der UserDetail Tabelle nicht anfassen.

                            Was wäre wenn sich zwei Personen eine Adresse teilen? Mit einer zusätzlichen ID bist du offener.

                            Kommentar


                            • #15
                              Zitat von jprangenberg Beitrag anzeigen
                              Sollte sich die User.id einmal ändern (was vermutlich nicht vorkommt, aber könnte)
                              User ID kann sich nicht ändern. Dafür hat man ja technische Schlüssel - damit man ein eindeutiges und, weil es keine, für das Domain-Objekt, wichtige Daten hat, unveränderliches Feld hat.

                              Zitat von jprangenberg Beitrag anzeigen
                              Was wäre wenn sich zwei Personen eine Adresse teilen? Mit einer zusätzlichen ID bist du offener.
                              Dann ist es aber eben keine 1:1 Beziehung mehr. Die Art von Beziehung kann/muss ich vorher schon wissen.
                              Eine Adresse für 2 User stell ich mir aber alles andere als praktisch vor. Was wenn einer der beiden seine Adresse ändert?

                              Kommentar

                              Lädt...
                              X