Anfängerfrage: Datenbankwerte per Button Überschreiben

  • Schönen guten Tag liebe Damen und Herren,

    mein Name ist Patrick, ich bin gerade 24 Jahre alt geworden und stoße trotz abgeschlossenen Masterstudiums gerade an meine Grenzen (Praxiserfahrung geht nunmal doch vor Theorie thinking)...hätte ich doch lieber IT statt Maschinenbau wählen sollen..wir haben nämlich neben SPS-Systemen und einem Crashkurs in Python nicht viel mit Programmierung am Hut gehabt..

    Ich selbst kam bisher immer für Windows mittels Visual Basic und für Android mittels anderer Helfersoftware an mein Entwicklungsziel..doch von HTML oder PHP habe ich kein Vorwissen und keine Ahnung, vielmehr erscheint mir diese Art von Code vergleichsweise sehr aufwendig und komplex!

    So lande ich nun nach bereits mehrstündiger Internetrecherche nicht wirklich schlauer bei euch, und hoffe, dass mir jemand auf die Sprünge helfen kann.

    Im Rahmen der Gestaltung einer Joomla-Homepage habe ich bereits folgendes umgesetzt, was allerdings aufgrund der vorgegebenen Module vorerst keine Schwierigkeit darstellte:

    - User können sich auf der Homepage mit "Standard-Userdaten" registrieren (Name, E-Mail, Benutzername). Diese Daten werden in der mySQL-Datenbank unter "user" abgespeichert und bekommen entsprechend eine Eintrags-ID zugewiesen.

    Da ich dem User gerne anbieten können möchte, sein Fahrzeug abspeichern zu können (es geht um das Hobby "Auto"), legte ich in der "user" Datenbank die zusätzlichen Spalten "Fahrzeug1" und "Fahrzeug2" manuell an.

    Ebenso gab ich für meinen fiktiven Test-User-Account für "Fahrzeug1" einen Wert vor. "Fahrzeug2" ließ ich zunächst leer.

    Zunächst versuchte ich grundsätzlich einmal bei registriertem User die in der Datenbank festgehaltenen Werte abzurufen.

    Das gelang mit mir dem folgenden Code recht gut, der für mich als Laie auch gut nachvollziehbar ist:


    <?php

    $user =& JFactory::getUser();

    $user_id = $user->id;

    echo "<p>This user's ID is {$user->id}, email is {$user->email}, and username is {$user->username}</p>";

    echo "<p>This user has the following cars: {$user->Fahrzeug1} and {$user->Fahrzeug2}. </p>"


    ?>


    Ich persönlich verstehe das jetzt so, dass man durch den Login des eigenen Users relativ einfach und mit wenigen Handgriffen auf die Daten zugreifen kann, welche für diesen User mit dieser ID in der Datenbank hinterlegt sind.

    Nun möchte ich dem User die Möglichkeit bieten, diese Daten anpassen zu können, genauer gesagt den Eintrag in der Spalte "Fahrzeug1".

    Hierzu habe ich bisher folgenden Code verfasst:

    <html>

    <body>

    <form action="/action_page.php">

    <label for="Fahrzeug1">Fahrzeug 1:</label><br>

    <input type="text" id="Fahrzeug1" name="Fahrzeug1"><br>

    <input type="submit" value="Aktualisieren">

    </form>

    </body>

    </html>

    1. Ich erstelle also ein Label/eine Überschrift, welche mir sagt, dass es im Textfeld um das "Fahrzeug 1" geht.

    2. Ich erstelle das Textfeld, in das ich einen gewünschten Wert eintragen kann.

    3. Ich habe einen Button mit der Beschriftung "Aktualisieren"

    Wie schaffe ich es bitte, den eingegebenen Wert im Textfeld durch Druck des Buttons "Aktualisieren" auf den Wert {$user->Fahrzeug1} in der Datenbank des angemeldeten Users zu schreiben?

    Das Netz liefert nur sehr ausgedehnte Lösungen für den Zugriff auf externe Datenbanken...wenn ich doch mit wenigen Zeilen auf die Daten zugreifen kann, müssten nicht auch wenige Zeilen zum Überschreiben der Werte genügen?

    Ich wäre wirklich sehr dankbar, wenn mir jemand erläutern könnte, wie die Sache umzusetzen wäre, bzw. welche Schritte ich dazu gehen muss...ggf. mit Erklärung, damit ich auch etwas lerne.

    Danke im Voraus für jede Antwort!

  • Warum so kompliziert.

    Das solltest Du über die joomlainternen Custom-Fields auch erreichen und dann macht Joomla alles für Dich.

    Du könntest auch das joomlaeigene Plugin "Benutze-Profile" aktivieren und zusätzliche Felder einfach missbrauchen und mit einem Sprachoverride umbenennen.

    Das geht alles ohne eine Zeile zu programmieren.

  • Mir fehlt wohl einfach noch der Überblick über die möglichen Funktionen/Plugins in Joomla...

    Über das Plugin "Benutzer-Profile" bin ich bereits gestolpert...jedoch war mir nicht ganz klar wie ich voreingestellte Felder umbenenne...werde mich mal über diesen "Sprachoverride" informieren.

    Mit "Custom-Fields" wäre ein Zugriff auf die Datenbank einfach umsetzbar oder müsste ich auch da Code schreiben?

  • Mit Custom Fields geht das ohne dass du selbst in der Datenbank rumbasteln musst. Allgemein solltest du darauf verzichten, an Joomla-eigenen Datenbanktabellen herumzubasteln, da dir das wenns dumm läuft Probleme bei zukünftigen Updates bereitet. Wenn du was eigenes entwickelst, leg dir eigene Datenbanktabellen dafür an. Aber wie Tom schreibt, sollten sich deine Anforderungen erst mal auch ohne eigene Programmierung umsetzen lassen.

  • mir nicht ganz klar wie ich voreingestellte Felder umbenenne...werde mich mal über diesen "Sprachoverride"

    https://www.j-over.de/de/faq/was-sin…rwendet-man-sie

    Mit "Custom-Fields" wäre ein Zugriff auf die Datenbank einfach umsetzbar oder müsste ich auch da Code schreiben?

    Dafür musst Du keinen Code schreiben. Ich gebe zu, für die Profile habe ich CF noch nicht verwendet, aber Du definierst einfach was es für ein Feld es ist. Der Benutzer schreibt seinen Text rein und es wird austomatisch in der Datenbank gespeichert.
    https://www.joomlashack.com/blog/tutorials/custom-fields/

    Nur wenn Du was anderes als die Standradausgabe des Feldes haben willst, musst Du ein paar Zeilen in den View coden. Aber auch dafür gibt es Tutorials.

  • Langfristiges Ziel wäre es, dass neben dem Fahrzeugnamen auch bestimmte Messwerte am Fahrzeug durch den User angegeben werden, aus denen wiederum ein dritter Wert berechnet wird, der ebenfalls in der Datenbank abgespeichert werden soll. Es geht somit nicht nur darum, die vom User direkt angegebenen Werte abzuspeichern, sondern auch im Hintergrund berechnete Werte. Für Letztere würde ich sowieso eine zusätzliche Spalte in der DB benötigen.

    Mit Custom Fields geht das ohne dass du selbst in der Datenbank rumbasteln musst. Allgemein solltest du darauf verzichten, an Joomla-eigenen Datenbanktabellen herumzubasteln, da dir das wenns dumm läuft Probleme bei zukünftigen Updates bereitet. Wenn du was eigenes entwickelst, leg dir eigene Datenbanktabellen dafür an. Aber wie Tom schreibt, sollten sich deine Anforderungen erst mal auch ohne eigene Programmierung umsetzen lassen.

    Eine eigene Datenbanktabelle habe ich bereits neben der von Joomla...um auf diese zugreifen zu können, müsste ich jedoch wiederum einen Code schreiben, der für den Zugriff auf externe Datenbanken zuständig ist, richtig?

    Vielen Dank schonmal!

  • Es geht somit nicht nur darum, die vom User direkt angegebenen Werte abzuspeichern, sondern auch im Hintergrund berechnete Werte. Für Letztere würde ich sowieso eine zusätzliche Spalte in der DB benötigen.

    Nein, da du auch dafür ein eigenes Benutzer-Feld verwenden kannst, dass du bspw. mit JavaScript berechnest und befüllst und mitspeicherst.

  • Oder, wenn es mehr als nur zwei, drei Felder werden sollen und komplexe Sachen im Formular gemacht werden sollen, mit dem Content Construction Kid (CCK) Seblod das Ganze umsetzen.

    Dort kannst du alles ohne Programmierung umsetzen. Brauchst aber etwas Zeit, um dich n diese mächtige Erweiterung einzuarbeiten.

    Bei Interesse folge meiner Signatur.