[PHP] Zamiana danych z bazy na dane "czytelne" dla użytkownika

Witam,

Tworzę pewną wyszukiwarkę opartą na filtry, chcąc skompresować rozmiar bazy danych MySQL wymyśliłem sobie, że dane jakie będa się zapisywać w bazie będą w krótszej formie niż te wyświetlane użytkownikom, na przykład:

Użytkownik widzi na stronie słowo “POLSKA”, a w bazie w kolumnie ‘kraje’ jest to wartość “01”, dla “BUŁGARIA” jest to wartość “02”, itd…

Ale takie rozwiązanie wydłuża działanie całego skryptu, niestety nie jest to ekonomiczne.

Czy istnieje jakiś sposób w PHP dzięki któremu w bazie wartość 01 to POLSKA na stronie www?

Dopuszczam też myśl, żeby zapisywać w bazie takie same wartości jak te wyświetlane na stronie, ale rozmiar bazy zaraz się powiększy…

Co robić?

PS

Powiedzmy, że szukam rozwiązania na wzór szyfrowania i deszyfrowania danych.

  1. Nie wiem gdzie jest problem w takim rozwiązaniu

  2. Bez sensu używać switch równie dobrze może to zrobić sama baza danych, ba nawet powinna

  3. Bez kodu skąd ktoś ma Ci powiedzieć gdzie masz błąd?

  1. To napisz jak?

    do {

     			// WIDOK LISTY - BODY
     			echo 'tr style="color:#949494"
     				td'.$wiersz[7].'/td !-- Miasto --
     				td'.$wiersz[8].'/td !-- Kraj --
     			/tr';
     		} while ($wiersz = mysql_fetch_row($idzapytania));
    

Na wzór, taką pętlą wyciągam, pokazywanie zapytania do bazy itd… jest zbędne w tym wypadku.

I przykładowy switch

switch ($wiersz[8]){ //PINLOCK
				case "01": $wiersz[8] = 'POLSKA'; break;
				case "02": $wiersz[8] = 'BUŁGARIA'; break;
.
.
. itd...
			}

 

Tworzysz tabelkę w bazie danych z kolejnymi krajami i jego id’kami, np: 1 | Polska, 2 | Grecja, do głównej tabelki wrzucasz tylko id kraju.

Poczytaj o kluczach obcych…

Dzięki wielkie, chyba tego szukałem :slight_smile: za chwilę siadam i robię to.

plus przy pobieraniu danych robisz z tą tabelką (słownikiem) joina, a w wyniku odrzucasz id kraju a zastawiasz już samą jego nazwę.

Switch nie działa bo go nie robisz w pętli tylko na jednym elemencie.