Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL][AJAX]Wykres z iloscią przypisanych zamowien
Forum PHP.pl > Forum > Przedszkole
kielich
Witam mam pewien problem do zrealizowania i mianowicie trudny do wytłumaczenia dlatego jak coś to pytajcie jeśli mnie nie zrozumiecie a wiec
mam wykre ktory pokazuje mi ilosc zamowionych towarów w ciagu danego mc i miesiace przypisałem i wyciągnołem ilosc zamowionych towarów ale nie umiem sobie zobrazować jak mam ja połaczyć ze w styczniu tylle lutym tyle itd.
to kod.
Kod
...
$sql = mysqL_query("SELECT ilosc, MONTH(czas) FROM zamowienia ");
while($row=mysql_fetch_array($sql))
{
   $data_1[] =$row['ilosc'];
}
// tworzymy nowy objekt
$g = new graph();

//Tytuł wykresu
$g->title( 'Wykres sprzedaży w danym miesiącu', '{font-size:16px; color: #FFFFFF; margin: 5px; background-color: #505050; padding:5px; padding-left: 20px; padding-right: 20px;}' );

//kolor tła
$g->bg_colour = '#e2ebed';

//przekazanie danych pierwszego wykresu
$g->set_data( $data_1 );
//właściwści 1 słupka: krycie, kolor, tytuł, szrokość
$g->bar_3D( 70, '#D54C78', '2009', 10 );

//wysokość spodu
$g->set_x_axis_3d( 15 );

//kolor lini wewnętrzynych i tła
$g->x_axis_colour( '#909090', '#ADB5C7' );
$g->y_axis_colour( '#909090', '#ADB5C7' );

//wartości osi X
$g->set_x_labels( array(
"1"=> "Stycznia",
"2"=>"lutego",
"3"=>"marca",
"4"=>"kwiectnia",
"5"=>"maja",
"6"=>"czerwca",
"7"=>"lipca",
"8"=>"sierpnia",
"9"=>"września",
"10"=>"października",
"11"=>"listopada",
"12"=>"grudnia") );
...

bardzo prosze mi pomoz wiem ze to jest jakis banalny probelm ale nie wiem jak mam go rozwiazac na wykresie mam miesiace łądnie ale ilosci nie sa przypisane do danego m-c tylko tak jak leci
pomoze mi ktos?questionmark.gif

czy nikt nie umie mi pomóc questionmark.gif
vokiel
Czego używasz do tworzenia wykresów?
Co zwraca zapytanie?
Jak przypisuje wartości metoda set_data() obiektu graph?

To tyle na wstępie, jak już to poznamy, będzie można coś poprawiać.
Wicepsik
Czemu robisz kilka tematów? Nie umiesz wszystkiego napisać w jednym?
erix
http://forum.php.pl/index.php?showtopic=12...mp;#entry636098


// tamten zamknąłem tongue.gif
// ayeo
kielich
no wiec wykresik biore sobie z
http://teethgrinder.co.uk/open-flash-chart/
praktycznie wszystko jest napisane w moim poprzednim poscie który mi zamknięto zal.
zapytanie zwraca ilosc || m-c
Wicepsik
A robiłeś to metodą prób i błędów? Czy jak nie udało Ci się to nie chce Ci się poprawiać?

PS. Używaj poprawnych bbcode.
Darti
  1. <?php
  2. while($row=mysql_fetch_array($sql))
  3. {
  4.   $data_1[$row['czas']] +=$row['ilosc'];
  5. }
  6. ?>
vokiel
To może tak:
  1. <?php
  2. $sql = mysqL_query("SELECT ilosc, MONTH(czas) as mc FROM zamowienia;");
  3. // btw sprawdzaj czy zapytanie sie powiodlo, czy zwrocilo wyniki
  4. while($row=mysql_fetch_array($sql)){
  5.    $id = $row['mc']-1;
  6.    $data_1[$id] =$row['ilosc'];
  7. }
  8. $g->set_x_labels( array("Stycznia","lutego","marca","kwiectnia","maja","czerwca","lipca","sierpnia","września","października","listopada","grudnia") );
  9. ?>
kielich
zaden z przykładów nie działa co do Darti to jak wiadomo dodaje mi wszystkie ilosci ale nie przypisuje do danego MONTH

Po wydaniu zapytania w sql dostaję taką formę

ilosc | czas
------------------
123 | 7
-----------------
254 | 9

gdzie czas to m-c

kto mi jakos może pomóc

wie moze ktos jak rozwiązać mój problem questionmark.gif

Niech mi ktoś jakoś pomoże to dla mnie bardzo wazną i ostatnią do skończenia zachcianego projektu rzeczą jest bardzo was prosze sad.gif

tu nie chodzi o samo wyswietlenie danych bo to banał dane wyswietlaja mi sie po koleei na wykresie od stycznia lecz zamowienie bylo załozone w lipcy np. nie wiem jak wyswielic dane zamowienie do danego m-c
Wicepsik
A czytałeś o MONTH w zapytaniu mysql ?
kielich
czytałem ale co to ma do rzeczy przeciez zapytanie zwraca wynik jak nalezy ;/??
Wicepsik
Kod
ilosc     mont
    5     7


  1. SELECT ilosc, MONTH( mont )
  2. FROM 1test LIMIT 0 , 30


Kod
ilosc     MONTH( mont )
5         NULL


Na pewno NULL to dobrze ?
kielich
no moje zapytanie zwraca wynik
ilosc 5 w 7 miesiacu wiec questionmark.gif

czy nie mógłbyś mi pomóc bo przeważ tylko tobie to wychodzi w stosunku do mnie smile.gif
erix
Celowo olewałem ten wątek, gdyż podbijanie jest moim zdaniem nieco bezczelne.

Ale trudno, niech stracę: podejrzewam, że potrzebujesz grupować wg miesięcy, ale napisz najpierw po polsku, co tak naprawdę chcesz osiągnąć.
kielich
na początek Dzięki .
no więc
mam w bazie ilosc zamowien w danym miesiącu i
np.
123 zamowienia w 2009-07-16
07 czyli lipiec smile.gif
no i wyswietla mi sie na wykresie ale nie do lipca tylko jak leci od początku czyli na styczniu jesli jest z następnego zamowienia to luty chodz był np. w czerwcu po prostu nie przypisuje mi do danego m-c tylko wrzuca na wykres jak leci ...
myśle ze teraz jest jasno smile.gif
erix
Cytat
no i wyswietla mi sie na wykresie ale nie do lipca tylko jak leci od początku czyli na styczniu jesli jest z następnego zamowienia to luty chodz był np. w czerwcu po prostu nie przypisuje mi do danego m-c tylko wrzuca na wykres jak leci ...

Wiesz, co to jest interpunkcja? Czytałeś, co napisałeś? Bo ja po parę razy i nadal nie rozumiem, co masz na myśli.

Jakich zamówień? Jakiego wykresu? Jakich tabel? Jakich danych? Nie dziw się, że jesteś olewany, skoro nie potrafisz wyrazić własnych myśli tak, aby ktoś prócz Ciebie zrozumiał...
kielich
powiem jasno i krótko

jest zamowienie
ilosc 127 raz w lipcu czyli 2009-07-16

mam na wykresie (którego kod jest wyżej) 127 zamowien ale nie wyswietla się to w przedziale lipca tylko w styczniu(przypisuje do wykresu od początku ) nie wiem jak mam przypisać ilosc zamowien w konkretnym m-c do m-c na wykresie

innaczej nie potrafie wyjaśnić tongue.gif
Wicepsik
Zastosuj grupowanie wg. miesięcy.
kielich
OK zrobiłem tak

  1. SELECT ilosc, MONTH(czas) FROM zamowienia GROUP BY MONTH(czas)


na wykresie mam styczen luty marzec itd i zamiast mi ładnie dopasować do danego mc na wykresie to wszystko daje od samego poczatku a tu jeszcze kod wykresu

os X
  1. <?php
  2. $g->set_x_labels( array(
  3. "1"=> "Stycznia",
  4. "2"=>"lutego",
  5. "3"=>"marca",
  6. "4"=>"kwiectnia",
  7. "5"=>"maja",
  8. "6"=>"czerwca",
  9. "7"=>"lipca",
  10. "8"=>"sierpnia",
  11. "9"=>"września",
  12. "10"=>"października",
  13. "11"=>"listopada",
  14. "12"=>"grudnia") );
  15. ?>


?

dlaczego nikt niechce chociaz spróbowac mi pomóc to jest dla mnie bardzo wazne
Nikogo nie ma kto to jest w stanie sprostac mojemu problemowi
vokiel
Daj kawałek dumpa sql'a żebym mógł to sobie lokalnie wrzucić do bazy
kielich
  1. $sql = mysqL_query("SELECT ilosc, MONTH(czas) FROM zamowienia GROUP BY MONTH(czas)");
  2. var_dump($sql);

dostaje
Kod
resource(5) of type (mysql result)

dziwne moge jeszcze na PW ci prześłąc wszystko jak cos
erix
Zrzut zawartości bazy, a nie var_dump" title="Zobacz w manualu PHP" target="_manual... dry.gif
kielich
  1. CREATE TABLE IF NOT EXISTS `zamowienia` (
  2. `id` int(11) NOT NULL AUTO_INCREMENT,
  3. `nazwa_prod` varchar(255) character SET utf8 collate utf8_polish_ci NOT NULL,
  4. `cena` float NOT NULL,
  5. `ilosc` bigint(20) NOT NULL,
  6. `wartosc` float NOT NULL,
  7. `status` int(11) NOT NULL DEFAULT '0',
  8. `klient` varchar(255) character SET utf8 collate utf8_polish_ci NOT NULL,
  9. `czas` varchar(255) character SET utf8 collate utf8_polish_ci NOT NULL,
  10. `id_produktu` int(11) NOT NULL,
  11. PRIMARY KEY (`id`)
  12. ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=640 ;
  13.  
  14. --
  15. -- Dumping data for table `zamowienia`
  16. --
  17.  
  18. INSERT INTO `zamowienia` (`id`, `nazwa_prod`, `cena`, `ilosc`, `wartosc`, `status`, `klient`, `czas`, `id_produktu`) VALUES
  19. (639, 'farby', 123, 5, 615, 1, 'asd@o2.pl', '2009-07-21 11:06:09', 39);
skinner
Musisz dla Twojego wykresu w tablicy $data_1 podać 12 wartości. Pierwsza to ilość zamówień w styczniu, druga w lutym itd.
Aby "narysować" słupek ilości zamówień w lipcu (7 miesiąc) to tablica musi wyglądać tak:

  1. <?php
  2. $data_1 = array('0','0','0','0','0','0','ile_w_lipcu','0','0','0','0','0').
  3. ?>


Ważna jest kolejność.

Zapytanie SQL:

  1. SELECT ilosc, MONTH(czas) FROM zamowienia GROUP BY MONTH(czas);
kielich
No ok ale jak mam wyciagnac ilosc np. do lipca questionmark.gif
skinner
Ile masz rekordów w tabeli??
W jednym miesiącu masz kilka wpisów i chcesz wyświetlać łączną ilość dla każdego miesiąca?
kielich
tak kazde zamowienie ma date z m-c i musze dodac wszytskie do danego m-c

np.
gdzie 123 23 to ilosc
584 Piłka adidas 199 123 199 34 asd@o2.pl 2009-07-18 12:09:37 36
588 Piłka adidas 199 23 199 0 asd@o2.pl 2009-07-21 10:44:20 36
skinner
To powinno zadziałać:

  1. SELECT MONTH( czas ) AS miesiac_nr, SUM( ilosc ) AS ile_zamowien_miesiac
  2. FROM `zamowienia` GROUP BY MONTH( czas ) ;
kielich
no zapytanie miałem ale jak mam wypisac no np. z tego twojego zapytania questionmark.gif

OK zrobiłem wielkie dzieki za wszystko smile.gif

jeszcze mała poprawka

  1. <?php
  2. while($row=mysql_fetch_array($sql))
  3. {
  4. $ilosc=$row['ile_zamowien_miesiac'];
  5.   $data_1 = array('12','23','23','23','0','0',$ilosc,'0','0','0','0','0');
  6. }
  7. ?>


jak mam wypisac do odpowiedniego m-c

wszystko jest juz prawie oK teraz tylko nie wiem jak mam wypisac do danego m-c

no bo przeciez nie moge roic tak ze jesli przyjdzie zamowienie to bede doklejał m-c na wykres tongue.gif
skinner
To wypełnia automatycznie całą tablicę pod warunkiem że w każdym miesiącu jest przynajmniej jeden wpis:

  1. <?php
  2. $data_1 = array();
  3.  
  4. $sql = "SELECT SUM( ilosc ) AS ile_zamowien_miesiac FROM `zamowienia` GROUP BY MONTH( czas );";
  5. $res = mysql_query($sql);
  6. while($row = mysql_fetch_assoc($res)){
  7.    $data_1[] = $row['ile_zamowien_miesiac'];
  8. }
  9. ?>


Jeśli koniecznie zależy Ci na danym m-c możesz wyciągać na piechotę z bazy np. dla lipca

  1. SELECT SUM( ilosc ) AS ile_zamowien_miesiac
  2. FROM `zamowienia` WHERE MONTH( czas ) = '7'
kielich
no rzaczywiscie no ale nie pokazuje sie pod "Lipiec" np. tylko styczen 65 luty 123 itd
skinner
Sprawdź dokładnie wszystko jeszcze raz. U mnie wszystko działa.

Dump bazy (przykładowe dane):
  1. CREATE TABLE `zamowienia` (
  2. `id` int(11) NOT NULL AUTO_INCREMENT,
  3. `nazwa_prod` varchar(255) character SET utf8 collate utf8_polish_ci NOT NULL,
  4. `cena` float NOT NULL,
  5. `ilosc` bigint(20) NOT NULL,
  6. `wartosc` float NOT NULL,
  7. `status` int(11) NOT NULL DEFAULT '0',
  8. `klient` varchar(255) character SET utf8 collate utf8_polish_ci NOT NULL,
  9. `czas` varchar(255) character SET utf8 collate utf8_polish_ci NOT NULL,
  10. `id_produktu` int(11) NOT NULL,
  11. PRIMARY KEY (`id`)
  12. ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=652 ;
  13.  
  14. --
  15. -- Zrzut danych tabeli `zamowienia`
  16. --
  17.  
  18. INSERT INTO `zamowienia` (`id`, `nazwa_prod`, `cena`, `ilosc`, `wartosc`, `status`, `klient`, `czas`, `id_produktu`) VALUES
  19. (639, 'farby', 123, 5, 615, 1, 'asd@o2.pl', '2009-07-21 11:06:09', 39),
  20. (2, '', 0, 10, 0, 0, '', '2009-06-21 11:06:09', 0),
  21. (3, '', 0, 123, 0, 0, '', '2009-03-01 11:06:09', 0),
  22. (640, '', 0, 178, 0, 0, '', '2009-1-01 12:00:00', 0),
  23. (641, '', 0, 106, 0, 0, '', '2009-2-01 12:00:00', 0),
  24. (642, '', 0, 10, 0, 0, '', '2009-3-01 12:00:00', 0),
  25. (643, '', 0, 90, 0, 0, '', '2009-4-01 12:00:00', 0),
  26. (644, '', 0, 171, 0, 0, '', '2009-5-01 12:00:00', 0),
  27. (645, '', 0, 96, 0, 0, '', '2009-6-01 12:00:00', 0),
  28. (646, '', 0, 104, 0, 0, '', '2009-7-01 12:00:00', 0),
  29. (647, '', 0, 84, 0, 0, '', '2009-8-01 12:00:00', 0),
  30. (648, '', 0, 119, 0, 0, '', '2009-9-01 12:00:00', 0),
  31. (649, '', 0, 100, 0, 0, '', '2009-10-01 12:00:00', 0),
  32. (650, '', 0, 219, 0, 0, '', '2009-11-01 12:00:00', 0),
  33. (651, '', 0, 215, 0, 0, '', '2009-12-01 12:00:00', 0);


Wyciągnie danych z bazy:

  1. <?php
  2. $data_1 = array();
  3.  
  4. $sql = "SELECT SUM( ilosc ) AS ile_zamowien_miesiac FROM `zamowienia` GROUP BY MONTH( czas );";
  5. $res = mysql_query($sql);
  6. while($row = mysql_fetch_assoc($res)){
  7.    $data_1[] = $row['ile_zamowien_miesiac'];
  8. }
  9. ?>


WyniK:
kielich
No ok a wez teraz usun (640, '', 0, 178, 0, 0, '', '2009-1-01 12:00:00', 0), i wszystko sie przesunie na styczen
skinner
Cytat(skinner @ 21.07.2009, 14:41:49 ) *
To wypełnia automatycznie całą tablicę pod warunkiem że w każdym miesiącu jest przynajmniej jeden wpis:


Dokładnie Ci napisałem jak to działa.
Jeśli chcesz to sobie napisz za pomocą pętli i warunków sprawdzających czy danego miesiąca nie ma i ustawiaj jego wartość na 0 zamówień.

To mój ostatni post w tym temacie.
kielich
No nic bardzo mi pomogłeś i dzieki za wszystko lekko podrasuje i bedzie git pozdro
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.