Joomla! Forum Schweiz wird Teil der D-A-CH Community

Nach vielen Jahren als zentrale Anlaufstelle für Fragen rund um Joomla! in der Schweiz wird das Joomla! Forum Schweiz künftig als Archiv weitergeführt.

Die Joomla!-Communities aus Deutschland, Österreich und der Schweiz arbeiten heute enger denn je zusammen. Deshalb bündeln wir künftig auch den deutschsprachigen Support und Austausch an einem gemeinsamen Ort im Joomla! D-A-CH Forum.

Für neue Fragen, Diskussionen und den Austausch mit der Community nutzt bitte ab sofort:

forum.joomla.de

Das Joomla! Forum Schweiz bleibt weiterhin bestehen und wird als Archiv im Lesemodus erhalten. Die vielen Beiträge, Lösungen und Erfahrungen aus den vergangenen Jahren bleiben damit weiterhin zugänglich und über die Suche auffindbar.

Wir bedanken uns herzlich bei allen Mitgliedern, Moderatoren und Helfern, die das Schweizer Joomla! Forum über viele Jahre mit ihrem Wissen und ihrem Engagement geprägt haben.

Wir sehen uns im Joomla! D-A-CH Forum!

Eintrag in DB schreiben

  • eagle1985
  • Autor
  • Neues Mitglied
  • Neues Mitglied
Mehr
16 Aug. 2008 18:12 #16018 von eagle1985
Eintrag in DB schreiben wurde erstellt von eagle1985
Guten Tag zusammen,

ich hoffe ich bin hier richtung und ihr könnt mir auch weiterhelfen :)

Ich habe folgendes Problem:

Habe ein Eingabefeld (input type="text") von welchem die Eingabe des Users nach betätigung des Buttons (input type="button") in der Datenbank abgespeichert werden soll.

Die Tabelle hat folgenden aufbau:
id = int (AutoInc)
name = text
status = tinyint (0 oder 1)

der user kann nur seinen name eingeben welcher dan mit dem status 1 in der Tabelle abgespeichert werden soll.

weiss jemand was ich da alles machen muss?

habe im Controller die function save() eingefügt welche auf die Methode store im Model aufruft.
nun weiss ich aber nicht, wie ich an die Einträge des Users komme und wie ich die dem Model mitteilen kann, damit dies richtig speichert

besten dank für allfällige antworten :)
  • eagle1985
  • Autor
  • Neues Mitglied
  • Neues Mitglied
Mehr
16 Aug. 2008 21:41 #16022 von eagle1985
eagle1985 antwortete auf Re: Eintrag in DB schreiben
habe folgenden Code:

einstiegsfile:
Code:
<?php // kein direkter Zugriff defined('_JEXEC') or die('Restricted access'); // laden des Joomla! Basis Controllers require_once (JPATH_COMPONENT.DS.'controller.php'); // laden von weiterer Controllern if($controller = JRequest::getWord('controller')) { $path = JPATH_COMPONENT.DS.'controllers'.DS.$controller.'.php'; if (file_exists($path)) { require_once $path; } else { $controller = ''; } } // Erzeugen eines Objekts der Klasse controller $classname = 'AbschlussfeierController'.$controller; $controller = new $classname( ); // den request task ausleben $controller->execute(JRequest::getCmd('task')); // Redirect aus dem controller $controller->redirect(); ?>

controller:
Code:
<?php // Check to ensure this file is included in Joomla! defined('_JEXEC') or die(); jimport('joomla.application.component.controller'); /** * Auto Component Controller */ class AbschlussfeierController extends JController { function display() { // Setzt einen Standard view if ( ! JRequest::getCmd( 'view' ) ) { JRequest::setVar('view', 'categories' ); } parent::display(); } }

controller/abschlussfeier:
Code:
<?php // Check to ensure this file is included in Joomla! defined('_JEXEC') or die(); class AbschlussfeierControllerAbschlussfeier extends AbschlussfeierController { /** * constructor (registers additional tasks to methods) * @return void */ function __construct() { parent::__construct(); } /** * save a record * @return void */ function save() { $model = $this->getModel('abschlussfeier'); if ($model->store($post)) { $msg = JText::_( 'Teilnehmer Saved!' ); } else { $msg = JText::_( 'Error Saving Teilnehmer' ); } // Check the table in so it can be edited.... we are done with it anyway $link = 'index.php?option=com_abschlussfeier&view=abschlussfeier&Itemid=57'; $this->setRedirect($link, $msg); } } ?>

models/abschlussfeier
Code:
<?php // Check to ensure this file is included in Joomla! defined('_JEXEC') or die(); jimport('joomla.application.component.model'); /** *AbschlussfeierComponent AbschlussfeierModel * */ class AbschlussfeierModelAbschlussfeier extends JModel { function _getQuery( &$options ) { // TODO: Cache on the fingerprint of the arguments $db = JFactory::getDBO(); $id = @$options&#91;'id'&#93;; $select = 'a.*'; $from = '#__fest AS a'; $wheres&#91;&#93; = 'a.status = 1'; $query = "SELECT " . $select . "\n FROM " . $from . "\n WHERE " . implode( "\n AND ", $wheres ); return $query; } function getTeilnehmer( $options=array() ) { $query = $this->_getQuery( $options ); $result = $this->_getList( $query ); return @$result; } /** * Method to store a record * * @access public * @return boolean True on success */ function store() { $row =& $this->getTable(); $data = JRequest::get( 'post' ); // Bind the form fields to the hello table if (!$row->bind($data)) { $this->setError($this->_db->getErrorMsg()); return false; } // Make sure the hello record is valid if (!$row->check()) { $this->setError($this->_db->getErrorMsg()); return false; } // Store the web link table to the database if (!$row->store()) { $this->setError( $row->getErrorMsg() ); return false; } return true; } } ?>

views/abschlussfeier/view.html.php:
Code:
<?php jimport( 'joomla.application.component.view'); /** * HTML View class for the AbschlussfeierComponent */ class AbschlussfeierViewAbschlussfeier extends JView { function display($tpl = null) { $model = &$this->getModel(); $rows = $model->getTeilnehmer(); $this->assignRef('rows' , $rows); parent::display($tpl); } } ?>

und views/abschlussfeier/tmpl/defautl.php:
Code:
<?php defined('_JEXEC') or die('Restricted access'); ?> <script language="javascript" type="text/javascript"> function chkEingabe(){ if (document.adminForm.name.value == ""){ alert ("Teilnehmer muss einen Namen haben"); document.adminForm.name.focus(); return false; } } </script> <h2> Anmelden </h2> <p> <form action="index.php" method="post" name="adminForm" id="adminForm" onsubmit = "return chkEingabe()"> <div> <fieldset class="adminform"> <table class="admintable"> <tr> <td width="60" class="key"> <label for="title"> <?php echo JText::_('Name'); ?> </label> </td> <td> <input class="inputbox" type="text" name="name" id="name" size="60" value="" /> </td> <td> <input type="submit" name="Submit" class="button" value="Anmelden" /> <td> </table> </fieldset> <div class="clr"></div> <div class="clr"></div> <input type="hidden" name="option" value="com_abschlussfeier" /> <input type="hidden" name="task" value="save()" /> <input type="hidden" name="controller" value="abschlussfeier" /> </div> </form> </p> <br> <h2> momentan Angemeldet sind: </h2> <ul> <?php // Auslesen der Datensätze im Array foreach ($this->rows as $row) { ?> <li> <?php echo $row->name?> </li> <?php } ?> </ul> <?php function saveToDB(){ $db = JFactory::getDBO(); $query = 'INSERT INTO jos_fest (name, status) VALUES ('. form.name.value . ', 1)'; $db->setQuery($query); } ?>
  • chalkin
  • Neues Mitglied
  • Neues Mitglied
Mehr
20 Juni 2009 20:17 #22233 von chalkin
chalkin antwortete auf Re: Eintrag in DB schreiben
Am Anfang mal das Grundsätzliche, danach schau ich mir dienen Code an.

um Daten in die Datenbank zu bekommen, brauchst du nicht nur ein Model und dein Formular, sondern auch eine Table, sprich:
erstell in deiner komponente den ordner tables
com_komponente
--tables
dort legst du eine datei rein, die wie dein controller heißt.
Inhalt:
Code:
<?php defined('_JEXEC') or die('Restricted access'); class TableNAME extends JTable { /** logs **/ var $id = null; var $name = null; var $status = '1'; function __construct(&$db) { parent::__construct( '#__DATENBANKNAME', 'PRIMARY KEY', $db ); } } ?>
DATENBANKNAME, NAME und PRIMARY KEY bitte mit deinen Daten ausbessern
danach gilt, der name="name" und soweit ich weis auch id="name" muss in dem inputfeld, deines Formulars gleich heißen wie der Feldname in der Datenbank

für deine ID machst im formular noch ein hidden feld. ich gehe davon aus, dass deine id in der datenbank auto_increment ist

<input type="hidden" name="id" value="<?php echo $row->id; ?>" />

in deine einstiegsdatei fügst noch die zeile hinzu:

// Set the table directory
JTable::addIncludePath(JPATH_COMPONENT.DS.'tables');

ich weis nur ned ob das wirklich benötigt wird.

Danach probiers nochmal, und sag ob es geklappt hat ;)
Moderatoren: Tribal6RePaoDragonlordChris Hoefligerpascaleadiheutschi.ch
Powered by Kunena Forum

Joomla! Verband Schweiz - Mitglied werden