Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [Gotowiec]Wyciąganie danych z danego rekordu da się jeszcze wydajniej ?
Grzesiek1
post 18.11.2007, 18:30:33
Post #1





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 5.02.2007

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


  1. <?
  2.  function stats($in)
  3. {
  4.    $charset = array(
  5.     'z' => array(
  6.        "postcount", "topiccount", "usercount", "visitors"
  7.    ),
  8.    'do_' => array(
  9.        "Postów ", "Tematów ", "Użytkowników ", "Odwiedzono "
  10.    ),
  11. );
  12. return str_replace($charset[z], $charset[do_], $in);
  13. }
  14. $statsq = mysql_query ("SELECT * FROM phpbb_config WHERE config_name IN ('visitors', 'topiccount', 'postcount', 'usercount')");
  15. while($row=mysql_fetch_assoc($statsq)){
  16.  $cn = stats($row[config_name]);
  17.  echo "$cn";
  18.  echo "[<b>$row[config_value]</b>]<br />";
  19. } 
  20. ?>


Ten post edytował Grzesiek1 24.09.2008, 15:58:18
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
wlamywacz
post 18.11.2007, 19:41:15
Post #2





Grupa: Zarejestrowani
Postów: 535
Pomógł: 27
Dołączył: 3.05.2005

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


Po co tyle zapytań mysql ? :|
Go to the top of the page
+Quote Post
Grzesiek1
post 18.11.2007, 19:49:28
Post #3





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 5.02.2007

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


?

Ten post edytował Grzesiek1 24.09.2008, 16:00:41
Go to the top of the page
+Quote Post
BaN
post 18.11.2007, 21:20:52
Post #4





Grupa: Zarejestrowani
Postów: 158
Pomógł: 43
Dołączył: 9.11.2007

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


W pierwszym skrypcie masz jedno zapytanie, a w drugim 4, więc na pewno pierwszy jest lepszy.
Jeżeli na polu 'config_name' jest założony indeks lub jest to pole unikalne, to moim zdaniem zapytanie jest optymalne o ile w tabeli 'phpbb_config' są tylko dwie kolumny. Jeżeli jest ich więcej, to powinieneś zamiast 'SELECT * ' zastosować 'SELECT config_name,config_value', gdyż tylko te dwa pola wykorzysujesz.
Krótsza wersja (bez funkcji, gdyż zamiana powinna być zrobiona tylko raz po odczytaniu wszystkich wyników zapytania):
  1. <?php
  2. $statsq = mysql_query ("SELECT * FROM phpbb_config WHERE config_name IN ('visitors', 'topiccount', 'postcount', 'usercount')");
  3. $html = '';
  4. while($row=mysql_fetch_assoc($statsq)){
  5. $html .= "{$row['config_name']} [<b>{$row['config_value']}</b>]<br>";
  6. } 
  7. echo str_replace(array('postcount', 'topiccount', 'usercount', 'visitors'), array('Postów', 'Tematów', 'Użytkowników', 'Odwiedzono'), $html);
  8. ?>
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 Wersja Lo-Fi Aktualny czas: 14.08.2025 - 07:52