Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL] Problem ze zliczaniem wartości wybranych wierszy.
Forum PHP.pl > Forum > PHP
Arhenox
Witam!
Próbuję napisać sobie skrypt, który polega na tym, że zlicza wartości kolumn z tabeli, wybiera jednak tylko te, które są z aktualnego miesiąca (rozpoznaję to za pomocą explode'a daty obecnej i wpisu).
Wygląda on mianowicie tak:
  1. <?
  2. mysql_connect('XXXXX', 'XXXXXX', 'XXXXXX');
  3. mysql_select_db('XXXXX');
  4. $select = "SELECT * FROM XXXXX";
  5. $doselect = mysql_query($select);
  6. $amount = 0;
  7. while ($dane = mysql_fetch_assoc($doselect)) {
  8. $currentdate = date('d-m-Y');
  9. $date = explode('-', $currentdate);
  10. $fdate = $date[1].'-'.$date[2];
  11. $ddate = explode('-', $dane['dateof']);
  12. $ddatef = $ddate[1].'-'.$ddate[2];
  13. if ($fdate = $ddatef) {
  14. $amount += $dane['amount'];
  15. }
  16. }
  17. ?>

Problem polega na tym, że z nieznanej dla mnie przyczyny warunek "if" ustawia wartość zmiennej $fdate na taką samą jak $ddatef, przez co skrypt sumuje wszystko.
Chciałem to wszystko zbadać, więc przygotowałem 2 wersję skryptu:
  1. <?
  2. mysql_connect('XXXXX', 'XXXXX', 'XXXXX');
  3. mysql_select_db('XXXXX');
  4. $select = "SELECT * FROM XXXXX";
  5. $doselect = mysql_query($select);
  6. $amount = 0;
  7. while ($dane = mysql_fetch_assoc($doselect)) {
  8. $currentdate = date('d-m-Y');
  9. $date = explode('-', $currentdate);
  10. $fdate = $date[1].'-'.$date[2];
  11. $ddate = explode('-', $dane['dateof']);
  12. $ddatef = $ddate[1].'-'.$ddate[2];
  13. if ($fdate = $ddatef) {
  14. $amount += $dane['amount'];
  15. }
  16. echo $currentdate;
  17. echo '</br>';
  18. echo $dane['dateof'];
  19. echo '</br>';
  20. echo $fdate;
  21. echo '</br>';
  22. echo $ddatef;
  23. echo '</br>';
  24. echo $amount;
  25. echo '</br>';
  26. echo $ddate[0];
  27. echo '</br>';
  28. echo $ddate[1];
  29. echo '</br>';
  30. echo $ddate[2];
  31. echo '</br>--------------------------------------</br>';
  32. }
  33. echo $amount;
  34. ?>

W rezultacie otrzymałem:
Cytat
01-07-2013
01-06-2013
06-2013
06-2013
25
01
06
2013
--------------------------------------
01-07-2013
01-07-2013
07-2013
07-2013
40
01
07
2013
--------------------------------------
40

Skrypt powinien dodać wartość tylko drugiego rekordu, dzieje się inaczej, gdyż nagle zmienia się zmienna $fdate.
Proszę o pomoc i wytłumaczenie smile.gif
nospor
if ($fdate = $ddatef) {
Moze by tak zapoznal sie z podstawami?
= - przypisanie
== - porownanie
to sa dwie rozne rzeczy
Arhenox
Taka prosta pomyłka.
Sory, umysł dzisiaj nie pracuje, no i dzięki! smile.gif
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.