Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Uzupełnianie brakujących danych
Forum PHP.pl > Forum > Przedszkole
msm
Witam nie wiem jak się zabrać za temat mianowicie
Jest tabela, pierwsza kolumna to miesiące druga to wartość i zakładamy że aktualny miesiąc to grudzień
1|10
2|22
5|18
9|13
Chciałbym uzyskać taki wynik
1|10
2|22
3|22
4|22
5|18
6|18
7|18
8|18
9|13
10|13
11|13
12|13
Reasumując chciałbym aby miesiące bez wartości przyjęły wartość pierwszego poprzedniego z wartością.
MS.
mmmmmmm
  1. SELECT
  2. miesiace.miesiac,
  3. CASE
  4. WHEN dane.miesiac IS NULL
  5. THEN
  6. (
  7. SELECT wartosc FROM (SELECT 1 miesiac, 10 wartosc UNION ALL SELECT 2 , 22 UNION ALL SELECT 5, 18 UNION ALL SELECT 9,13) dane WHERE miesiac<miesiace.miesiac ORDER BY miesiac DESC LIMIT 1 )
  8. ELSE dane.wartosc
  9. END wartosc
  10. FROM (
  11. SELECT 1 miesiac UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9 UNION ALL SELECT 10 UNION ALL SELECT 11 UNION ALL SELECT 12
  12. ) miesiace
  13. LEFT JOIN (
  14. SELECT 1 miesiac, 10 wartosc UNION ALL SELECT 2 , 22 UNION ALL SELECT 5, 18 UNION ALL SELECT 9,13
  15. ) dane ON dane.miesiac=miesiace.miesiac
b4rt3kk
  1. SELECT miesiac, wartosc FROM tabela


  1. while($row) {
  2.  
  3. if (!empty($row['wartosc'])) $wartosc = $row['wartosc'];
  4.  
  5. echo $row['miesiac'];
  6. echo $wartosc;
  7.  
  8. }
CuteOne
  1. while($row=mysql_fetch_assoc($query)) {
  2. $array[$row['month']] = $row;
  3. }
  4.  
  5.  
  6. $w = $array[key($array)]['wartosc'];
  7.  
  8. for($m=1;$m<=12;$m++) {
  9.  
  10. if(isset($array[$m])) {
  11.  
  12. $w = $array[$m]['wartosc'];
  13. }
  14. else {
  15.  
  16. //insert z $w
  17. }
  18. }
msm
Witam, skupiłem się na przykładzie CuteOne i w wyniku otrzymuję wartości inne niż oczekuje.
Dla wartości w bazie
month|wartosc
1|100
2|200
4|300
6|500
dostaje
200
300
500
500
500
500
500
500
  1. require('connect.php');
  2.  
  3. $query = mysql_query("SELECT * FROM test");
  4.  
  5. while($row=mysql_fetch_assoc($query)) {
  6. $array[$row['month']] = $row;
  7. }
  8.  
  9. $w = $array[key($array)]['wartosc'];
  10.  
  11. for($m=1;$m<=12;$m++) {
  12.  
  13. if(isset($array[$m])) {
  14.  
  15. $w = $array[$m]['wartosc'];
  16. }
  17. else {
  18.  
  19. echo $w.'<br />';
  20. }
  21. }



CuteOne
ehh...
  1. if(isset($array[$m])) {
  2.  
  3. $w = $array[$m]['wartosc'];
  4. echo $w.'<br />';
  5. }
  6. else {
  7.  
  8. echo $w.'<br />';
  9. }


lub bardziej elegancko
  1. if(isset($array[$m])) {
  2.  
  3. $w = $array[$m]['wartosc'];
  4. }
  5. echo $w.'<br />';
msm
Dzięki wielkie.
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.