Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][Zend] Wyswietlanie danych z mysql w Zend_Form
Forum PHP.pl > Forum > Przedszkole
aggreSSive115
Witam,

utworzyłem sobie prosty formularz w Zend Frameworku, lecz mam problem z wyświetlaniem w nim (w jego textarea'ch) danych pobieranych z MySQL'a.

Mój formularz wygląda następująco:
Kod
<?php

class Application_Form_EditForm extends Zend_Form
{  

    public function init() {
        
        $this->autor = new Zend_Form_Element_Text('autor');
        $this->autor->setLabel('Autor: ')
              ->setRequired(true);
        
        $this->tytul = new Zend_Form_Element_Text('tytul');
        $this->tytul->setLabel('Tytul: ')
              ->setRequired(true);
        
        $this->tresc = new Zend_Form_Element_Textarea('tresc');
        $this->tresc->setLabel('Tresc: ')
              ->setRequired(true)
              ->setAttrib('cols', '40')
              ->setAttrib('rows', '15');
        
        $this->wyslij = new Zend_Form_Element_Submit('wyslij');
        $this->wyslij->setLabel('Dodaj newsa');
        
        $this->addElements(array($this->autor, $this->tytul, $this->tresc, $this->wyslij));
        $this->setMethod('post');
        $this->setAction('../index/news-edit');
    }
}


Czyli prosty zwyczajny formularz - proszę o pomoc jak mogę pobrane dane z MySQL ustawić jako wyświetlanie w tym formularzu?

Pozdrawiam!
CuteOne
Powiem szczerze, że nigdy nie wstawiałem treści do textarea... może standardowa metoda zadziała
  1. $form = new Application_Form_EditForm();
  2. $form->getElement('name')->setValue($row['name']);
aggreSSive115
Hmmm wykombinowalem cos takiego:

Index Controller:
Kod
    // edycja newsa
    public function newseditAction()
    {        
        // pobieranie newsa o danym ID
        $oNewsEdit = new Application_Model_News();
        $aNewsEdit = $oNewsEdit->getNews($_GET['id']);
        $this->view->aNewsEdit = $aNewsEdit;
        
        // wyswietlanie formularza
        $oNewsForm = new Application_Form_News();        
        $this->view->oNewsForm = $oNewsForm;
        
        // pobranie newsa z mysql i wpisanie do formularza
        $oNewsForm->getElement('autor')->setValue($_POST['autor']);
        $oNewsForm->getElement('tytul')->setValue(2);
        $oNewsForm->getElement('tresc')->setValue(3);        
    }


Model:
Kod
    // pobieranie newsa
    public function getNews($iId) {
        $this->wynik = mysql_query("SELECT * FROM news WHERE id='".mysql_escape_string($iId)."'");

            $aGet = array();

            while($this->row=mysql_fetch_assoc($this->wynik))
                    {
                        $aGet[]=$this->row;
                    }

                    return $aGet;
        }


Lecz ciągle nic nie wyświetla w polach, probowałem wyświetlić poza nimi i wszystko bylo cacy. Problem jest z przekazaniem tego wyniku z modelu do controllera. Mam takie notatki:

Kod
Notice: Undefined property: IndexController::$wiersz in D:\serv\www\systemnewsow-zf\application\controllers\IndexController.php on line 48


Pozdrawiam!
zend
  1. $form = new Form();
  2. $form -> populate( array( 'nazwa pola' => 'wartość' ) );
  3.  
  4. if($this -> getRequest() -> isPost() && $form -> isValid( $this -> _getAllParams() ))
  5. {
  6. $form -> getValues();
  7. //zapis
  8. }
  9. $this -> view -> form = $form;
  10.  


Najwygodniej jest nazywać kolumny w tabeli tak samo jak pola w formularzu, skorzystaj też z zend_db_table zamiast korzystać z natywnych rozszerzeń z php, znacznie przyspiesza to debugowanie i pisanie sql'i
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.