PHP MYSQL wyświetlenie multikont o takim samym IP

PHP MYSQL wyświetlenie multikont o takim samym IP
Marcin Koźlik
  • Rejestracja:około 7 lat
  • Ostatnio:prawie 7 lat
  • Postów:9
0

Hej,
bardzo proszę doświadczonych kolegów o pomoc :)

Mam bazę danych mysql z tabelą o nazwie users - w niej mam oprócz oczywistych kolumn jak login, haslo, email - kolumnę IP - i teraz chciałbym sobie na swojej stronie wyrzucić wszystkie konta o takim samym ip, aby dowiedzieć się czy są konta logujące się z tego samego.

Załóżmy, że mam konta:

Kopiuj
LOGIN, IP
Janek 10.0.0.20
Beata 50.50.50.50
Ela 10.0.0.20
Julka 10.0.0.0
Kamil 50.50.50.50
Agnieszka 5.5.6.20

Więc chciałbym, żeby echo wyrzuciło mi:

Kopiuj
Janek 10.0.0.20
Ela 10.0.0.20
Beata 50.50.50.50
Kamil 50.50.50.50

Za Chiny nie potrafię sobie tego wyrzucić selectem...
Liczę na Was panowie :)

Pozdrawiam.

edytowany 2x, ostatnio: Marcin Koźlik
axelbest
  • Rejestracja:ponad 17 lat
  • Ostatnio:42 minuty
  • Lokalizacja:Warszawa
  • Postów:2252
1

Możesz np zrobić podzapytanie w którym otrzymasz ilość wystąpien danego IP czyli korzystasz z funkcji count i grupowania po kolumnie IP. Dzięki temu otrzymasz wyniki np
10.0.0.1 | 1
10.0.0.20 | 2
Potem dorzucasz warunek do tego grupowania (zobacz jak to się robi w przypadku pogrupowanych wyników) w którym określisz że ilość wystąpien musi być większa niż 1.

Tak skonstruowane zapytanie wykorzystujesz jako podzapytanie już we właściwym zapytaniu i voila masz wyniki.

Marcin Koźlik
  • Rejestracja:około 7 lat
  • Ostatnio:prawie 7 lat
  • Postów:9
0

Wiem, że wyjdę w tym momencie na nooba..
Ale przerobiłem od wczoraj tyle tych zapytań.. z countami i bez posiłkując się wujkiem google...
Na prawdę poświęciłem z 4 godziny bez skutku i dlatego postanowiłem poprosić o pomoc tutaj..
Czy mogę liczyć na gotowca?
Będę mega wdzięczny

@Patryk27 - zbyt wiele tego było, żeby przytaczać..
Najlepszym wynikiem było coś w rodzaju:
1Janek

gdzie 1 to num_rows...
Wyskakiwał 1 wynik i to wgl fartem..
Mega zależy mi, żeby to dzisiaj pokonać : p

edytowany 1x, ostatnio: Marcin Koźlik
Patryk27
Pokaz jak próbowałeś, pomożemy :-)
Marcin Koźlik
  • Rejestracja:około 7 lat
  • Ostatnio:prawie 7 lat
  • Postów:9
0

Hej,
mogę liczyć na Waszą pomoc? :)

axelbest
Pokaż swoje zapytania, jakimi próbowałeś tego dokonać (tylko pamiętaj o umieszczeniu kodu w odpowiednich tagach markdowna)
Marcin Koźlik
  • Rejestracja:około 7 lat
  • Ostatnio:prawie 7 lat
  • Postów:9
0
Kopiuj
		$mc = $polaczenie->query("SELECT * FROM users WHERE ip IN (SELECT * FROM users WHERE ip)");
		if ($mc->num_rows > 0){
			while($mcc = $mc->fetch_assoc()){
				echo $mcc['login'];
			}
		}else{
			echo"Nie ma żadnych MC";
		}

I oczywiście to nie działa :/

edytowany 1x, ostatnio: Marcin Koźlik
axelbest
  • Rejestracja:ponad 17 lat
  • Ostatnio:42 minuty
  • Lokalizacja:Warszawa
  • Postów:2252
0

A widzisz chociaż jakie masz tam zapytanie i jaki ma ono sens? Wychodzi na to ze nie znasz SQL - wiec poszukaj informacji o funkcjach agregujacych, o grupowaniu i zapytaniach skorelowanych. Ogólnie temat wygląda mi na początek semestru i pierwsze zajęcia z baz danych.

Marcin Koźlik
  • Rejestracja:około 7 lat
  • Ostatnio:prawie 7 lat
  • Postów:9
0

Kolego, naprawde nie napisalem tutaj po to zebys mnie utwierdzal w tym, ze jestem cienki bolek, bo to wiem..
Napisalem tutaj, zeby skorzystac z Waszego doswiadczenia i checi pomocy, bo zapewne jest tu jakis wyjadacz, ktory nie bedzie sie na mnie wyzywal tylko napisze mi w minute gotowe zapytanie.

edytowany 1x, ostatnio: Marcin Koźlik
Marcin.Miga
  • Rejestracja:prawie 17 lat
  • Ostatnio:8 dni
  • Postów:2792
1

Więc nie przyszedłeś po pomoc, ale po gotowca. Ale lepiej bylody zamiast się wkurzać przeczytać to co napisał @axelbest w pierwszej odpowiedzi i spróbować zastosować...

PA
  • Rejestracja:ponad 22 lata
  • Ostatnio:około 4 godziny
  • Postów:3876
1

Mam dzisiaj dobry nastrój to dam Ci tego gotowca:

Wersja @axelbest

Kopiuj
select
    *
from 
    u
where 
ip in (select  
             ip
        from
             u
        group by
            ip
        having
           count(*) > 1)

Lub trochę inna:

Kopiuj
select
    ip
    ,count(*) ile_loginow
    ,group_concat(login separator ', ') Loginy
from
   u
group by
    ip
having
     count(*) > 1;

http://sqlfiddle.com/#!9/b3d540/3

Marcin Koźlik
  • Rejestracja:około 7 lat
  • Ostatnio:prawie 7 lat
  • Postów:9
0

Hej,
zacząłem od wypróbowania/obrobienia kodu nr 2, ale wyświetlił pustkę.
Za to kod nr 1 po odpowiednim obrobieniu dał mi wynik, którego oczekiwałem :).
Temat do zamknięcia, a Tobie @Panczo serdecznie dziękuję za pomoc.

Pozdrawiam, MK.

PA
Nie wiem co zmieniłeś ale powinno działać, ewentualnie dał na fiddle próbkę danych bo to nie powinno sprawiać problemów
YO
  • Rejestracja:ponad 11 lat
  • Ostatnio:prawie 3 lata
  • Postów:540
0

Nie mam nic mądrego do powiedzenia poza jednym:

Zbliżone IP, czy takie same nie oznaczają, że to jest ten sam użytkownik.
Przemyśl to , nim zaczniesz bezmyślnie banować.


Dziura w ścianie gdzie Panowie widzą Panie,
Rick and Morty, season 1.
Szukam tej dziury, jak coś dajcie znać gdzie jest :D "A z Ciebie c**** pisowski" - Ula Papuszko (w sensie, że JA) 05.06.2020 r., grupa: Strajk Przedsiębiorców. Witam zatem, jestem c**** pisowski ;)
Marcin Koźlik
  • Rejestracja:około 7 lat
  • Ostatnio:prawie 7 lat
  • Postów:9
0

Hej, dzieki za info..
To narzedzie ma sluzyc zwroceniu uwagi na poszczegolne konta, a nie autoban :)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.