Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]If czy tablica?
Forum PHP.pl > Forum > Przedszkole
-Początkujący-
Siema, pisze sobie taką małą gierke via www. Jestem AMATOREM biggrin.gif
Mam kilka lokacji, i w glownym menu chce wyświetlać jego nazwę.

W bazie mam tabele user, w której zapisuje lokacje w ktorej znajduje sie uzytkownik (liczbami).

0 => labirynt
1 => miasto1
2 => miasto2
3 => wies1

I teraz jak to wyświetlić, żeby nie zabieralo 'duzo' czasu ;p

Myślałem o ifach i tablicy.
Nie wiem czy to do konca dobre roziwazanie.

IF'y:

  1. if ($user['lokacja'] == '0'){
  2. echo ':: <a href="#">labirynt</a><br>';
  3. }
  4. else if ($user['lokacja'] == '1'){
  5. echo ':: <a href="#">miasto1</a><br>';
  6. }
  7. else if ($user['lokacja'] == '2'){
  8. echo ':: <a href="#">miasto2</a><br>';
  9. }
  10. else if($user['lokacja'] == '3'){
  11. echo ':: <a href="#">wies1</a><br>';
  12. }


Tablica

  1. $miejsce = array('labirynt','miasto1', 'miasto2', 'wies1');
  2. echo ':: <a href="#">'.$miejsce[$user['lokacja']].'</a><br>';


Chyba, że w bazie uzyc stringa, nie inta ;p slyszalem ze szybciej baza dziala na liczbach.

2 pytanko dotyczy optymalizacji.

najbardziej zalezy mi na jakims linku do dobrego tutorialu na temat optymalizacji skryptów php i zapytan sql

szukałem, zeby nie było.. ale nie spełniało to moich oczekiwan :<

chociaż jeśli ktoś chce napsiać to tutaj, to bardzo prosze smile.gif
Ulysess
  1.  
  2. switch($int_z_bazy)
  3. {
  4. case 1:
  5. $link = 'index.php?page=1';
  6. $nazwa_lokalizacji = 'Miasto Główne';
  7. break;
  8. case 2:
  9. $link = 'index.php?page=12';
  10. $nazwa_lokalizacji = 'Labirynt';
  11. break;
  12. default:
  13. $link = 'index.php';
  14. $nazwa_lokalizacji = 'Strona Głowna';
  15. break;
  16. }
  17. echo '<a href="'.$link.'">'.$nazwa_lokalizacji.'</a>';


przechowujesz w bazie w formie INT lokalizacje , następnie wykorzystujesz składnie switch aby dla danego INTa przypisać odpowiednik link, nazwe lokalizacji

jeśli w bazie masz wartość 1 to pojawi się Miasto Główne , jeśli 2 to Labirynt jeśli masz inną wartośc jak 1,2 wtedy zostaną pobrane wartości z default czyli dla pozostałych

PS jeśli używasz wartości INT to '' lub "" stają się zbędne
Gość
To będzie najszybsze tak?biggrin.gif

Dzięki.

Czekam teraz na odpowiedz na 2 pytanie.
Ulysess
zapewne dla Twoich podstaw to rozwiązanie wystarczy ale skoro jesteś tak bardzo ciekaw które jest najszybsze na początku strony daj $czas_generowania['start'] = microtime();
na koncu $czas_generowania['koniec'] = microtime();
oraz echo $czas_generowania['koniec'] = microtime() - $czas_generowania['start'] = microtime();

i tak dla każdego z rozwiązań wtedy zobaczysz które jest najbardziej efektywne
jeśli chodzi optymalność to zbytnio Tobie nie pomogę, ale według mnie:
1 Co do bazy , powinieneś przede wszystkim dokładnie przemyśleć jej strukturę , tzn w jaki sposób przetrzymywać informacje , na jakie tabele podzielić , jakich pól do tego użyć , na które pola warto założyć INDEXy , unique itp
sam "posiadam" małą gre via www i teraz muszę przebudowywać bazę ponieważ na samym początku źle przemyślałem i popełniłem błędy.. pamiętaj żeby tworzyć tak abyś miał jak najmniejszy problem w przyszłości jeżeli chciałbyś coś dodać , zmienić bądź usunąć
by_ikar
@Ulysess z tym switchem to przesadziłeś. Tablica jaką przedstawił autor tematu, jako drugie rozwiązanie będzie zyliard razy szybsza, czytelniejsza i będzie zajmować mniej miejsca niż w przypadku twojego switcha.
Niktoś
Też uważam ,że tablica będzie optymalniejsza.Te switch'e fajnie się sprawdzają z selectami ,można wtedy jechać po wartościach ,nazwach,lub po indexach.Żeby wyrzucić z bazy id i case'ami jechać,to nie jest optymalne wyjście,ale zawsze jakieś wink.gif
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.