Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP][Zend] Pojedyncze zapytanie
Forum PHP.pl > Forum > Przedszkole
cykcykacz
Controller
Kod
   public function sportlistAction()
    {
        $saleTBL = new Model_DbTable_Sale();
        $this->view->katalog = $saleTBL->getAdapter()->query('SELECT * FROM `sale` WHERE id=1');
    }

Index
Kod
<?php  
     echo $this->view->katalog();
?>

Nie wiem jak wyciągnąć pojedyncze zapytanie?
kosmowariat
coś zamotałeś, mógłbyś wrzucic większy kawałek kodu questionmark.gif te drugie to widok ? pojedyńcze zapytanie == 1 rekord ?
cykcykacz
Models:
Kod
<?php
class Model_DbTable_Sale extends Zend_Db_Table_Abstract
{
    protected $_name = 'sale';
}

Kontroler:
Kod
<?php

class SaleController extends Zend_Controller_Action
{

    public function init()
    {
        /* Initialize action controller here */
    }

    public function indexAction()
    {
        // action body
    }

    public function listAction()
    {

    }

   public function sportlistAction()
    {
        $saleTBL = new Model_DbTable_Sale();
        $this->view->katalog = $saleTBL->getAdapter()->query('SELECT * FROM `sale`');
        
    }


}

Widok:
Kod
<?php
echo $this->katalog;
?>

Mój problem polega na tym iż nie potrafię poprawnie stworzyć obiektu oraz go wyświetlić w widoku, korzystałem z tutoriali i teraz wyszło szydło z worka. Jednak proszę o pomoc. smile.gif
jasin
Pisząc w ten sposób mijasz się z założeniami MVC i nie wykorzystujesz "dobrodziejstw" ZENDA ... ale skoro już tak napisałeś to mniej więcej tak powinno wyglądać:

  1. public function sportlistAction()
  2. {
  3. $saleTBL = new Model_DbTable_Sale();
  4.  
  5. $result = $saleTBL->getAdapter()->fetchAll('SELECT * FROM `sale` WHERE id=1');
  6. // w result masz tabele asocjacyjna (jesli zapytanie zwrocilo rekordy); tu mozna jakiegos foreacha itp ...
  7.  
  8. $this->view->katalog = $result[0];
  9. }


Edit: Powinieneś wszystkie zapytania do bazy danych trzymać w modelach ... Do tego jeśli w akcji sportlist chcesz wyświetlić to widok powinien nazywać się sportlist.phtml (może różnić się rozszerzeniem w zależności jak to sobie ustawiłeś)
darko
A nie możesz zrobić w jakiejś metodzie modelu coś w tym stylu:

  1. $db = Zend_Db_Table::getDefaultAdapter();
  2. $db->getConnection();
  3. $katalog = $db->fetchAll("select * from sale", null, Zend_Db::FETCH_ASSOC);
  4. return $katalog;

?
cykcykacz
Ok chcę to zrobić prawidłowo czyli w modelu.
Co mam umieścić w modelu a co w kontrolerze i widoku.

Nie umiem wyświetlić tych danych z tablicy proszę o pomoc sciana.gif .
Wyświetlam wszystkie dane za pomocą fetchAll() ale nie wiem jak wyświetlić pojedynczy wiersz('SELECT * FROM `sale` WHERE id=1').
SaleController.php
Kod
   public function sportlistAction()
    {
        $saleTBL = new Model_DbTable_Sale();
        $this->view->katalog = $saleTBL->fetchAll();
    }

sportlist.phtml
Kod
<?php
            echo "<table>";
            foreach($this->katalog as $key => $value) {
            echo "<img src='/sala/public/img/background/obrazek.jpg'><tr><td><strong>Miasto</strong></td><td>".$value->miasto."</td><td><strong>Ulica</strong></td><td>".$value->adres."</td></tr>
                
                <tr><td><strong>Telefon</strong></td><td>".$value->telefon."</td></tr>
                <tr><td><strong>Email</strong></td><td>".$value->email."</td></tr>
                <tr><td><strong>Ilość Miejsc</strong></td><td>".$value->miejsc."</td></tr>
                <tr><td><strong>Wielkość</strong></td><td>".$value->wielkosc."&nbsp;m<sup>2</sup></td></tr>
                <tr><td><strong>Opis</strong></td><td>".$value->opis."</td></tr>";
         }
            echo "</table>";
        ?>


Ładnie wyświetla mi wszystkie dane z tabeli jednak nadal nie wiem jak użyć waszego kodu?

Jak użyję ten kod w kontrolerze:
Kod
        $saleTBL = new Model_DbTable_Sale();
        $result = $saleTBL->getAdapter()->fetchAll('SELECT * FROM `sale` WHERE id=1');
        $this->view->katalog = $result[0];

Wyświetla mi puste zawartości 10 razy:)
melkorm
Do modelu dodać:
  1. protected $_primary = 'id';


a w controlerze :

  1. $model->find(1); // tu zwraca Wiersz activerecord. możesz zrobić toArray() by mieć tablicę
  2. // gdzie find szuka po nazwie klucza w _primary
cykcykacz
Ok działa, dziękuje wszystkim za pomoc.
Mam jednak pytanie co do działania ponieważ chcę robić w Zend Framework strony rozumiejąc to co robięsmile.gif.

W modelu podałeś mi zmienną
Kod
protected $_primary = 'id';

Rozumiem, że "$_primiary" odpowiada za nazwy kolumn? a "$_name" za nazwy tabel?
$model->find(1) Skąd wiedziałeś, że mogę użyć funkcji "find" która jest w bibliotece Zend? Wszystkie informację są w manualu?
melkorm
Tak są w manualu

Cytat
Rozumiem, że "$_primiary" odpowiada za nazwy kolumn? a "$_name" za nazwy tabel?


Primary odpowiada za nazwy kluczy głównych (Primary Key).
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.