+ Antworten
Ergebnis 1 bis 8 von 8

Thema: (Verschoben) Daten in DB speichern - wo und wie aus dem Backend?

  1. #1
    Gehört zum Inventar
    Registriert seit
    18.02.2005
    Beiträge
    8.841
    Bedankte sich
    85
    Erhielt 2.269 Danksagungen
    in 1.936 Beiträgen

    Standard (Verschoben) Daten in DB speichern - wo und wie aus dem Backend?

    Hallo zusammen,

    ich habe einige Stellen des Cores auf dem Kopf gestellt. Nun habe ich einige Dinge im Backend geändert und weitere Möglichkeiten geschaffen bestimmt Einträge in der Datenbank anzulegen. Um zunächst testweise Daten einzutragen, habe ich die Variablen per
    PHP-Code:
    <form action="index2.php" method="post" name="adminForm"
    an die index2.php übergeben. Das Problem ist, dass die Daten grundsätzlich immer an die index2.php übergeben werden, aber es hier keine Funktion zum Speichern der Daten gibt (zumindest gibt es keine in der index2.php). In welcher Datei wird denn das gemacht? Ich habe mir unschönerweise nun so beholfen, dass ich den Code zum Speichern der Daten in die index2.php geschrieben habe. Das funktioniert schon, aber mir wäre lieber es so zu machen, wie es das Core macht. Vielleicht kann mir ja mal jemand erzählen, wie und vor allem in welcher Datei das gemacht wird.

    Gruß
    ec

  2. #2
    Gehört zum Inventar Avatar von KaffDaddy
    Registriert seit
    06.02.2005
    Ort
    Kassel
    Beiträge
    5.868
    Bedankte sich
    27
    Erhielt 1.072 Danksagungen
    in 710 Beiträgen

    Standard

    Moin Moin !

    Ähm, die Schnittstelle zur Datenbank in Joomla befindet sich in der Klasse $database, die Du in der Datei includes/database.php findest.

    POST-/GET-Daten liest Du über den Befehl mosGetParam aus und zwar mit folgender Syntax:
    PHP-Code:
    mosGetParam$_POST"Parametername"WertbeinichtvorhandenemParameter ); 
    Sprich, wenn Du zum Beispiel in Deinem Formular ein Textfeld mit dem Namen Username hast
    HTML-Code:
    <input type="text" name="username" value="" />
    , kannst Du in Deiner Komponente/Modul/Mambot über den Befehl
    PHP-Code:
    mosGetParam$_POST"username""" ); 
    zugreifen, wenn das Formular abgeschickt wurde.

    CU
    Stephan
    Insomniaonline

    Gelöste Threads bitte markieren: Anleitung

  3. Erhielt Danksagungen von:


  4. #3
    Gehört zum Inventar
    Registriert seit
    18.02.2005
    Beiträge
    8.841
    Bedankte sich
    85
    Erhielt 2.269 Danksagungen
    in 1.936 Beiträgen

    Standard

    So weit, so gut.
    Aber ich habe immer noch nicht recht begriffen, wie ich diese Daten nun in die DB bekomme.

    PHP-Code:
    <form action="index2.php" method="post" name="adminForm"
    <
    input type="text" name="username" value="" />

    $username mosGetParam$_POST"username""" ); 
    echo 
    $username
    Und wie bekomme ich nun den Wert $username in die Datenbank?
    Irgendwie muss ich dem Core doch sagen, bitte speichere oder update $username in #__xxxx WHERE id=$my->id usw.


    Gruß
    ec

  5. #4
    Gehört zum Inventar Avatar von KaffDaddy
    Registriert seit
    06.02.2005
    Ort
    Kassel
    Beiträge
    5.868
    Bedankte sich
    27
    Erhielt 1.072 Danksagungen
    in 710 Beiträgen

    Standard

    Zitat Zitat von ecomeback
    Und wie bekomme ich nun den Wert $username in die Datenbank?
    Irgendwie muss ich dem Core doch sagen, bitte speichere oder update $username in #__xxxx WHERE id=$my->id usw.
    Habe ich Dir auch schon geschrieben: mit der Klasse $database. Wie diese definiert ist und welche Funktionen Dir da bereitstehen, findest Du in der Datei includes/database.php.

    Ein möglicher Ansatz wäre dieser hier. Das geht aber auch noch besser, wenn man seine DB-Tabelle als Klasse beschreibt und diese $database übergibt. Aber da ich keine Ahnung habe, was Du überhaupt machst, benutzen wir dieses hier mal:
    PHP-Code:
    <?php
    $username 
    mosGetParam$_POST"username""" );

    global 
    $database;

    $query "INSERT INTO #__tabellennameohneprefix ( username ) VALUES ( '" $username "' )";
    $database->setQuery$query );

    if (!
    $database->query()) {
        echo 
    "<script> alert('".$database->getErrorMsg()."'); window.history.go(-1); </script>\n";
        exit();
    }
    ?>
    CU
    Stephan
    Insomniaonline

    Gelöste Threads bitte markieren: Anleitung

  6. Erhielt Danksagungen von:


  7. #5
    Gehört zum Inventar
    Registriert seit
    18.02.2005
    Beiträge
    8.841
    Bedankte sich
    85
    Erhielt 2.269 Danksagungen
    in 1.936 Beiträgen

    Standard

    Hmm, das diese Möglichkeit besteht ist klar; ich habe es ja bereits so umgesetzt. Mein Problem ist nun, wie man das Ganze an die $database übergibt. (die Datei ist zunächst mal nicht wirklich übersichtlich? Was ist da interessant?)

    Um es ganz konkret zu machen. Ein Beispiel für eine Veränderung ist die
    administrator/components/com_menus/components/components.menu.html.php

    Die eingabe des Menünames kennt jeder: (ohne html Grundgerüst!)
    PHP-Code:
    <input class="inputbox" type="text" name="name" size="50" maxlength="100" value="<?php echo htmlspecialchars$menu->nameENT_QUOTES ); ?>" />
    Ich möchte also um das Feld ftitle erweitern.
    PHP-Code:
    <input class="inputbox" type="text" name="ftitle" size="50" maxlength="100" value="<?php echo $menu->ftitle?>" />
    Übergeben wird das Ganze an die
    PHP-Code:
    <form action="index2.php" method="post" name="adminForm"
    Wie kommt man nun an die $database?

    Gruß
    ec
    Geändert von ecomeback (02.04.2006 um 19:31 Uhr)

  8. #6
    Gehört zum Inventar Avatar von KaffDaddy
    Registriert seit
    06.02.2005
    Ort
    Kassel
    Beiträge
    5.868
    Bedankte sich
    27
    Erhielt 1.072 Danksagungen
    in 710 Beiträgen

    Standard

    Zitat Zitat von ecomeback
    Wie kommt man nun an die $database?
    Schau mal in die Datei administrator/components/com_menus/admin.menus.php in die Funktion saveMenu, denn dorthin wird das Formular übergeben.

    CU
    Stephan
    Insomniaonline

    Gelöste Threads bitte markieren: Anleitung

  9. Erhielt Danksagungen von:


  10. #7
    Gehört zum Inventar
    Registriert seit
    18.02.2005
    Beiträge
    8.841
    Bedankte sich
    85
    Erhielt 2.269 Danksagungen
    in 1.936 Beiträgen

    Standard

    Da ist es ja. Also wenn man nicht genau weiß wonach man suchen muss, dann ist das Core ein ganz harter Brocken. Letztendlich kann ich die Werte ja überall hin übergeben.

    Vielen Dank Stephan, da werde ich mal ansetzen und schauen, ob es funktioniert.

    Gruß
    ec

  11. #8
    Neu an Board
    Registriert seit
    27.09.2004
    Beiträge
    65
    Bedankte sich
    11
    1 Danksagung in 1 Beitrag

    Standard

    Zwar schon ein wenig älter, aber ich bräuchte da sowas ähnliches und zwar vom Frontend aus.

    ich habe den jos_content Table für alle Einträge um einen Wert "activebg" ergänzt der die Werte 1,2 oder 3 bekommen soll(standardmäßig ist er jetzt bei allen contentitems 1). Diese 3 Werte möchte ich vom Frontend aus der Editorform heraus mit Radiobuttons auswählen können.

    Leider bekomme ich es nicht hin den Wert zu speichern, weil ich nicht weis wohin die Daten aus der adminform fliessen. Habe nur diese javascript Funktionen Submitform entdeckt, scheint irgendwie alles irgendwohin weitergeleitet zu werden(index.php???).

    Auch das Auslesen ist nicht grad elegant:

    PHP-Code:
        function getactive_bgcolor($id)
        { 
            global 
    $database;        
            
    $query"SELECT activebg FROM #__content WHERE id='$id'";     
            
    $database->setQuery"$query" );        
            
    $color_nr$database->loadResult();         
            return 
    $color_nr;     
        } 

    Sagen wir also ich habe ein ganz simples Eingabefeld das zusätzlich der function editContent in der content.html.php hinzugefügt wurd :

    PHP-Code:
    <input class="inputbox" type="text" name="activebg" size="50" maxlength="100" value="<?php echo $row->activebg?>" />

    a) Wie bekomme ich es hin das der bereits vorhandene Wert elegant aus der Datenbank ausgelesen und im Feld steht? echo $row->activebg tut es irgendwie nicht. Meine eigene Funktion tut es zur Not, gefällt mir aber nicht, möchte das es über den Core läuft so wie es sich gehört und keinen Pfusch machen.

    b) wie bekomm ich den geänderten Inhalt aus dem Eingabefeld zurück in die Datenbank? Wäre total klasse wenn mir da jemand kurz die Schritte erläutern könnte, vor allem welche Dateien für mich wichtig sind, da blick ich noch nicht so ganz durch als joomla Newbee

+ Antworten

Ähnliche Themen

  1. Modul/Komponente mit dem Daten aus einer Tabelle gesucht und agezeigt werden kann
    Von strizi im Forum Module / Komponenten Suche bzw. Entwicklung
    Antworten: 2
    Letzter Beitrag: 15.02.2006, 13:01
  2. Antworten: 0
    Letzter Beitrag: 08.02.2006, 10:13
  3. Backend mit FireFox nicht nutzbar wg. JavaScript
    Von Joomla_User im Forum Allgemeine Fragen zu Joomla
    Antworten: 8
    Letzter Beitrag: 19.01.2006, 10:32
  4. Probleme bei 2 Frontend und einem Backend Server
    Von milchi im Forum Allgemeine Fragen zu Mambo
    Antworten: 0
    Letzter Beitrag: 06.10.2005, 16:57
  5. Probleme mit dem Internet Explorer
    Von star-hunter im Forum Allgemeine Fragen zu Mambo
    Antworten: 10
    Letzter Beitrag: 05.08.2005, 15:43

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein