Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Gotowiec]Wyciąganie danych z danego rekordu da się jeszcze wydajniej ?
Forum PHP.pl > Forum > PHP
Grzesiek1
  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. ?>
wlamywacz
Po co tyle zapytań mysql ? :|
Grzesiek1
?
BaN
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. ?>
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.