Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Uzupełnianie brakujących danych
msm
post
Post #1





Grupa: Zarejestrowani
Postów: 39
Pomógł: 2
Dołączył: 15.07.2010

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
mmmmmmm
post
Post #2





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

Ostrzeżenie: (0%)
-----


  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
Go to the top of the page
+Quote Post
b4rt3kk
post
Post #3





Grupa: Zarejestrowani
Postów: 1 933
Pomógł: 460
Dołączył: 2.04.2010
Skąd: Lublin

Ostrzeżenie: (0%)
-----


  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. }


Ten post edytował b4rt3kk 18.09.2012, 00:52:36


--------------------
Jeśli pomogłem, kliknij proszę 'pomógł'. Dzięki.
Go to the top of the page
+Quote Post
CuteOne
post
Post #4





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

Ostrzeżenie: (0%)
-----


  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. }
Go to the top of the page
+Quote Post
msm
post
Post #5





Grupa: Zarejestrowani
Postów: 39
Pomógł: 2
Dołączył: 15.07.2010

Ostrzeżenie: (0%)
-----


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. }



Go to the top of the page
+Quote Post
CuteOne
post
Post #6





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

Ostrzeżenie: (0%)
-----


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 />';


Ten post edytował CuteOne 18.09.2012, 20:59:48
Go to the top of the page
+Quote Post
msm
post
Post #7





Grupa: Zarejestrowani
Postów: 39
Pomógł: 2
Dołączył: 15.07.2010

Ostrzeżenie: (0%)
-----


Dzięki wielkie.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 09:03