Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Problem z posortowaniem danych
voot
post
Post #1





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 16.05.2010

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


Witam,
Mam taki problem:
W bazie MySQL mam tabele news w której jest id, title, lang i translation
lang to język newsa (1 to pl, 2 to en, 3 to de)
translation to tłumaczenie, jeżeli utworzę newsa w języku polskim, otrzyma on id 1, to w translation dopisze 1 i lang 1. Jeśli będę chciał dodać jego tłumaczenie, to tworze newsa, otrzymuje on id 2, ale translation 1 ponieważ to tłumaczenie newsa o id 1 i lang 2.
I tutaj mam problem, jak utworzyć tabelkę która pokaże newsa w języku polskim i obok czy są tłumaczenia na inne języki, mniej więcej coś takiego:
Kod
Nazwa | PL | EN | DE |
----------------------
tytuł | 1  | 1  | 0  |
-----------------------
tytul2 | 1 | 1  | 1  |


Ma ktoś jakiś pomysł?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
mar1aczi
post
Post #2





Grupa: Zarejestrowani
Postów: 731
Pomógł: 141
Dołączył: 9.05.2011
Skąd: śląskie

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


select + if lub select + case
Go to the top of the page
+Quote Post
voot
post
Post #3





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 16.05.2010

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


Wydaje mi się że lepiej użyć w modelu foreach i jakoś dopisać do tablicy jednego newsa drugą z id przetłumaczonych newsów i to przesłać do widoku.
Bo join działa chyba na 2 różne tabele w bazie? Czy da się jakoś w SQL połączyć kilka konkretnych wierszy i eksportować do tablicy?
Go to the top of the page
+Quote Post
Pyton_000
post
Post #4





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


A nie możesz dla jednego newsa dodawać tłumaczeń zamiast tworzyć nowe newsy z tłumaczeniami ?
Go to the top of the page
+Quote Post
voot
post
Post #5





Grupa: Zarejestrowani
Postów: 11
Pomógł: 0
Dołączył: 16.05.2010

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


Właśnie niebardzo, stronka ma mieć możliwość dodania nieograniczonej liczby języków.
Napisałem coś takiego, może jak ktoś będzie miał podobny problem to się przyda
  1. $result = DB::select('*')
  2. ->from('news')
  3. ->execute()
  4. ->as_array();
  5.  
  6. foreach($result as $key => &$value):
  7.  
  8. $trans = DB::select('*')
  9. ->from('news')
  10. ->where('translation','=',$value['id'])
  11. ->execute()
  12. ->as_array('lang','id');
  13.  
  14. $value['translation'] = $trans;
  15. endforeach;

Na chwilę obecną wydaje mi się że będzie działało, bo jeszcze nie zdążyłem przetestować.
Do komunikacji z MySQL korzystam z klasy z kohany 3

Ten post edytował voot 18.02.2014, 21:19:10
Go to the top of the page
+Quote Post
Pyton_000
post
Post #6





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


Ale w rozwiązaniu które Ci podałem wcale Cie nie ogranicza.
Dodajesz wpis w tabeli news,
w tabeli news_translation dodajesz jego tłumaczenie z ID języka

i tyle.

Potem sprawdzasz które nie mają tłumaczenia poprzez join z tabelą językową i gotowe.
Go to the top of the page
+Quote Post

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: 22.08.2025 - 16:22