Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP][Zend] Pojedyncze zapytanie
cykcykacz
post 11.01.2010, 18:55:06
Post #1





Grupa: Zarejestrowani
Postów: 550
Pomógł: 9
Dołączył: 29.05.2009
Skąd: Ostrów Wielkopolski

Ostrzeżenie: (0%)
-----


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?
Go to the top of the page
+Quote Post
kosmowariat
post 11.01.2010, 20:50:35
Post #2





Grupa: Zarejestrowani
Postów: 235
Pomógł: 17
Dołączył: 18.07.2007
Skąd: Białystok

Ostrzeżenie: (0%)
-----


coś zamotałeś, mógłbyś wrzucic większy kawałek kodu questionmark.gif te drugie to widok ? pojedyńcze zapytanie == 1 rekord ?
Go to the top of the page
+Quote Post
cykcykacz
post 11.01.2010, 21:03:51
Post #3





Grupa: Zarejestrowani
Postów: 550
Pomógł: 9
Dołączył: 29.05.2009
Skąd: Ostrów Wielkopolski

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
jasin
post 11.01.2010, 21:07:34
Post #4





Grupa: Zarejestrowani
Postów: 142
Pomógł: 32
Dołączył: 21.08.2008
Skąd: Toruń

Ostrzeżenie: (0%)
-----


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ś)

Ten post edytował jasin 11.01.2010, 21:11:14


--------------------
Go to the top of the page
+Quote Post
darko
post 11.01.2010, 21:09:05
Post #5





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


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;

?

Ten post edytował darko 11.01.2010, 21:24:57


--------------------
Nie pomagam na pw, tylko forum.
Go to the top of the page
+Quote Post
cykcykacz
post 12.01.2010, 17:52:18
Post #6





Grupa: Zarejestrowani
Postów: 550
Pomógł: 9
Dołączył: 29.05.2009
Skąd: Ostrów Wielkopolski

Ostrzeżenie: (0%)
-----


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:)


Ten post edytował cykcykacz 12.01.2010, 00:14:42
Go to the top of the page
+Quote Post
melkorm
post 12.01.2010, 18:48:18
Post #7





Grupa: Zarejestrowani
Postów: 1 366
Pomógł: 261
Dołączył: 23.09.2008
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


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


Ten post edytował melkorm 12.01.2010, 18:49:31


--------------------
Go to the top of the page
+Quote Post
cykcykacz
post 12.01.2010, 19:43:42
Post #8





Grupa: Zarejestrowani
Postów: 550
Pomógł: 9
Dołączył: 29.05.2009
Skąd: Ostrów Wielkopolski

Ostrzeżenie: (0%)
-----


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?
Go to the top of the page
+Quote Post
melkorm
post 12.01.2010, 20:11:35
Post #9





Grupa: Zarejestrowani
Postów: 1 366
Pomógł: 261
Dołączył: 23.09.2008
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


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).


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 7.07.2025 - 05:21