Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP] Jak pobrać ostatni wynik z wykresu, Problem z zapytaniem
Lucas88PL
post 5.11.2016, 00:11:17
Post #1





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 17.12.2014

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


Witam

Na wstępie chciałbym dodać, że do orłów w php i mysql nie należę.
Głowię się nad tym problemem już drugi dzień i nadal nie mogę sobie z tym poradzić. Posiadam na stronie statystyki z ostatnich 7 dni które generują się za pomocą wykresu. Potrzebuję użyć odpowiedniego zapytania aby pokazać tylko ilość odwiedzić z ostatniego dnia ale nie na wykresie. Baza wygląda tak:


Aktualnie wyświetla mi się po zapytaniu wszystkie 7 dni czyli: data: [98, 114, 119, 86, 97, 0] a chcę uzyskać aby wyświetliło ten ostatni dzień (zaznaczone strzałką) czyli w tym wypadku będzie: data: [0]
Go to the top of the page
+Quote Post
SmokAnalog
post 5.11.2016, 00:15:10
Post #2





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

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


Przechowujesz dane w takim dziwnym formacie? Najlepsze, co możesz zrobić to przerobić bazę tak, żeby każdy dzień był osobnym rekordem.
Go to the top of the page
+Quote Post
KsaR
post 5.11.2016, 07:47:13
Post #3





Grupa: Zarejestrowani
Postów: 520
Pomógł: 102
Dołączył: 15.07.2014
Skąd: NULL

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


  1. SELECT TRIM(TRAILING ']' FROM SUBSTRING_INDEX(`uniqie_ips`, ',', -1)) `last`
  2. FROM `tabela`;

Musisz zmienić nazwę tabelki.
Jeśli nie działa (a powinno) to:

1. Jak SmokAnalog pisał.

Lub

2. Zajrzyj do manuala:
trim()
substring_index()

Ten post edytował KsaR 5.11.2016, 07:47:46


--------------------
Go to the top of the page
+Quote Post
SmokAnalog
post 5.11.2016, 09:50:56
Post #4





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

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


KsaR moim zdaniem lepiej nie odpowiadać na takie pytania, bo gość na 99% ma źle zaprojektowaną bazę. Potrafię sobie wyobrazić use case dla takiego formatu, ale w tym przypadku to po prostu niewiedza. Zamiast odpowiadać jak coś zrobić (żeby było) lepiej najpierw się zastanowić czy na pewno chcemy to robić.
Go to the top of the page
+Quote Post
KsaR
post 5.11.2016, 09:55:14
Post #5





Grupa: Zarejestrowani
Postów: 520
Pomógł: 102
Dołączył: 15.07.2014
Skąd: NULL

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


SmokAnalog, no ja to rozumiem podałem rozwiązanie na "póki co"
Bo z czasem sam zobaczy, że coś nie tak. (Pewnie)
I wtedy sobie zmieni strukturę.
"Albo, albo" bo to jego wybór, czy sobie z czasem ułatwi czy nie
__
Takie inne rozwiązanie to jeszcze by mogło być, MySQL 5.7+,
Bez 'data: ' i z użyciem json, dostępnego od MySQL 5.7.

Ten post edytował KsaR 5.11.2016, 09:58:59


--------------------
Go to the top of the page
+Quote Post
SmokAnalog
post 5.11.2016, 09:59:17
Post #6





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

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


Problem w tym, że w taki sposób wbija się komuś złe nawyki, czyli robienie tak, żeby działało. Etap projektowania kodu najlepiej ogarnąć już na początku nauki. Ubolewam nad tym, że tak wiele odpowiedzi na forach pomija ten aspekt i po prostu odpowiadają bez zastanowienia.

Pytanie: Dostałem w prezencie sztylet. Jak pogłaskać nim kota?
Zła odpowiedź: Spróbuj bokiem (sztyletu, nie kota).
Dobra odpowiedź: Nie głaszcz kota sztyletem.
Go to the top of the page
+Quote Post
KsaR
post 5.11.2016, 10:14:46
Post #7





Grupa: Zarejestrowani
Postów: 520
Pomógł: 102
Dołączył: 15.07.2014
Skąd: NULL

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


Ja jestem zdania że
Cytat
jak sobie pościeli, tak się wyśpi


Ty już napisałeś że ma krzywe łóżko, i lepiej je zmienić. I tu +
Ja dałem prześcieradło na 'póki co', nikogo nie zmuszam żeby coś użył ani nic.
-- choć teraz ma mniej więcej kilka odpowiedzi, na przemyślenie tongue.gif


--------------------
Go to the top of the page
+Quote Post
viking
post 5.11.2016, 10:24:24
Post #8





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

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


Pewnego poziomu wiedzy nie przeskoczysz i po prostu przychodzi on z czasem. Lepiej robić coś nawet na początku źle, niż nie robić nic. Tutaj raczej wygląda że powinien to być JSON, nawet w kolumnie tekstowej (ach te możliwości mysql), obrabiany po stronie PHP.


--------------------
Go to the top of the page
+Quote Post
SmokAnalog
post 5.11.2016, 10:44:24
Post #9





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

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


viking co się czepiasz, przecież jest już obsługa JSON-a w MySQL - XXI wiek zawitał i tam tongue.gif
Go to the top of the page
+Quote Post
viking
post 5.11.2016, 10:47:16
Post #10





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

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


Tylko jakby jeszcze zawitał u większości hostingodawców wink.gif
Zresztą jak porównasz możliwości pracy na typie json do Postgresa to w mysql równie dobrze mogło by go nie być.

Ten post edytował viking 5.11.2016, 10:51:45


--------------------
Go to the top of the page
+Quote Post
Lucas88PL
post 5.11.2016, 17:57:44
Post #11





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 17.12.2014

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


Cytat(SmokAnalog @ 5.11.2016, 09:50:56 ) *
KsaR moim zdaniem lepiej nie odpowiadać na takie pytania, bo gość na 99% ma źle zaprojektowaną bazę. Potrafię sobie wyobrazić use case dla takiego formatu, ale w tym przypadku to po prostu niewiedza. Zamiast odpowiadać jak coś zrobić (żeby było) lepiej najpierw się zastanowić czy na pewno chcemy to robić.


Tak w tym przypadku niewiedza dlatego zakładam temat w takim dziale jak "Przedszkole". Jak wyżej też wspomniałem "Orłem nie jestem" ale pomijając to, że się nie znam wykres generuje się normalnie z tej bazy więc wygląda na to że jest dobra baza do generowania. Zdaję sobie też sprawę, że to co chcę uzyskać baza jest zła. Dodam, że jest to skrypt master boost zapewne będziecie wiedzieć o co chodzi są tam statystki za pomocą wykresu Highcharts z ostatnich 7 dni gdzie, przypomnę chcę aby w osobnym miejscu wyświetlało ten ostatni dzień czyli "dzisiaj".
Teraz to co podał KsaR

Cytat(KsaR @ 5.11.2016, 07:47:13 ) *
  1. SELECT TRIM(TRAILING ']' FROM SUBSTRING_INDEX(`uniqie_ips`, ',', -1)) `last`
  2. FROM `tabela`;

Musisz zmienić nazwę tabelki.
Jeśli nie działa (a powinno) to:


Nie wyświetla się teraz nic, puste pole. Wszystko wygląda tak:

  1. <?php
  2. $res = mysql_query ("SELECT TRIM(TRAILING']' FROM SUBSTRING_INDEX(`uniqie_ips`, ',', -1)) `last` FROM `settings`") OR die(mysql_error());
  3. $row = mysql_fetch_assoc($res);
  4. echo $row['uniqie_ips'];
  5. ?>
  6.  


Go to the top of the page
+Quote Post
SmokAnalog
post 5.11.2016, 18:36:10
Post #12





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

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


Nie chciałem Ci wypominać, tylko mówię, że lepiej od razu zrobić to jak należy. Chce Ci się poprawić strukturę bazy czy wolisz żeby działało tak jak jest?
Go to the top of the page
+Quote Post
Lucas88PL
post 5.11.2016, 20:17:53
Post #13





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 17.12.2014

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


Ok rozumiem zle to odebrałem.
Boję się tylko jak zmienimy bazę to inne problemy wystąpią których będę musiał szukać. Lepiej może zrobić to w taki sposób jak jest tylko dac odpowiednie zapytanie.
Go to the top of the page
+Quote Post
SmokAnalog
post 5.11.2016, 20:33:43
Post #14





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

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


Zapytanie, które podał Ci KsaR jest prawidłowe.
Go to the top of the page
+Quote Post
Lucas88PL
post 5.11.2016, 22:14:13
Post #15





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 17.12.2014

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


Jeżeli jest prawidłowe tzn, że jednak trzeba zmienić bazę bo teraz się nic nie wyświetla jak pisałem wyżej..
Go to the top of the page
+Quote Post
trueblue
post 5.11.2016, 22:23:46
Post #16





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

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


Wynik jest w $row['last'], nie w $row['uniqie_ips'].

Ten post edytował trueblue 5.11.2016, 22:24:01


--------------------
Go to the top of the page
+Quote Post
Lucas88PL
post 5.11.2016, 22:47:12
Post #17





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 17.12.2014

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


Właśnie to obczaiłem. Dzięki wszystkim za pomoc smile.gif
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 Wersja Lo-Fi Aktualny czas: 19.04.2024 - 16:08