it-swarm.com.de

Joomla 3.7 ändert den Wert in der Datenbank nach dem Drücken der Formularschaltfläche

Ich möchte etwas wirklich Einfaches tun, muss aber Joomla verwenden, was es wahrscheinlich kompliziert macht, weil ich weniger Erfahrung in der Joomla-Entwicklung habe.

Ich habe ein Feld mit einem Wert (eine Zahl), der von einer anderen Komponente deklariert und in der Joomla-Datenbank gespeichert wird. Dann habe ich einen Submite-Button in einem Formular (ich benutze übrigens chronoforms5).

Ich möchte den Wert meines Feldes ändern, nachdem ich auf den Senden-Button meines Formulars geklickt habe.

Normalerweise würde ich eine PHP -Datei mit der Datenbankverbindung, Abfrage usw. schreiben und einen Javascript-Handler für die Schaltfläche schreiben, der einen AJAX -Aufruf auf diese PHP -Datei ausführt . Aber wie kann ich das mit Joomla machen? Ich suche nach einer einfachen Lösung, Sicherheit ist fast nicht relevant. Vielen Dank!

1

Ich habe einige der Chronoforms 5-Dokumentationen gelesen. Danach konnte ich einen benutzerdefinierten Code in das Element "Benutzerdefinierter Code" schreiben, das am Ende eines normalen Chronoforms-Formulars mit der Schaltfläche "Senden" hinzugefügt wurde. Der folgende Code wird nach einer erfolgreichen Übermittlung ausgeführt. Es liest einen "POST" -Parameter, lädt ein Feld aus der Datenbank und aktualisiert es, nachdem einige Änderungen vorgenommen wurden. Vorschläge und Verbesserungen sind weiterhin erwünscht.

<?php
    // Get a db connection.
    $db = JFactory::getDbo();

    // Create a new query object.
    $query = $db->getQuery(true);

    // Get event ID from form post
    $eventID = $form->data['eventID'];
    $numberOfTickets = $form->data['numberOfTickets'];

    //#### GET FIELD FROM DB ####//

    // Conditions for which records should be updated and selected.
    $conditions = array(
        $db->quoteName('search') .'='. $db->quote('event-id'.$eventID)
    );

    $query->select($db->quoteName('replace'))->from($db->quoteName('#__rereplacer'))->where($conditions);

    $db->setQuery($query);
    $availableTickets = $db->loadResult();

    //#### UPDATE FIELD FROM DB ####//

    // Fields to update .
    $availableTickets = (int)$availableTickets - (int)$numberOfTickets;
    if ($availableTickets < 0) {
        $availableTickets = 0;
    }

    $fields = array(
        $db->quoteName('replace') . ' = '. $db->quote($availableTickets)
    );

    $query->update($db->quoteName('#__rereplacer'))->set($fields)->where($conditions);

    $db->setQuery($query);
    $result = $db->execute();

 ?>
0

Da Sie eine Formularerweiterung verwenden, müssen Sie diese anhand der Optionen und Funktionen ausführen. Ich habe noch keine so große Erfahrung mit Chronoforms, aber ich würde nach einer On-Submit-Option suchen, um benutzerdefinierten Code auszuführen. Ich bin mir nicht sicher, ob Sie AJAX (js bei Übergabe an eine serverseitige Aktion) oder einfach nur ein PHP-Snippet implementieren müssen, das alles aktualisiert, was Sie in der Datenbank aktualisieren möchten.

Es ist auch möglich, dass Chronoformen einen anderen internen Weg bieten, um die Manipulation von Datenbankdaten aus dem Formular heraus zu ermöglichen - schöpfen Sie also zuerst alle Möglichkeiten in Chronoformen aus, indem Sie die Dokumentation studieren.

Schließlich ist es in Ihrer Frage nicht klar, ob Sie fragen, wie CRUD-Datenbank-Dinge zu tun sind ... Wenn Sie danach fragen, überprüfen Sie hier:

https://docs.joomla.org/Inserting,_Updating_and_Removing_data_using_JDatabase

2
FFrewin