+ Antworten
Ergebnis 1 bis 6 von 6

Thema: In jos_user Tabelle speichern

  1. #1
    Neu an Board
    Registriert seit
    22.09.2010
    Beiträge
    5
    Bedankte sich
    2
    Erhielt 0 Danksagungen
    in 0 Beiträgen

    Standard In jos_user Tabelle speichern

    Hallo liebe Forengemeinde,

    Ich bin momentan dabei eine Joomla-Komponente zu schreiben in der ein User ein Mehrseitiges Formular ausfüllen muss. Nun möchte ich abfragen ob der momentan angemeldete Benutzer dieses Formular schon ausgefüllt hat.
    Dazu habe ich der jos_user Tabelle eine neue Variable 'userData' gegeben.
    so kann ich ganz bequem mit:

    Code:
    $user =& JFactory::getUser();
    if($user->userData == 1){...}
    abfragen ob der User seine Daten schon eingegeben hat. nun frage ich mich aber wie ich ich die userData auf 1 setzen kann?
    Ich möchte also dass wenn der User das Formular ausgefüllt hat die Variable auf 1. gesetzt wird. Probiert habe ich das in meiner com_myuser/site/models/myuser.php in der store funktion für das Formular:
    Code:
    function store() {
    		$row =& $this->getTable();
    		$user =& JFactory::getUser();
    		$user->userData = 1;
    		$data = JRequest::get( 'post' );
    		if (!$row->bind($data)) {
    			$this->setError($this->_db->getErrorMsg());
    			return false;
    		}
    		if (!$row->check()) {
    			$this->setError($this->_db->getErrorMsg());
    			return false;
    		}
    		if (!$row->store()) {
    			$this->setError( $row->getErrorMsg() );
    			return false;
    		}
    		$db = &JFactory::getDBO();
    		$query = ' UPDATE #__users '.
    				 ' SET userData = 1 '.
    				 ' WHERE id =63';
    		$db->setQuery($query);
    		
    		
    		return true;
    	}
    das funktioniert leider nicht. Hat vieleicht wer eine Idee wieso das nicht geht, oder noch besser, wie es funktioniert?
    Danke im voraus,
    eure Cronic.

  2. #2
    Verbringt hier viel Zeit
    Registriert seit
    24.01.2006
    Beiträge
    594
    Bedankte sich
    108
    Erhielt 359 Danksagungen
    in 203 Beiträgen

    Standard

    Es ist nicht sinnvoll bestehende Core Tabellen zu erweitern. Normalerweise erstellt man eine extra Tabelle mit dem Feld "user_id", die dann auf die Core Usertabelle per JOIN verknüpft wird. Speichern kann man dann ganz einfach mittels einer eigenen JTable Klasse.

  3. Erhielt Danksagungen von:


  4. #3
    Neu an Board
    Registriert seit
    22.09.2010
    Beiträge
    5
    Bedankte sich
    2
    Erhielt 0 Danksagungen
    in 0 Beiträgen

    Standard

    Danke ersteinmal für die Antwort.
    Ich hab leider nicht soviel Erfahrung in der Joomla Entwicklung ist es den möglich in einer store Funktion in 2 verschiedenen Tabellen zu speichern?
    Das währe eh hilfreich für mich da ich die Daten aus den Formular eigentlich in 2 verschiedenen Tabellen speichern müsste geht das? und wenn ja kennt irgenwer ein tutorial oder kann mir einen kleinen Ausschnitt posten damit ich eine vorstellung bekomme wie das geht.
    Anbei Poste ich einfach mal ein paar Daten zu meinen Projekt.
    Danke euch allen.
    Eure Cronic.

  5. #4
    Neu an Board
    Registriert seit
    22.09.2010
    Beiträge
    5
    Bedankte sich
    2
    Erhielt 0 Danksagungen
    in 0 Beiträgen

    Standard Daten zum Projekt

    Ich versuche eine Komponente zu schreiben in der ein User Daten zu sich und einer weiteren (oder mehreren) Person angeben soll.
    In meinem view habe ich nur das formular was der user ausfüllt:
    Code:
    <form action="index.php" method="post" 
           name="adminForm" id="adminForm">
    <div class="col100">
    <a href="#" onclick="javascript: submitbutton('save')" class="toolbar"><span style="font-size:24px; color:#0F0; font-weight:bold; margin-right:15px;">Speichern</span></a>
        <a href="#" onclick="javascript: submitbutton('cancel')" class="toolbar"><span style="font-size:24px; color:#F00; font-weight:bold;">Schließen</span></a>
        <fieldset class="adminform">
            <legend><?php echo JText::_( 'Details' ); ?></legend>
            <table class="admintable">
            <tr>
                <td width="100" align="right" class="key">
                    <label for="pair">4</label>
                </td>
                <td>
                    <input class="text_area" type="text" name="pair" 
                           id="pair" size="32" maxlength="250" 
                           value="<?php echo $this->user->pair;?>" />
                </td>
            </tr>
           <tr>
                <td width="100" align="right" class="key">
                    <label for="points">Punkte</label>
                </td>
                <td>
                    <input class="text_area" type="text" name="points" 
                           id="points" size="32" maxlength="250" 
                           value="<?php echo $this->user->points;?>" />
                </td>
            </tr>
         </table>
        </fieldset>
    </div>
    <div class="clr"></div>
    <input type="hidden" name="option" value="com_mykompuser" />
    <input type="hidden" name="id" 
           value="<?php echo $this->user->id; ?>" />
    <input type="hidden" name="task" value="" />
    <input type="hidden" name="controller" value="mykompuser" />
    <input type="submit" value="next" />
    </form>
    Und die view.html.php:
    Code:
    <?php
    defined('_JEXEC') or die('Restriced Access');
    jimport('joomla.application.component.view');
    class MyKompUserViewMyKompUser extends JView {
    	function display($tpl = null) {
    	    $userData  =& $this->get('Data');
    	    $isNew     = ($userData->id < 1);
    	    $text = $isNew ? JText::_( 'New' ) : JText::_( 'Edit' );
    	    $this->assignRef('user', $user);
    	    parent::display($tpl);
    	}
    }
    Um das Ganze zu speichern habe ich die Tabelle:
    Code:
    class TableMyKompUser extends JTable {
        var $id = null;
        var $pair = null;
        var $points = null;
        var $published = null;
         function TableMyKompUser( &$db ) {
            parent::__construct('#__mykompuser', 'id', $db);
        }
    }
    Und in der Modell klasse die store Funktion:

    Code:
    ...
    function store() {
            $row =& $this->getTable();
            $data = JRequest::get( 'post' );
            if (!$row->bind($data)) {
                $this->setError($this->_db->getErrorMsg());
                return false;
            }
            if (!$row->check()) {
                $this->setError($this->_db->getErrorMsg());
                return false;
            }
            if (!$row->store()) {
                $this->setError( $row->getErrorMsg() );
                return false;
            }
            
            return true;
        }
    ...
    wie kann ich nun aus meinem Formular die Daten in 2 verschiedene Tabellen schreiben?
    Sagen wir nun einfach ich will das Paar in der einen Tabelle haben und die Punkte für das Paar in der anderen, kann mir irgend jemand sagen wie das machbar ist.. ? mir fällt leider nix ein.
    Eure Cronic.

  6. #5
    War schon öfter hier
    Registriert seit
    28.11.2008
    Beiträge
    149
    Bedankte sich
    22
    Erhielt 4 Danksagungen
    in 4 Beiträgen

    Standard

    Vielleicht mittels 2mal $db->setQuery("Insert ..) im Model? Es zwingt Dich ja keiner JTable zu verwenden...

  7. #6
    Verbringt hier viel Zeit
    Registriert seit
    24.01.2006
    Beiträge
    594
    Bedankte sich
    108
    Erhielt 359 Danksagungen
    in 203 Beiträgen

    Standard

    Zitat Zitat von vxcronic Beitrag anzeigen
    ist es den möglich in einer store Funktion in 2 verschiedenen Tabellen zu speichern?
    Du kannst z.B. mit zwei verschiedenen Tabellenobjekten 2 save() Methoden aufrufen, die dann in die jeweilige Datenbank speichern.

+ Antworten

Lesezeichen

Berechtigungen

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