Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: przeszukiwanie tablic w mysql
Forum PHP.pl > Forum > PHP
zazdrosny17
Witam,

Czy istanieje możliwość przeukiwania tablic w mysql?

Piszę właśnie mini CMS z obsługą wersji językowych i np. dodaje nową podstonę do mysql:

pola: id, serialize(tablica)

  1. tablica[0][0] = 1; // 1=jezyk polski
  2. tablica[0][1] = "slowa kluczowe"
  3. tablica[0][2] = "opis"
  4. tablica[0][3] = "tytuł"
  5. tablica[0][4] = "zawartość"
  6.  
  7. tablica[1][0] = 2; // 2=jezyk angielski
  8. tablica[1][1] = "slowa kluczowe"
  9. tablica[1][2] = "opis"
  10. tablica[1][3] = "tytuł"
  11. tablica[1][4] = "zawartość"


itd.

Teraz jeśli chce wyświelić odpowiednią zawartość na stronie (pl, en) pobieram całą zawartość 'tablica' dla np. id = 1
następnie przeszukuję pętlną for

  1. $tablica = unserialize($tablica);
  2.  
  3. for($i=0; count($tablica); $i++)
  4. {
  5. if($tablica[$i][0] == $_GET['wersja_jezykowa'])
  6. {
  7. $nowatablica = $tablica[$i];
  8. break;
  9. }
  10. }
  11.  
  12. echo $nowatablica[4]; //zawartość w danej wersji jezykowej



Czy istnieje prostszy sposób zrobienia wersji jezykowych?

Czy można wykonać zapytanie które odrazu pobierze mi wersje jezykową z mysql?

coś w stylu 'select * from `STRONY` where (id=1 && tablica[][0]=$_GET['id'])'

Wazniak96
A po jasną cholerę serializujesz tablicę zamiast pododawać odpowiednie kolumny w MySQL? Tracisz na relacji danych umieszczonych w tablicy. Utrudniasz sobie tylko życie. To tak jak zamykać drzwi na klucz bo wychodzisz z domu tylko po to, żeby pozamiatać próg. smile.gif
zazdrosny17
Bo chce mieć możliwość co jakieś czas dodawania kolejnych języków.

Jak wg. powinna wyglądać baza?
Wazniak96
Kolejna tabela o strukturze id ; id_article ; language ; text i wtedy dla każdego języka osobny rekord. Chyba najwygodniejsza z możliwych rozwiązań.
by_ikar
powinna wyglądać tak:

Kod
CREATE TABLE IF NOT EXISTS `translations` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `lang` char(2) NOT NULL,
  `key` varchar(255) NOT NULL,
  `text` text NOT NULL,
  PRIMARY KEY (`id`),
  KEY `lang` (`lang`,`key`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;


Wtedy jednym zapytaniem będziesz mógł pobrać cale tłumaczenie dla określonego języka, a dzięki użyciu "key", będziesz mógł w czytelniejszy sposób wyświetlić tłumaczenie które cię interesuje. Co prawda nie jest to rozwiązanie bez wad, bo można dodać kilka razy tłumaczenie dla tego samego klucza (key), no ale od tego jest sprawdzanie dostępności przed dodaniem.
Pyton_000
MongoDB ma to co chcesz,a tutaj jak już koledzy napisali źle do tego podchodzisz.
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.