Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Pobieranie bazy z nazy danych. Dane powiązane
menic
post
Post #1





Grupa: Zarejestrowani
Postów: 493
Pomógł: 0
Dołączył: 14.06.2003
Skąd: Tomaszów Lubelski/Rzeszów

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


Chce pobrac dane z dwóch tabel. Pierwsza to pytania, a następna to odpowiedzi do tych pytan. I nie wiem jak sie do tego zabrac. dry.gif
Pierwsza mozliwość:
-W pętli wyświetlającej pytania dać zapytanie pobierające odpowiedzi dla aktualnego pytania.
Druga mozliwosc:
-Wczytac odpowiedzi do tablicy i pozniej w peli z pytaniami porownywac.
Trzecia:
?

Pierwsza odpada, bo w szablonie nie dam przeciez zapytania.
Druga chyba tez odpada, bo tablica bedzie miała baardzo dużą wielkość, gdyż nie wiemy ile tych odpowiedzi bedzie.

Jakies sugestie?

BTW. Uzywam propela jezeli to do czegos sie przyda winksmiley.jpg

Ten post edytował menic 16.01.2007, 19:19:45


--------------------
Jak masz cos zrobic dobrze...
...To musisz zrobić to sam.

Uchwycić moment...
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 11)
Cienki1980
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 1 590
Pomógł: 40
Dołączył: 11.01.2007
Skąd: Centrum

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


A pokaż ten kawałek kodu, w którym wyświetlasz pytania.

Bo jak dla mnie nie powinno być problemem złożenie zapytania w momencie wyświetlania pytania.


--------------------
404
Go to the top of the page
+Quote Post
menic
post
Post #3





Grupa: Zarejestrowani
Postów: 493
Pomógł: 0
Dołączył: 14.06.2003
Skąd: Tomaszów Lubelski/Rzeszów

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


Problemem jest wtedy kiedy chce sie oddzielic w jak najwiekszym stopniu logike model od widoku winksmiley.jpg


--------------------
Jak masz cos zrobic dobrze...
...To musisz zrobić to sam.

Uchwycić moment...
Go to the top of the page
+Quote Post
Cienki1980
post
Post #4





Grupa: Przyjaciele php.pl
Postów: 1 590
Pomógł: 40
Dołączył: 11.01.2007
Skąd: Centrum

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


No się domyślam, że nie łączysz php z html'em skoro mówisz o szablonach.

Nie wiem jak to jest w propel'u ( nawet nie wiem co to jest ) ale w przypadku Smartów nigdy nie napotkałem takiego problemu.


--------------------
404
Go to the top of the page
+Quote Post
menic
post
Post #5





Grupa: Zarejestrowani
Postów: 493
Pomógł: 0
Dołączył: 14.06.2003
Skąd: Tomaszów Lubelski/Rzeszów

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


Nie wierze, ze nikt nie ma pomysłu :/


--------------------
Jak masz cos zrobic dobrze...
...To musisz zrobić to sam.

Uchwycić moment...
Go to the top of the page
+Quote Post
Cienki1980
post
Post #6





Grupa: Przyjaciele php.pl
Postów: 1 590
Pomógł: 40
Dołączył: 11.01.2007
Skąd: Centrum

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


A dlaczego nie możesz stworzyć tablicy w momencie tworzenia tablicy z pytaniami questionmark.gif
Przecież możesz ją tak skonstruować, że nie będzie potrzebne porównywanie, tylko odpowiednio skonstruowane pętle w szablonie.


--------------------
404
Go to the top of the page
+Quote Post
menic
post
Post #7





Grupa: Zarejestrowani
Postów: 493
Pomógł: 0
Dołączył: 14.06.2003
Skąd: Tomaszów Lubelski/Rzeszów

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


Tak skonstruowac czyli jak?


--------------------
Jak masz cos zrobic dobrze...
...To musisz zrobić to sam.

Uchwycić moment...
Go to the top of the page
+Quote Post
Cienki1980
post
Post #8





Grupa: Przyjaciele php.pl
Postów: 1 590
Pomógł: 40
Dołączył: 11.01.2007
Skąd: Centrum

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


  1. <?php
  2. $tablica=array();
  3. $tablica[0]['pytanie']="pytanie numer 1";
  4. $tablica[0]['odpowiedz'][0]="odopwiedz numer 1 na pyt1";
  5. $tablica[0]['odpowiedz'][1]="odopwiedz numer 2 na pyt1";
  6. $tablica[0]['odpowiedz'][2]="odopwiedz numer 3 na pyt1";
  7. $tablica[1]['pytanie']="pytanie numer 2";
  8. $tablica[1]['odpowiedz'][0]="odopwiedz numer 1 na pyt2";
  9. $tablica[1]['odpowiedz'][1]="odopwiedz numer 2 na pyt2";
  10. $tablica[1]['odpowiedz'][2]="odopwiedz numer 3 na pyt2";
  11. ?>


I tak dalej.

Potem dwie pętle w szablonie i masz obsłużone wyświetlanie pytań i odpowiedzi.
W smartach tak robiłem ... może nie jest to "profi" ale działa.


--------------------
404
Go to the top of the page
+Quote Post
athabus
post
Post #9





Grupa: Zarejestrowani
Postów: 898
Pomógł: 48
Dołączył: 2.11.2005
Skąd: Poznań

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


Nie wiem czy dobrze rozumiem Twój problem, ale czemu nie połączysz tego wszystkiego w jedno zapytanie z joinem? Wykonywanie pytań w pętli to IMHO zły pomysł bo przecież powoduje to nadmierną i niepotrzebną ilość zapytań.
Go to the top of the page
+Quote Post
menic
post
Post #10





Grupa: Zarejestrowani
Postów: 493
Pomógł: 0
Dołączył: 14.06.2003
Skąd: Tomaszów Lubelski/Rzeszów

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


IMO nie da sie tego zrobić jednym zapytaniem z join'em i jedną petlą. Najrozdądniejszym rozwiązaniem, jest wlasnie przygotowanie odpowiedniej tablicy z danymi.
@Cienki1980: Propel to jest system obsługi sql (ORM).


--------------------
Jak masz cos zrobic dobrze...
...To musisz zrobić to sam.

Uchwycić moment...
Go to the top of the page
+Quote Post
Cienki1980
post
Post #11





Grupa: Przyjaciele php.pl
Postów: 1 590
Pomógł: 40
Dołączył: 11.01.2007
Skąd: Centrum

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


@menic : acham ... pierwsze słysze o propelu .. ale ja się nie znam ...

Taki układ tablicy pomoże Ci w rozwiązaniu problemu questionmark.gif


--------------------
404
Go to the top of the page
+Quote Post
athabus
post
Post #12





Grupa: Zarejestrowani
Postów: 898
Pomógł: 48
Dołączył: 2.11.2005
Skąd: Poznań

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


Jeśli jest 1 pytanie-> 1 odpowiedź to 1 zapytanie wystarczy w zupełności.

Jeśli natomiast 1 pytaniu odpowiada kilka odpowiedzi to sprawa jest trochę bardziej złożona i będą potrzebne 2 zapytania. Ja akurat mam odpowiednie klasy, które ułatwiają mi odczytywanie takich zapytań.

W skrócie u mnie wygląda to tak:

-> 1 zapytanie w celu odczytania wszystkich pytań, które potrzebujesz

-> 2 zapytanie, które odczytuje właściwe odpowiedzi.

Wczoraj robiłem podobny odczyt dla produtków, które mają pewne własności (typu nazwa cena itp) oraz dodatkowe cechy -> np. kolor itp - każdy produkt może mieć różne cechy i różną ich liczbę.

U mnie wyglądało to mniej więcej tak

  1. <?php
  2. /**
  3.  * Zwraca tablice danych o obiekcie
  4.  *
  5.  * Tablica ma postac
  6.  * [id_produktu] (array)
  7.  *  =>[productData](array)
  8.  *  =>[featuresData](array)
  9.  *  =>[feature 1] (array)
  10.  *  =>...
  11.  *  =>[feature x] (array)
  12.  * 
  13.  * @param array|int $arId
  14.  * @return array
  15.  */
  16. public static function getDataById($arId)
  17. {
  18. //tu są 2 zapytanie zwracają wartość $productRestult o produkcie i $resultFeatures
     cechy produktów - nie zamieszczam zapytan zeby nie gmatwac - bylo kilka joinow itp. bo wyniki byly z roznych tabel
  19.  
  20.  
  21. //przygotowanie tablicy wynikowej - > klucz to id potem tablica skladajaca sie z tablicy
  22. //z info o produkcie oraz tablicy cech.
  23. $resultArray=array();
  24. foreach ($ProductResult as $row)
  25. {
  26. $resultArray[$row['product_id']]=array('productData'=>$row, 'featuresData'=>array());
  27. //dla kazdego nowego produktu tworzymy tablice 2 elementowa z danymi produktu (productData) oraz kolekcja cech ('featuresData') - ta tablica na razie pusta - dodamy cechy w nastepnej petli
  28. }
  29.  
  30. foreach ($resultFeatures as $row)
  31. {
  32. //teraz lecimy po odczytanych cechaach i dodajemy je do glownej tablicy
  33. $resultArray[$row['article_id']]['featuresData'][]=$row;
  34. }
  35.  
  36. return $resultArray;
  37. }
  38. ?>
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 Aktualny czas: 22.08.2025 - 05:00