Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Statystyki błąd.
Forum PHP.pl > Forum > Przedszkole
ArekJ
Witam.

Mam skrypt statystyk. Jedna część jest odpowiedzialna za wyświetlanie ile osób się zarejestrowało, a druga za wyświetlanie ostatnio zarejestrowanej osoby. I wtej pierwszej części jest błąd, ponieważ zawsze wyświetla 1 :/



Skrypt:

  1. <?php
  2.  
  3. require_once 'konfiguracja.php';
  4.  
  5. $ilosc=mysql_query('SELECT id FROM uzytkownik WHERE 1=1');
  6. $liczba=mysql_num_rows($ilosc);
  7.  
  8. $najnowszy=mysql_fetch_array(mysql_query("SELECT * FROM uzytkownik ORDER BY id DESC LIMIT 1"));
  9.  
  10. ?>




A tak wyświetlam:

  1. Mamy <?php echo $liczba; ?> użytkowników!
  2. <br />
  3. Ostatnio zarejestrował się: <?php echo $najnowszy['login']; ?>


Wie ktoś gdzie jest błąd?
webdice
Bo takie zapytanie zwróci Ci zawsze jeden rekord. Zrób tak:

  1. <?php
  2. $ilosc=mysql_query('SELECT id FROM uzytkownik');
  3. ?>


A najlepiej skorzystać z funkcji COUNT którą oferuje MySQL.
ArekJ
Teraz zapytanie wygląda tak:

  1. <?php
  2.  
  3. require_once 'konfiguracja.php';
  4.  
  5. $ilosc=mysql_query('SELECT id FROM uzytkownik');
  6. $liczba=mysql_num_rows($ilosc);
  7.  
  8. $najnowszy=mysql_fetch_array(mysql_query("SELECT * FROM uzytkownik ORDER BY id DESC LIMIT 1"));
  9.  
  10. ?>

I ndala nie działa sad.gif A nie wiem jak za pomocą tej drugij funkcji zbudować zapytanie...
Strzałek
fetch_array zwraca Ci tablicę z wierszami, jako że masz LIMIT 1 więc dostaniesz jeden wiersz czyli echo robisz tak:

  1. Ostatnio zarejestrował się: <?php echo $najnowszy[0]['login']; ?>
ArekJ
Ej, ale tu nie chodzi o ostatnio zarejestrowaną osobe, tylko o ile osób się zarejestrowało winksmiley.jpg
nexis
  1. <?php
  2. $query  = "SELECT COUNT(`id`) FROM `uzytkownik`";
  3. $query  = mysql_query($query) or exit(mysql_error());
  4. $result = mysql_fetch_row($query);
  5. $count  = $result[0];
  6. echo $count;
  7. ?>
Strzałek
  1. <?php
  2. $ilosc=mysql_fetch_array(mysql_query("SELECT COUNT(*) as count FROM uzytkownik"));
  3. echo $ilosc[0]['count'];
  4. ?>


Dodano:: Ehh, nexis szybszy winksmiley.jpg
ArekJ
Dzięki za szybką pomoc smile.gif Mam tylko pytanie, który skrypt jest optymalniejszy(który mniej obciąża serwer) wiem, że będą to milionowe sekundy, ale zawsze coś winksmiley.jpg
webdice
Oczywiście funkcja count.
Strzałek
Nasze kody są właściwie takie same, mój jest krótszy, mniej zmiennych więc i szybszy. Ale nie popadajmy w paranoje.

Natomiast jeżeli chodzi o SQL - przy dużych ilościach danych COUNT może być zabójczy. Jednak zrobienie zapytania count jest szybsze niż SELECTa i późniejszego mysql_num_rows
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.