![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 41 Pomógł: 0 Dołączył: 26.08.2009 Skąd: Zamojsce Ostrzeżenie: (0%) ![]() ![]() |
(IMG:http://images41.fotosik.pl/185/dcd2828ceae7e2a9m.jpg)
Pewien skrypt pewnego Pana generuje wykresy takie jak ten pierwszy wykres na screenie Trzeba tylko w pewnym pliku podać odpowiednie dane I tak ten pomarańczowy wykres miał zapodane takie coś:
Otrzymuje też wyniki:
Moja struktura bazy danych wygląda następująco: (chodzi o tabele data i produkty) (IMG:http://images43.fotosik.pl/188/1182f918ccd3c00fm.jpg) Jak widać w zapytaniu chcę pokazać jakoś popyty dla produktu akurat o Id=2 ale wyświetla mi tylko pierwszą datę i pierwszy popyt dla towaru id=2 W tabeli produkty mam 9 pozycji dla towaru o Id=2 id_daty ...id_towaru... popyt 1.......... 2 ............20 2 ..........2 ............25 3 ..........2 ............15 4 ..........2 ..............5 5 ..........2 ............15 6 ..........2 ............10 7 ..........2 ............15 8 ..........2 ............15 9 ..........2 ............15 Jak pokazać wszystkie daty i wszystkie popyty dla danego id towaru? Ten post edytował damianprz 29.08.2009, 13:20:34 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 295 Pomógł: 9 Dołączył: 8.02.2006 Ostrzeżenie: (0%) ![]() ![]() |
Powinieneś się uczyć na poprzednich przykładach ponieważ odczytanie wielu wyników z jednego zapytania sam osobiście ci zapodałem (IMG:style_emoticons/default/smile.gif)
Pokaże ci na prostym przykładzie który możesz sobie potem dowolnie dostosować.
parę słów wyjaśnień. Wykonać zapytanie umiesz Wynik zapytania ($result) odczytujesz po przez pętle która czyta wiersz po wierszu z tabeli Dostęp do konkretnych pól masz po przez
gdzie 'jakies_pole' to nazwa kolumny w twojej tabeli z tego co widzę w twoim przykładzie wystarczy, że $nazwy i $wartosci odczytasz iteracyjnie mam nadzieję, że to pomogło Ten post edytował Fixus 29.08.2009, 12:09:52 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 41 Pomógł: 0 Dołączył: 26.08.2009 Skąd: Zamojsce Ostrzeżenie: (0%) ![]() ![]() |
Tyle że ja nie chce wyświetlić tych tabel tylko pod $nazwy i $wartosci podpiąć ciągi odpowiednio dat i popytów $nazwy i $wartosci to tabele mysql_fetch_array($rezultat) rezultat to wynik kwerendy a kwerenda to SELECT...
w którym miejscu mam podpiąć while? Wiem ciężko kapujący jestem ale proszę o pomoc |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 295 Pomógł: 9 Dołączył: 8.02.2006 Ostrzeżenie: (0%) ![]() ![]() |
dobra już rozumiem w czym masz problem (IMG:style_emoticons/default/smile.gif)
nie jestem specem od sql dlatego moje rozwiązanie może być nieoptymalne ale będzie działać
mam nadzieję, że pomogło Ten post edytował Fixus 29.08.2009, 17:19:20 |
|
|
![]()
Post
#5
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
Jeśli chcesz dla każdego rekordu podpiąć odpowiadającą mu datę to musisz jedynie zrobić LEFT JOIN z tabelą dat. Tyle że nie jako pierwszą. Dla Ciebie są istotne rekordy tyczące produktu i to do niego dołączasz daty rozpoznane po ich id. Miałeś to już wykonane w swoim zapytaniu, ale zapomniałeś dodać kolumny do wyniku.
Wystarczyło byś dopisał data.data obok produkty.popyt (IMG:style_emoticons/default/smile.gif)
lub jeśli trzymać się LEFT JOIN (ja zamieniłem kolejność kolumn by najpierw daty były a potem popyt)
To Ci zwróci ciąg wierszy z datą i popytem w tym dniu dla produktu o id_towaru równym 2 EDIT: Swoją droga to nie musisz mi za każdym razem dawać pomógł. Raz by w zupełności wystarczyło (IMG:style_emoticons/default/smile.gif) W tematach teraz jest przez to "kolorowanka" (IMG:style_emoticons/default/winksmiley.jpg) Ten post edytował thek 29.08.2009, 17:45:34 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 41 Pomógł: 0 Dołączył: 26.08.2009 Skąd: Zamojsce Ostrzeżenie: (0%) ![]() ![]() |
dobra już rozumiem w czym masz problem (IMG:style_emoticons/default/smile.gif) nie jestem specem od sql dlatego moje rozwiązanie może być nieoptymalne ale będzie działać
mam nadzieję, że pomogło Twój kod (z drobną poprawką - daty zamieniłem na wartosci, bo plik generujący wykres ma dostać 2 ciągi znaków o równej ilości bo w innym wypadku wywala bład, te ciagi znaków mają być pod zmiennymi $nazwy i $wartosci, a były $daty)
dał takie wyniki z echo:
oraz wykres, który niestety nadal jest zły (IMG:http://images46.fotosik.pl/190/24a7bd02ec3f8a8fm.jpg) |
|
|
![]()
Post
#7
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
Jak mniemam, po prostu do konkretnych tablic musisz tylko podpiąć wyniki zapytań... Mogę się jednak mylić. Jeśli jednak dobrze kombinuję to powiązano to tak... Musisz mieć dwie tablice o równej długości. Pierwsza przechowuje bowiem "nazwę kolumny", a druga "wartość kolumny" (IMG:style_emoticons/default/smile.gif) Wystarczy tylko napisać zapytanie, które zwróci wynik. Potem w pętli wrzucisz je do dwóch tablic i podepniesz jako dane do owego wykresu. Czyli po sprawdzeniu zawartości...
nazwy = (data1, data2, data3, data4) wartosci = (dane1, dane2, dane3, dane4) I teraz wykres miałby 4 kolumny o wysokości słupków zgodnych z wartościami, i nazwach odpowiednich pod słupkami. |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 41 Pomógł: 0 Dołączył: 26.08.2009 Skąd: Zamojsce Ostrzeżenie: (0%) ![]() ![]() |
.
. . . . . about thek
Pytanko 2 zwróci ciąg wierszy z datą i popytem dla towaru nr 2 ale chodzi o to że plik generujący wykres działa tak, że ma otrzymać 2 ciągi znaków o równej liczbie I np w $nazwy trzeba wczytać daty a w $wartosci wpisać wartości popytu Wtedy wykres powinien się wygenerować poprawnie. W pierwszym poście tego tematu na samej górze jest wykresik, ten pomarańczowy Został wygenerowany dla danych: ------------------------- Ale jak widzisz Fixus zaproponował jakiś kod Ja też na początku coś próbowałem ale nic z tego nie wychodzi Jestem chyba po prostu tępy Musisz mieć dwie tablice o równej długości. Pierwsza przechowuje bowiem "nazwę kolumny", a druga "wartość kolumny" smile.gif Wystarczy tylko napisać zapytanie, które zwróci wynik. Potem w pętli wrzucisz je do dwóch tablic i podepniesz jako dane do owego wykresu. Jak dla mnie to troche skomplikowane Nic z tym nie wymodzę |
|
|
![]()
Post
#9
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
To pomyśl tak... Skoro moja tablica zwróci Ci to co potrzebujesz, ale niejako w jednym to można to rozwiązać na dwa sposoby... Albo robisz dwa razy to samo zapytanie i za każdym razem usuwasz z zapytania jedną z pozycji tuż po SELECT albo kombinujesz w inny sposób (IMG:style_emoticons/default/winksmiley.jpg)
Powiem Ci tylko, że choć ten drugi jest optymalniejszy, to nie ma aż tak wielkiej różnicy (IMG:style_emoticons/default/smile.gif) Dlaczego? Ano pokażę Ci dając gotowe zapytania: Zapytania do Rozwiązania nr1 (kasacja odpowiedniej kolumny):
Zapytania do Rozwiązania nr2 (przebudowa tak jak powinno to wyglądać):
Różnica to pozbycie się tak naprawdę tylko JOIN LEFT. Obie wersje bowiem zwrócą to samo. By mieć pewność, można jeszcze na wszelki wypadek do każdego z nich dać ORDER BY id_daty (IMG:style_emoticons/default/winksmiley.jpg) |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 41 Pomógł: 0 Dołączył: 26.08.2009 Skąd: Zamojsce Ostrzeżenie: (0%) ![]() ![]() |
Próbowałem ale nie chodzi
Pliki do generowania wykresu są tutaj ---->WYKRESY.RAR |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 295 Pomógł: 9 Dołączył: 8.02.2006 Ostrzeżenie: (0%) ![]() ![]() |
możesz opisać co Ci nie chodzi ?
nawet nie wiem co ci teraz doradzić (IMG:style_emoticons/default/tongue.gif) |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 41 Pomógł: 0 Dołączył: 26.08.2009 Skąd: Zamojsce Ostrzeżenie: (0%) ![]() ![]() |
damianprz
post Dzisiaj, 00:02 Post #6 Napisałem jakiego kodu użyłem, tzn tego co zaproponowałeś i napisałem że echo ładnie wygenerowało wszystkie dane tylko że wykres (jak na załączonym screenie) nadal jest zły ZArzuciłem te pliki co generują wykres w Wykres.rar dane.inc.php - tu należy podać dane i tylko ten plik sie edytuje index.php - a tu skrypt generuje wykres W pliku dane.inc.php należy w miejscu $nazwy = mysql_fetch_array($rezultat); $wartosci = mysql_fetch_array($rezultat2); zapodać 2 ciągi wyrażeń, w jednym daty a w drugim wartości popytów dla tych dat warunek jest taki że i $nazwy i $wartosci muszą mieć tyle samo pozycji |
|
|
![]()
Post
#13
|
|
Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
Dobrze mówiłem... Przyjmujesz jako parametry 2 tablice. W pierwszej zapodajesz label dla wykresu a w drugiej wartości. Problem masz w tym, że wywalasz do tych tablic pojedyncze wywołanie mysql_fetch_array co jest błędem. Musisz wypełnić wpierw całą tablicę wartości i dat zanim zwrócisz ją do wykresu.czyli
i dopiero po tym podawaj tablicę dat i wartości do wykresu jako parametry. Wykres jest prostym skryptem i nawet z GD nie korzysta. Zabezpieczenie pliku też jest mocno żartobliwe dla kogoś kto choć w podstawowej wersji zna PHP. Wystarczy tylko w konkretnym miejscu usunąć linijkę i zabezpieczenie "złamane". Błędem jaki robiłeś jest to, że mysql_fetch_* zwraca zawsze tylko jeden rekord z wyników, a nie wszystkie potrzebne, a skrypt wymaga wszystkich za jednym zamachem. Sam kiedyś zrobiłem identyczny skrypt koleżance, tyle że nie robił on wykresów, ale dane pobierał z zewnętrznego pliku i zapisywałem je w nim jako Array, który potem include'owałem. Ty i tak będziesz musiał jeszcze ten kod wyświetlający zaimplementować w swój kod. Tyle że przy Twojej wiedzy także z tym będziesz miał problem. Zamiast bowiem sam pomyśleć od razu lecisz z pytaniem na forum. Spróbuj wpierw sam rozgryźć. Jeśli nie wydumasz po dniu prób to może wtedy pytaj. Kompletnie nie rozumiesz bowiem php, co widać po tym temacie. Nie zerknąłeś nawet do pliku dane.inc.php, gdzie jak byk widać co jest potrzebne jako dane do wykresu i wystarczy tam tylko podmienić dane by zmienić wykres. Na razie to wygląda tak, że ja i ktoś z innego forum Ci dosłownie większość magisterki od strony kodu php zrobiłem. Dlatego zwracaj się z poważnymi problemami, a nie każdym jak leci bo nikt za Ciebie nie ma zamiaru jej zrobić. Także ja. Mogę pomagać do pewnego stopnia, ale póki co wygląda to tak, że rzucasz problem, czekasz na rozwiązanie, coś robisz (to się chwali akurat), ale jeśli przez pół godziny Ci nie idzie to lecisz zaraz z pytaniem tutaj. Czasem niepotrzebnie. Teraz zachciałeś mieć jeszcze wykres którego nie umiesz nawet danymi wypełnić w sposób prosty, choć wcale nie jest to trudne. |
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 41 Pomógł: 0 Dołączył: 26.08.2009 Skąd: Zamojsce Ostrzeżenie: (0%) ![]() ![]() |
Rozumiem Twoje zdenerwowanie, ale ja nie mam za bardzo już czasu, żeby myśleć po 3 dni nad 1 zagadnieniem. Jak widać mam nie za dużą wiedzę i pewnie z tego myślenia nie wiele by wynikło, a na studiowanie teraz książek z PHP nie mam czasu. Ogólnie mam taką sytuację, że późno pisze prace i bronie się we wrześniu ale nie swojej winy.
Cytat Nie zerknąłeś nawet do pliku dane.inc.php, gdzie jak byk widać co jest potrzebne jako dane do wykresu i wystarczy tam tylko podmienić dane by zmienić wykres. Jak nie zerknąłem jak cały czas pisałem że w tym pliku właśnie trzeba podmienić $wartosci i $nazwy na swoje. Cytat Ty i tak będziesz musiał jeszcze ten kod wyświetlający zaimplementować w swój kod. Tyle że przy Twojej wiedzy także z tym będziesz miał problem. Ale autor skryptu pozwolił z niego korzystać pod warunkiem że nie będzie usunięta wzmianka że to jego Wystarczy mi tylko teraz wygrenerować linki jak w przypadku przeglądu tabelarycznego dziennego popytu danego towaru
i następnie w pliku dan.inc.php
tę dwójkę zamienić na $_GET['id'] Cienki z PHP jestem, ale dzięki Tobie wiele się nauczyłem, szczególnie to polecenie
czy
zrobiły na mnie wrażenie bo bez żadnych pętli wykonują działania na tylu rekordach ile jest w tabeli. PHP miałem na studiach mało, a nie zdecydowałem się żeby dokształcić się na własną rękę. Tematyka mi się podoba i w związku z tym mam pytanie. Jak najszybciej nauczyć się "praktycznego" PHP, jakieś kursy w internecie może są? albo jakaś fajna książka? |
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 295 Pomógł: 9 Dołączył: 8.02.2006 Ostrzeżenie: (0%) ![]() ![]() |
po prostu wybieraj sobie zagadnienia które chcesz zaprogramować i zaprzyjaźnij się z google i dokumentacją. Tak jest chyba najlepiej.
Zresztą kursuów, snippetów itp itd w necie jest bardzo dużo. Wystarczy poszukać parę minut |
|
|
![]() ![]() |
![]() |
Aktualny czas: 14.09.2025 - 19:16 |