Jump to content
naXe

Najwięcej wpisów z JSON w MySQL

Recommended Posts

W pewnej kolumnie zapisuje wynik w JSON:

{"Nick":"naXe","IP":"127.0.0.1"}

Chcę teraz pobrać rekord (Nick) z tych wpisów.
Nie wiem jak to napisać, więc może opiszę to łopatologicznie.

Chcę zrobić "Najwięcej wpisów ( Nick: ilość)".

Ilość to sobie obliczę poprzez COUNT(), ale żeby to zrobić muszę pobrać z JSON wartość z klucza Nick.


www.topfrags.pl  | www.gs-dev.pl

Share this post


Link to post
Share on other sites

masz na myśli:

foreach(json_decode('{"Nick":"naXe","IP":"127.0.0.1"}', TRUE) as $row)
{
	// dalszy kod
}

możesz coś dalej napisać, bo do zmienna $row będzie w postaci tablicy array:

$row = [
	0 => [
		'Nick' => 'naXe',
		'IP' => '127.0.0.1'
	]
	...
];

czyli to  i tak mi na razie w niczym nie pomaga :) 

Edited by naXe

www.topfrags.pl  | www.gs-dev.pl

Share this post


Link to post
Share on other sites
$result = array();

foreach(json_decode('{"Nick":"naXe","IP":"127.0.0.1"}', TRUE) as $row)
{
	if( !isset( $result[ $row[ 'Nick' ] ] ) ) 
    {
    	$result[ $row[ 'Nick' ] ] = 0;
    }

	$result[ $row[ 'Nick' ] ]++;
}

Później robisz flipa i sortujesz po kluczach a następnie pobierasz element z końca lub z początku tablicy w zależności czy sortujesz rosnąco czy malejąco

  • Like 1

Share this post


Link to post
Share on other sites

Ok działa, ale jak w następnym wpisie w tej kolumnie zamiast naXe będzie np. naXe2 to będzie się zwiększać jeden licznik, jak zrobić, aby każdy "Nick" miał własny licznik?


www.topfrags.pl  | www.gs-dev.pl

Share this post


Link to post
Share on other sites

każdy ma swój. przecież masz tam, że kluczem w tabeli jest wartość klucza Nick, czyli w tym wypadku naXe. Jak będzie kowalski później to on też będzie miał swój wpis

Share this post


Link to post
Share on other sites

Taki mam wynik

Array
(
    [n] => 1
    [1] => 1
)

bez użycia array_flip i sortowania


www.topfrags.pl  | www.gs-dev.pl

Share this post


Link to post
Share on other sites
Array
(
    [Nick] => 'naXe'
    [IP] => '127.0.0.1'
)

 


www.topfrags.pl  | www.gs-dev.pl

Share this post


Link to post
Share on other sites

json_decode


www.topfrags.pl  | www.gs-dev.pl

Share this post


Link to post
Share on other sites

no to źle. bo to uniemożliwia dodanie kolejnych rekordów, json_decode powinien zwrócić

Array (
  Array
  (
    [Nick] => 'naXe'
    [IP] => '127.0.0.1'
  )
  Array
  (
    [Nick] => 'naXe'
    [IP] => '127.0.0.1'
  )
)

 

  • Like 1

Share this post


Link to post
Share on other sites

A widzisz, zmieniłem i od razu są wyniki takie jakie powinny być ;)

Array
(
    [naXe] => 5
    [naXe2] => 3
)

 


www.topfrags.pl  | www.gs-dev.pl

Share this post


Link to post
Share on other sites

Rozwiązane.


www.topfrags.pl  | www.gs-dev.pl

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...

Important Information

W celu świadczenie usług przez nasz Serwis na najwyższym poziomie, w ramach Serwisu wykorzystujemy pliki Cookies (tzw. ciasteczka). Korzystając ze stron Serwisu IPSBEYOND.PL bez zmiany ustawień przeglądarki będą one zapisane w pamięci urządzenia. Jeżeli nie dokonacie Państwo zmiany ustawień przeglądarki internetowej to wyrażacie zgodę na zapisywanie plików Cookies.