Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL] Łączenie rekordów
Forum PHP.pl > Forum > Przedszkole
Zmorcia
Witam mam taki mały problemik. mam baze danych a wniej uzytkowników, i chce sprawedzić czy nie mam multikont:

taka struktura:

id | login | haslo | ip

1 | test1 | haslo | 192.20.22.43
2 | test2 | haslo | 192.20.22.43
3 | test3 | haslo | 192.60.212.87
4 | test4 | haslo | 192.20.62.12

Widać pirwsze dwa rekordy to multi konto z jednego ip smile.gif

Jak zrobic aby kolorować te rekordy które są już multi:
np:

1 | test1 | haslo | 192.20.22.43
2 | test2 | haslo | 192.20.22.43
3 | test3 | haslo | 192.60.212.87
4 | test4 | haslo | 192.20.62.12

I każde multi konto na kolor czerwony smile.gif
krzyszbi
zobacz w manualu array_unique i notatki użytkowników link
zegarek84
stwóż wirtualna tabelkę - jeśli kożystasz z PDO to zapytanie dla przykładu:
$db->query("CREATE VIEW zestawienie as SELECT baza.ip as ip,count(*) as liczba FROM baza GROUP BY baza.ip")

i pobierając w jednym zapytaniu z bazy wraz z dodatkowym prametrem - liczba tych ip możesz sobie przypisać formatowanie zależne od tej liczby, dla przykładu:
echo '<tr bgcolor="'.($row['zestawienie.liczba']>1?'yellow':'white').............

no oczywiscie aby pobrać z bazy dodatkowy argument musisz sobie połączyć tabele z wirtualną podczas zapytania:
$db->query("SELECT baza.id,baza.login,baza.haslo,baza.ip,zestawienie.liczba FROM baza LEFT JOIN zestawienie ON baza.ip=zestawienie.ip")


no oczywiście wynik zapytania musisz sobie przetwożyć i wyswietlić zaleznie od parametru zestawienie.liczba



a jeśli chcesz wyświetlic po prostu powtarzające się rekordy z ip to wystarczy:


Kod
$db->query("SELECT baza.id,baza.login,baza.haslo,baza.ip, FROM baza WHERE baza.ip=(SELECT ip FROM baza GRUP BY ip HAVING COUNT(*)>1)")



pozdro
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.