Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]If czy tablica?
--Początkujący--
post
Post #1





Goście







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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
Ulysess
post
Post #2





Grupa: Zarejestrowani
Postów: 695
Pomógł: 65
Dołączył: 27.07.2009
Skąd: Y

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


  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 the top of the page
+Quote Post
-Gość-
post
Post #3





Goście







To będzie najszybsze tak?biggrin.gif

Dzięki.

Czekam teraz na odpowiedz na 2 pytanie.
Go to the top of the page
+Quote Post
Ulysess
post
Post #4





Grupa: Zarejestrowani
Postów: 695
Pomógł: 65
Dołączył: 27.07.2009
Skąd: Y

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


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ąć
Go to the top of the page
+Quote Post
by_ikar
post
Post #5





Grupa: Zarejestrowani
Postów: 1 798
Pomógł: 307
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

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


@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.
Go to the top of the page
+Quote Post
Niktoś
post
Post #6





Grupa: Zarejestrowani
Postów: 1 195
Pomógł: 109
Dołączył: 3.11.2011

Ostrzeżenie: (10%)
X----


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

Ten post edytował Niktoś 2.01.2012, 02:02:56
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 09:05