Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z posortowaniem danych
Forum PHP.pl > Forum > PHP
voot
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ł?
mar1aczi
select + if lub select + case
voot
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?
Pyton_000
A nie możesz dla jednego newsa dodawać tłumaczeń zamiast tworzyć nowe newsy z tłumaczeniami ?
voot
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
Pyton_000
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.
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.