Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Dodawanie wierszy z tabeli
Forum PHP.pl > Forum > Bazy danych > MySQL
Lethys
Mam przykładowo bazę danych drzewa

|id|Brzoza|świerk|
|1| 12 | 11 |
|2| 23 | 1 |


Jak mogę zliczyć wszystkie np. świerki zapytaniem do bazy ?

Wicepsik
  1. sum
lord2105
  1. mysql_num_rows("SELECT id FROM drzewa WHERE swierk != ''");
GwynBleidD
Lethysa nie słuchaj, bo źle gada smile.gif Nie dość że zastosował zapytanie bezpośrednio do mysql_num_rows to jeszcze policzyłby Ci ilość rekordów z niepustym polem świerk, na dodatek robiąc to źle (powinniśmy liczyć tam, gdzie jest not null, a nie traktować to jak string i liczyć gdzie ten string nie jest pusty, może i by działało, ale dobre to to nie jest)

  1. SELECT sum(brzoza) AS brzozy, sum(świerk) AS świerki FROM drzewa

i w ten sposób uzyskujesz jednym zapytaniem policzone wszystkie brzozy i świerki.

Praktyczne wykorzystanie w PHP:
  1. try {
  2. $dbh = new PDO("mysql:host=localhost;dbname=baza", $user, $password);
  3. $dbquery = $dbh->prepare("SELECT sum(brzoza) AS brzozy, sum(świerk) AS świerki FROM drzewa");
  4. $dbquery->execute();
  5. } catch (PDOException $e) {
  6. echo 'Błąd ' . $e->getMessage();
  7. }
  8.  
  9. $wynik = $dbquery->fetchObject();
  10. echo 'Liczba brzóz: '.$wynik->brzozy.'<br />';
  11. echo 'Liczba świerków: '.$wynik->świerki.'<br />';

Jeśli będą jakieś problemy to zamień ś na s w świerkach smile.gif
Lethys
Tabela wyglada tak :





Mam taki prosty skrypt:

  1. <?php
  2.  
  3. $nart = mysql_num_rows(mysql_query("select * from articles"));
  4. $views = mysql_num_rows(mysql_query("select sum(visits) from articles"));
  5. $uu = mysql_num_rows(mysql_query("select sum(uu) from articles"));
  6.  
  7.  
  8.  
  9. print "We have wrote <b>$nart</b> articles.<br> Our Articles has been seen <b>$views</b> times, by <b>$uu</b> users. ";
  10.  
  11. ?>


Co prawda jest jesten wpis w tabeli ale zamiast pokazywać się


by 3 users pojawia sie by 1 users, czyli cos zle zliczylo sad.gif

A gry robie zapytanie w ten sposob:

$uu = mysql_query("select sum(uu) from articles");

pojawia się by Resource id #12 users.


GwynBleidD
mysql_num_rows zwraca liczbę elementów, nie ich sumę czy coś. jeśli chcesz zwrócić sumę wizyt z wszystkich rekordów użyj:

  1. $views_res = mysql_query("select sum(visits) from articles");
  2. $views_array = mysql_fetch_array($views_res);
  3. $views = $views_array[0];
  4. $uu_res = mysql_query("select sum(uu) from articles");
  5. $uu_array = mysql_fetch_array($uu_res);
  6. $uu = $uu_array[0];
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.