Skocz do zawartości
naXe

Najwięcej wpisów z JSON w MySQL

Polecane posty

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.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

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 :) 

Edytowano przez naXe

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
$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

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

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?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

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

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Taki mam wynik

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

bez użycia array_flip i sortowania

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

pytanie jak wygląda tablica po zdekodowaniu jsona

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

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

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

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

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

 

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość
Temat jest zablokowany i nie można w nim pisać.

  • Kto przegląda   0 użytkowników

    Brak zalogowanych użytkowników przeglądających tę stronę.

×

Ważne informacje

Kontynuując przeglądanie strony, wyrażasz zgodę na używanie przez nas plików cookies.