Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> MVC - pierwsze kroki i problem z model
yacoos
post
Post #1





Grupa: Zarejestrowani
Postów: 27
Pomógł: 0
Dołączył: 19.02.2005

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


Witam,

Walczę z projektem pierwszy raz używając mvc.
Dużo udało mi się już zwalczyć, ale teraz mam problem próbuję zrobić coś w stylu dwóch zależnych od siebie zapytań do sqla. Problem w tym, że kiedy ustawiam model na to drugie - to już wychodzi mi z pierwszego.
Z resztą.. oto cały kod:


  1. <?php
  2. $this->model->listRozKol($id);
  3. $kolumny[]=array("kolumna"=>'Rozmiary:');
  4. while ( $rozmiar=$this->model->getProduct() ) {
  5. $kolumny[]=$rozmiar;
  6. }
  7.  
  8. $rozmiary[]=$kolumny;
  9. $kolumny=array();
  10. $this->model->listRozWiersz1($id);
  11. while ( $wiersz1=$this->model->getProduct() ) { $i++;
  12. $kolumny[]=array("kolumna"=>$wiersz1["rozmiar_wiersz"]);
  13. $this->model->listRozWiersz2($id, $wiersz1["id_rozmiarw"]);
  14. while ( $wiersz2=$this->model->getProduct2() ) {
  15. $kolumny[]=$wiersz2;
  16. }
  17. $rozmiary[]=$kolumny;
  18. }
  19. ?>


Niestety zawsze widać tylko 1 rekord.. mimo że $this->model->listRozWiersz2($id, $wiersz1["id_rozmiarw"]); powinno wyświetlać ich więcej.

Przypuszczam, że trzeba zakombinować coś w klasie model.. ale sam na chwile obecną chyba sobie z tym nie poradzę - dlatego proszę o podpowiedź.

Przy okazji - są jakieś alternatywy dla MVC? Bo na dłuższą metę to nie wiem czy się z nim dogadam - szczególnie ciężko mi się przyzwyczaić do tych zapytań w Modelu..

Pozdrawiam i jeszcze raz bardzo proszę o podpowiedź.
Jacek
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
yacoos
post
Post #2





Grupa: Zarejestrowani
Postów: 27
Pomógł: 0
Dołączył: 19.02.2005

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


OK, teraz postaram się kompleksowo:
Jeżeli zrobię tak (pominę drugie zapytanie):
  1. <?php
  2. $kolumny=array();
  3. $this->model->listRozWiersz1($id);
  4. while ( $wiersz1=$this->model->getProduct() ) { $i++;
  5. $kolumny[]=array("kolumna"=>$wiersz1["rozmiar_wiersz"]);
  6. #$this->model->listRozWiersz2($id, $wiersz1["id_rozmiarw"]);
  7. #while ( $wiersz2=$this->model->getProduct2() ) {
  8. #$kolumny[]=$wiersz2;
  9. #}
  10.  
  11. $rozmiary[]=$kolumny;
  12. $kolumny=array();
  13. }
  14. ?>

To wtedy {$rozmiary} Array (2) . Czyli jest OK.
Natomiast Kiedy odhaszuje drugie wywołanie modelu i while:
  1. <?php
  2. $kolumny=array();
  3. $this->model->listRozWiersz1($id);
  4. while ( $wiersz1=$this->model->getProduct() ) { $i++;
  5. $kolumny[]=array("kolumna"=>$wiersz1["rozmiar_wiersz"]);
  6. $this->model->listRozWiersz2($id, $wiersz1["id_rozmiarw"]);
  7. while ( $wiersz2=$this->model->getProduct2() ) {
  8. $kolumny[]=$wiersz2;
  9. }
  10.  
  11. $rozmiary[]=$kolumny;
  12. $kolumny=array();
  13. }
  14. ?>


I teraz już: {$rozmiary} Array (1)

Funkcje z klasy Model:
  1. <?php
  2. function listRozWiersz1($id) {
  3. $this->dao->fetch("SELECT DISTINCT rozmiar_wartosc.id_rozmiarw, rozmiar_wiersz.rozmiar_wiersz FROM `rozmiar_wartosc` LEFT JOIN rozmiar_wiersz ON (rozmiar_wiersz.id_rozmiarw=rozmiar_wartosc.id_rozmiarw) WHERE id_produkt = '".$id."';");
  4. }
  5.  
  6. function listRozWiersz2($id, $idwiersz) {
  7. $this->dao->fetch("SELECT DISTINCT rozmiar_wartosc.wartosc AS kolumna FROM `rozmiar_wartosc` ,
     `rozmiar_kolumna` WHERE id_produkt = '"
    .$id."' AND rozmiar_wartosc.id_rozmiark = rozmiar_kolumna.id_rozmiark AND rozmiar_warto
    sc.id_rozmiarw='"
    .$idwiersz."' ORDER BY rozmiar_kolumna.rozmiar_liczba;");
  8. }
  9.  
  10.  function getProduct() {
  11. if ( $product=$this->dao->getRow() )
  12. return $product;
  13. else
  14. return false;
  15. }
  16.  
  17. function getProduct2() {
  18. if ( $product=$this->dao->getRow() )
  19. return $product;
  20. else
  21. return false;
  22. }
  23. ?>


W klasie Connect (obiekt dao) mam:
  1. <?php
  2. function fetch($sql) {
  3. $this->query=mysql_unbuffered_query($sql,$this->db) or die(mysql_error()); // Perform query here
  4. }
  5.  
  6.  function getRow () {
  7. if ( $row=mysql_fetch_array($this->query,MYSQL_ASSOC) )
  8. return $row;
  9. else
  10. return false;
  11. }
  12. ?>


Teraz jaśniej?
Nie wiem nawet co jeszcze mógłbym powklejać..
Pozdrawiam,
Jacek
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 28.03.2026 - 11:41