Julian Wolters: Von nachträgliches eintragen vom benutzerprofil in die mysql datenbank

Guten Tag,

ich habe ein kleines Problemchen und zwar nach dem man sich eingeloggt hat kann man das Benutzerprofil bearbeiten. Zuerst hatte ich das mit einer zweiten Tabelle gelöst doch da war das Problem das die Daten vom ersten Nutzer auch bei den zweiten Nutzer stand also bin ich auf die Idee gekommen die Daten des Benutzerprofils in die Login Tabelle einfügen zu lassen nur mir fehlt der genaue Code, ich weis nur das es irgendwie mit Update geht weiter weis ich aber nicht.

Ich hoffe ihr könnt mit helfen.

  1. Guten Tag,

    ich habe ein kleines Problemchen und zwar nach dem man sich eingeloggt hat kann man das Benutzerprofil bearbeiten. Zuerst hatte ich das mit einer zweiten Tabelle gelöst doch da war das Problem das die Daten vom ersten Nutzer auch bei den zweiten Nutzer stand also bin ich auf die Idee gekommen die Daten des Benutzerprofils in die Login Tabelle einfügen zu lassen nur mir fehlt der genaue Code, ich weis nur das es irgendwie mit Update geht weiter weis ich aber nicht.

    Ich hoffe ihr könnt mit helfen.

    Diesen Code benutze ich jetzt gerade wo aber eine Fehlermeldung auftaucht.

    $sql = "SELECT 
                            emailadresse 
                        FROM 
                            login 
                        WHERE 
                            emailadresse = '".mysql_real_escape_string(trim($_POST['emailadresse']))."'
                            "; 
    
    $mobilnummer = $_POST["mobilnummer"]; 
    $strasse = $_POST["strasse"];
    $hausnummer = $_POST["hausnummer"];
    $plz = $_POST["plz"];
    $stadt = $_POST["stadt"];
    $webseite = $_POST["webseite"];
    $webseite1 = $_POST["webseite1"];
    				$sql = "UPDATE 
                            login 
                        SET 
                            mobilnummer = '".(trim($mobilnummer))."';
    						strasse = '".(trim($strasse))."';
    						hausnummer = '".(trim($hausnummer))."'; 
    						plz = '".(trim($plz))."'; 
    						stadt = '".(trim($stadt))."'; 
    						webseite = '".(trim($webseite))."'; 
    						webseite1 = '".(trim($webseite1))."'; 
                        WHERE 
                            emailadresse = '".mysql_real_escape_string(trim($_POST['emailadresse']))."'
                       ";
    
    1. Hallo,

      ich habe ein kleines Problemchen und zwar nach dem man sich eingeloggt hat kann man das Benutzerprofil bearbeiten. Zuerst hatte ich das mit einer zweiten Tabelle gelöst doch da war das Problem das die Daten vom ersten Nutzer auch bei den zweiten Nutzer stand also bin ich auf die Idee gekommen die Daten des Benutzerprofils in die Login Tabelle einfügen zu lassen nur mir fehlt der genaue Code, ich weis nur das es irgendwie mit Update geht weiter weis ich aber nicht.

      darf ich ganz ehrlich sein? - Ich habe NICHTS verstanden, was du da versucht hast zu erklären. Geht's vielleicht etwas weniger konfus und etwas klarer? Auch dein Datenmodell ist mir etwas suspekt, kann aber auch daran liegen, dass ich keinen Durchblick habe.

      Diesen Code benutze ich jetzt gerade wo aber eine Fehlermeldung auftaucht.

      Dann verrate uns um Himmels Willen nicht, welche Fehlermeldung und wo.

      Und übrigens, für die Zukunft: Einmal posten genügt. Die drei Duplikate habe ich mal entsorgt und das Original repariert.

      So long,
       Martin

      1. Hallo,

        ich habe ein kleines Problemchen und zwar nach dem man sich eingeloggt hat kann man das Benutzerprofil bearbeiten. Zuerst hatte ich das mit einer zweiten Tabelle gelöst doch da war das Problem das die Daten vom ersten Nutzer auch bei den zweiten Nutzer stand also bin ich auf die Idee gekommen die Daten des Benutzerprofils in die Login Tabelle einfügen zu lassen nur mir fehlt der genaue Code, ich weis nur das es irgendwie mit Update geht weiter weis ich aber nicht.

        darf ich ganz ehrlich sein? - Ich habe NICHTS verstanden, was du da versucht hast zu erklären. Geht's vielleicht etwas weniger konfus und etwas klarer? Auch dein Datenmodell ist mir etwas suspekt, kann aber auch daran liegen, dass ich keinen Durchblick habe.

        Diesen Code benutze ich jetzt gerade wo aber eine Fehlermeldung auftaucht.

        Dann verrate uns um Himmels Willen nicht, welche Fehlermeldung und wo.

        Und übrigens, für die Zukunft: Einmal posten genügt. Die drei Duplikate habe ich mal entsorgt und das Original repariert.

        So long,
         Martin

        Danke, ich wusste nicht ob es gepostet wurde und war in Panik. Es gibt keine Fehlermeldung nur die Fehlermeldung vom Script her das er es nicht abspeichern kann in die Datenbank.

        1. Hallo Julian Wolters,

          [Vollzitat]

          Und übrigens, für die Zukunft: Einmal posten genügt. Die drei Duplikate habe ich mal entsorgt und das Original repariert.

          Danke, ich wusste nicht ob es gepostet wurde und war in Panik.

          Bitte vermeide Vollzitate, sie stören nur den Lesefluss. Danke

          Bis demnächst
          Matthias

          --
          Signaturen sind bloed (Steel) und Markdown ist mächtig.
          1. Hallo Julian Wolters,

            [Vollzitat]

            Und übrigens, für die Zukunft: Einmal posten genügt. Die drei Duplikate habe ich mal entsorgt und das Original repariert.

            Danke, ich wusste nicht ob es gepostet wurde und war in Panik.

            Bitte vermeide Vollzitate, sie stören nur den Lesefluss. Danke

            Bis demnächst
            Matthias

            Signaturen sind bloed (Steel) und Markdown ist mächtig.

            Ok, danke werde ich das nächste mal berücksichtigen

            1. Hallo Julian Wolters,

              Ok, danke werde ich das nächste mal berücksichtigen

              Warum nicht schon dieses mal?

              Bis demnächst
              Matthias

              --
              Signaturen sind bloed (Steel) und Markdown ist mächtig.
    2. Hallo

      1. Du kannst die Elemente des POST-Arrays direkt benutzen, wenn du die Werte nicht noch an anderen Stellen weiterverarbeiten und unterschiedlich manipulieren willst.
      2. Die Klammern um die Funktionsaufrufe von trim gehören da nicht hin. Beschäftige dich bitte mit den Grundlagen der PHP-Syntax.
      3. zusätzlich zum trim müssen die einzufügenden Werte auch mit mysql_real_escape_string behandelt werden (wie in der WHERE-Klausel).
      4. Die mysql-Funktionen, die du benutzt, werden mit PHP7 aus dem Sprachumfang rausfliegen. Beschäftige dich bitte mit den PDO- oder den mysqli-Funktionen (siehe PHP-Handbuch).

      Tschö, Auge

      --
      Es schimmerte ein Licht am Ende des Tunnels und es stammte von einem Flammenwerfer.
      Terry Pratchett, „Gevatter Tod“
      1. Hi,

        1. Du kannst die Elemente des POST-Arrays direkt benutzen, wenn du die Werte nicht noch an anderen Stellen weiterverarbeiten und unterschiedlich manipulieren willst.

        richtig, das reine Umkopieren ist sinnfrei.

        1. Die Klammern um die Funktionsaufrufe von trim gehören da nicht hin.

        Das stimmt; sie schaden aber auch nicht.

        So long,
         Martin

        1. Hallo

          1. Die Klammern um die Funktionsaufrufe von trim gehören da nicht hin.

          Das stimmt; sie schaden aber auch nicht.

          Die Semikola am Ende jeder Einfügung eines Datums aber schon. Besonders jenes, welches in der letzten Zeile vor dem FROM steht.

          $sql = "UPDATE login SET 
            mobilnummer = '".mysql_real_escape_string(trim($mobilnummer))."',
            strasse = '".mysql_real_escape_string(trim($strasse))."',
            hausnummer = '".mysql_real_escape_string(trim($hausnummer))."', 
            plz = '".mysql_real_escape_string(trim($plz))."', 
            stadt = '".mysql_real_escape_string(trim($stadt))."', 
            webseite = '".mysql_real_escape_string(trim($webseite))."', 
            webseite1 = '".mysql_real_escape_string(trim($webseite1))."' 
          WHERE 
            emailadresse = '".mysql_real_escape_string(trim($_POST['emailadresse']))."'";
          

          Das sollte so funktionieren.

          Tschö, Auge

          --
          Es schimmerte ein Licht am Ende des Tunnels und es stammte von einem Flammenwerfer.
          Terry Pratchett, „Gevatter Tod“
          1. Hallo

            1. Die Klammern um die Funktionsaufrufe von trim gehören da nicht hin.

            Das stimmt; sie schaden aber auch nicht.

            Die Semikola am Ende jeder Einfügung eines Datums aber schon. Besonders jenes, welches in der letzten Zeile vor dem FROM steht.

            $sql = "UPDATE login SET 
              mobilnummer = '".mysql_real_escape_string(trim($mobilnummer))."',
              strasse = '".mysql_real_escape_string(trim($strasse))."',
              hausnummer = '".mysql_real_escape_string(trim($hausnummer))."', 
              plz = '".mysql_real_escape_string(trim($plz))."', 
              stadt = '".mysql_real_escape_string(trim($stadt))."', 
              webseite = '".mysql_real_escape_string(trim($webseite))."', 
              webseite1 = '".mysql_real_escape_string(trim($webseite1))."' 
            WHERE 
              emailadresse = '".mysql_real_escape_string(trim($_POST['emailadresse']))."'";
            

            Das sollte so funktionieren.

            Tschö, Auge

            --
            > Es schimmerte ein Licht am Ende des Tunnels und es stammte von einem Flammenwerfer.
            > Terry Pratchett, „Gevatter Tod“ Ich habe den Code ausprobiert und steht immer noch das die Daten nicht abgespeichert werden können. Aber Danke. Ich probiere deinen ersten vorschlag mal aus weil ich glaube das ich damit nicht weiter kommen werde.

            Ich habe den Code ausprobiert und steht immer noch das die Daten nicht abgespeichert werden können. Aber Danke. Ich probiere deinen ersten vorschlag mal aus weil ich glaube das ich damit nicht weiter kommen werde.

            1. Hallo

              Die Semikola am Ende jeder Einfügung eines Datums aber schon. Besonders jenes, welches in der letzten Zeile vor dem FROM steht.

              Ich habe den Code ausprobiert und steht immer noch das die Daten nicht abgespeichert werden können. Aber Danke. Ich probiere deinen ersten vorschlag mal aus weil ich glaube das ich damit nicht weiter kommen werde.

              Mein Codebeispiel war zwar die bereinigte Version deines Updates, die bemängelten und korrigierten Teile sind aber allgemeingültig. Davon unabhängig gibt es einen Grund, warum dein Query nicht funktioniert. Der steht in einer Fehlermeldung, die du uns, warum auch immer, nicht zeigen kannst oder willst, was Martin schon vor einer Dreiviertelstunde bemängelt hat.

              Dir ohne Kenntnis der Meldung zu helfen, wird dadurch nicht leichter.

              Tschö, Auge

              --
              Es schimmerte ein Licht am Ende des Tunnels und es stammte von einem Flammenwerfer.
              Terry Pratchett, „Gevatter Tod“
              1. Hallo

                Die Semikola am Ende jeder Einfügung eines Datums aber schon. Besonders jenes, welches in der letzten Zeile vor dem FROM steht.

                Ich habe den Code ausprobiert und steht immer noch das die Daten nicht abgespeichert werden können. Aber Danke. Ich probiere deinen ersten vorschlag mal aus weil ich glaube das ich damit nicht weiter kommen werde.

                Mein Codebeispiel war zwar die bereinigte Version deines Updates, die bemängelten und korrigierten Teile sind aber allgemeingültig. Davon unabhängig gibt es einen Grund, warum dein Query nicht funktioniert. Der steht in einer Fehlermeldung, die du uns, warum auch immer, nicht zeigen kannst oder willst, was Martin schon vor einer Dreiviertelstunde bemängelt hat.

                Dir ohne Kenntnis der Meldung zu helfen, wird dadurch nicht leichter.

                Tschö, Auge

                --
                > Es schimmerte ein Licht am Ende des Tunnels und es stammte von einem Flammenwerfer.
                > Terry Pratchett, „Gevatter Tod“ Hatte ich doch schon mal geschrieben die fehlermeldung ist (Fehler beim Speichern) mehr fehler meldung gibt es da leider nicht

                Hatte ich doch schon mal geschrieben die fehlermeldung ist (Fehler beim Speichern) mehr fehler meldung gibt es da leider nicht

                1. Hallo

                  Davon unabhängig gibt es einen Grund, warum dein Query nicht funktioniert. Der steht in einer Fehlermeldung, die du uns, warum auch immer, nicht zeigen kannst oder willst ….

                  Dir ohne Kenntnis der Meldung zu helfen, wird dadurch nicht leichter.

                  Hatte ich doch schon mal geschrieben die fehlermeldung ist (Fehler beim Speichern) mehr fehler meldung gibt es da leider nicht

                  Nein! Das ist eine von dir selbst erzeugte Meldung als Reaktion auf den Fehler. Wenn du dort statt „Fehler beim Speichern“ „Ürksmürks“ hingeschrieben hättest, wäre dies die Meldung. Das hilft dir und uns kein bisschen weiter. Die Funktionen mysql_errno und mysql_error enthalten die relevanten Informationen. Schaue dir bitte besonders das Beispiel unter mysql_error an, das ist für Tests vollständig genug.

                  Tschö, Auge

                  --
                  Es schimmerte ein Licht am Ende des Tunnels und es stammte von einem Flammenwerfer.
                  Terry Pratchett, „Gevatter Tod“
    3. Hallo und guten Tag,

      ich habe ein kleines Problemchen und zwar nach dem man sich eingeloggt hat kann man das Benutzerprofil bearbeiten. Zuerst hatte ich das mit einer zweiten Tabelle gelöst doch da war das Problem das die Daten vom ersten Nutzer auch bei den zweiten Nutzer stand also bin ich auf die Idee gekommen die Daten des Benutzerprofils in die Login Tabelle einfügen zu lassen nur mir fehlt der genaue Code, ich weis nur das es irgendwie mit Update geht weiter weis ich aber nicht.

      Ich hoffe ihr könnt mit helfen.

      Diesen Code benutze ich jetzt gerade wo aber eine Fehlermeldung auftaucht.

      $sql = "SELECT 
                              emailadresse 
                          FROM 
                              login 
                          WHERE 
                              emailadresse = '".mysql_real_escape_string(trim($_POST['emailadresse']))."'
                              "; 
      
      $mobilnummer = $_POST["mobilnummer"]; 
      $strasse = $_POST["strasse"];
      $hausnummer = $_POST["hausnummer"];
      $plz = $_POST["plz"];
      $stadt = $_POST["stadt"];
      $webseite = $_POST["webseite"];
      $webseite1 = $_POST["webseite1"];
      				$sql = "UPDATE 
                              login 
                          SET 
                              mobilnummer = '".(trim($mobilnummer))."';
      						strasse = '".(trim($strasse))."';
      						hausnummer = '".(trim($hausnummer))."'; 
      						plz = '".(trim($plz))."'; 
      						stadt = '".(trim($stadt))."'; 
      						webseite = '".(trim($webseite))."'; 
      						webseite1 = '".(trim($webseite1))."'; 
                          WHERE 
                              emailadresse = '".mysql_real_escape_string(trim($_POST['emailadresse']))."'
                         ";
      

      Der Code sieht ganz gefährlich aus. Da werden Daten aus dem Post-Request direkt in die Datenbankschnittstelle getragen, ohne sie entsprechend vorzubehandeln ("escapen").

      Siehe hierzu http://wiki.selfhtml.org/wiki/Kontextwechsel

      Hier ist es aber schon besser:

          WHERE emailadresse = '" . mysql_real_escape_string(trim($_POST['emailadresse'])) . "'";
      

      Grüße
      TS

  2. Hallo

    ich habe ein kleines Problemchen und zwar nach dem man sich eingeloggt hat kann man das Benutzerprofil bearbeiten.

    Ist das ein Problem? Ich hielte das für ein Feature.

    Zuerst hatte ich das mit einer zweiten Tabelle gelöst doch da war das Problem das die Daten vom ersten Nutzer auch bei den zweiten Nutzer stand also bin ich auf die Idee gekommen die Daten des Benutzerprofils in die Login Tabelle einfügen zu lassen nur mir fehlt der genaue Code, ich weis nur das es irgendwie mit Update geht weiter weis ich aber nicht.

    Das hört sich verdächtig danach an, dass du mit dem Handling von Datenbanken unerfahren bist. Daher ein paar Worte vorweg.

    Du musst dir überlegen, welche Daten zusammengehören, also in welcher Beziehung sie zueinander stehen. Danach kannst du festzulegen, in welche Tabelle sie gehören. In diesem Fall sieht das folgendermaßen aus. Du hast Daten, die zum Benutzer gehören (z.B. Benutzername, Passwort, Registrierungszeitpunkt). Du möchtest den Benutzern nun Eingabemöglichkeiten für ein Profil zur Verfügung stellen.

    Das Profil ist für jeden Benutzer einzigartig und jeder Benutzer hat nur ein Profil. In der Datenbank müssen für die Eingaben Felder vorhanden sein, die die Daten aufnehmen. Du kannst diese Felder an die vorhandene Tabelle mit den Benutzerdaten ranhängen. Benutzer, die keine Eingaben für das Profil vornehmen, haben an der Stelle halt leere Felder. Du kannst aber auch eine neue Tabelle erzeugen (das war ja offensichtlich dein erster Versuch), in der in jedem Eintrag nicht nur die Daten selbst, sondern auch der Index des Eintrags der Benutzerdaten des Benutzers vermerkt ist. Damit lassen sich die zusammengehörigen Einträge miteinander verknüpfen. zudem werden nur Daten für vorhandene Profile gespeichert.

    Tabelle Benutzerdaten

    |userID|name|passwort |---| |1|Hans|xxxxxxx |2|Ilse|xxxxxxx |3|Friedbert|xxxxxxx

    Tabelle Profile

    |profID|userID|text|website|bild |---| |1|3|Ich bin der Friedbert!|http://www.example.com| |2|1|Hans ist mein werter Name.|http://www.example.net|hans.jpeg

    Hans und Friedbert haben Profile angelegt, Ilse nicht. Gibst du die Daten von Friedbert (userID: 3) aus, kannst du nun mit SELECT text, website, bild FROM Profile WHERE userID = 3 die dazugehörigen Profildaten laden.

    Wenn du das schon (wenn auch fehlerbehaftet) implementiert hattest, gehst du auch zukünftig genau so vor. Für die Syntax von INSERT, UPDATE, etc. schaust du bitte in die MySQL-Dokumentation. Du musst dich nur erst einmal für eine Struktur entscheiden.

    Tschö, Auge

    --
    Es schimmerte ein Licht am Ende des Tunnels und es stammte von einem Flammenwerfer.
    Terry Pratchett, „Gevatter Tod“
    1. [Vollzitat]

      Vielen Dank das hat mir sehr gut weiter geholfen :D

    2. [Vollzitat]

      Du hast zum abfragen „SELECT text, website, bild FROM Profile WHERE userID = 3“ dies geschrieben und meine frage wäre gibt es die möglich keit das die userID automatisch erkannt wird?

      1. Hallo

        Bitte lösche die Teile des vorherigen Postings, die mit deiner Nachfrage nichts zu tun haben. Das macht die Sache übersichtlicher.

        Hans und Friedbert haben Profile angelegt, Ilse nicht. Gibst du die Daten von Friedbert (userID: 3) aus, kannst du nun mit SELECT text, website, bild FROM Profile WHERE userID = 3 die dazugehörigen Profildaten laden.

        Du hast zum abfragen „SELECT text, website, bild FROM Profile WHERE userID = 3“ dies geschrieben und meine frage wäre gibt es die möglich keit das die userID automatisch erkannt wird?

        Ja. Wie, hängt vom wann ab. Wenn du die Profildaten mit den Benutzerdaten laden willst, kannst du die Tabellen JOINen. Wie ein solcher JOIN erfolgt, hängt vom konkreten Anwendungsfall ab. Für das Verständnis des Warums und Wies der Technik ist dieses Tutorial sehr empfehlenswert. Lies bitte vor den weiteren Schritten zuerst und besonders die dortige Einleitung!

        Gesetzt den (hier sehr wahrscheinlichen) Fall, du lädst in jedem Fall die Benutzerdaten, und nur bei Vorhandensein dazu die Profildaten, wäre ein LEFT JOIN angezeigt (linke Seite: Benutzerdaten, rechte Seite: Profildaten).

        Tschö, Auge

        --
        Es schimmerte ein Licht am Ende des Tunnels und es stammte von einem Flammenwerfer.
        Terry Pratchett, „Gevatter Tod“