rijen in geheugen :s
Ik ben hier een best ingewikkeld script aan het maken (denk ik, want ik kom er niet uit :P) Het is een script om te kijken of er meerdere gebruikers op hetzelfde IP in de databse staan, dus eigenlijk meerdere accounts op één IP. Met het volgende script check ik dit na:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
$query0 = "SELECT * FROM `leden`";
$selecteren = mysql_query($query0) or die ( mysql_error( ) );
while ($lijst = mysql_fetch_object($selecteren)) {
$query01 = "SELECT * FROM `leden` WHERE `ip` = '".$lijst->ip."'";
$selecter = mysql_query($query01) or die ( mysql_error( ) );
if (mysql_num_rows($selecter) != 1) {
while ($kat = mysql_fetch_object($selecter)) {
echo $kat->username." -ip- <b>".$lijst->ip."</b><br><br>";
}
echo "<hr>";
}
}
?>
$query0 = "SELECT * FROM `leden`";
$selecteren = mysql_query($query0) or die ( mysql_error( ) );
while ($lijst = mysql_fetch_object($selecteren)) {
$query01 = "SELECT * FROM `leden` WHERE `ip` = '".$lijst->ip."'";
$selecter = mysql_query($query01) or die ( mysql_error( ) );
if (mysql_num_rows($selecter) != 1) {
while ($kat = mysql_fetch_object($selecter)) {
echo $kat->username." -ip- <b>".$lijst->ip."</b><br><br>";
}
echo "<hr>";
}
}
?>
In princiepe werkt dit goed. Ik krijg keurig een lijst met gebruikers die met dezelfde IP's in de lijst staan. Als voorbeeld krijg ik het volgende:
Piet -ip- 86.212.293.219
Peter -ip- 86.212.293.219
Pieter -ip- 86.212.293.219
--------------------------------------------
--------------------------------------------
Jan -ip- 96.272.222.211
Janus -ip- 96.272.222.211
Job -ip- 96.272.222.211
Die informatie klopt. Alleen, nu heb ik als probleem, dat elk rijtje 3 keer voorkomt, omdat hij na het IP van Jan gecheckt te hebben, ook het ip van Janus checkt, en dan zegt hij weer dat ze alledrie hetzelfde IP hebben. Dat klopt ook wel, maar dat wil ik niet :P.
Ik wil dat hij de gebruikers die al gecheckt zijn, niet nog eens gecheck worden. Kan dit door bijvoorbeeld een array te maken en daarnaa met een if te kijken of hij erin staat o.i.d?
Bedankt alvast, SAplayer
FROM leden
group by ip
order by ip
geeft het aantal users per ip
Tip: Gebruik in je queries nooit backtics `, die zijn echt niet nodig. Andere databases accepteren deze niet, je leert jezelf een SQL-dialect aan waar deze databases niet mee kunnen werken.
SELECT ip, username
FROM leden
ORDER BY ip ASC, username ASC
doen en dan in de while zoiets:
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<?php
$vorige_ip = '';
while ($row = mysql_fetch_assoc ($res)) {
if ($vorige != $row['ip']) {
// ip echoën
$vorige_ip = $row['ip'];
}
// naam echoën
}
?>
$vorige_ip = '';
while ($row = mysql_fetch_assoc ($res)) {
if ($vorige != $row['ip']) {
// ip echoën
$vorige_ip = $row['ip'];
}
// naam echoën
}
?>
zodat je per ip nummer keurig een of meer usernames eronder krijgt.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
$query0 = "SELECT ip, username FROM leden ORDER BY ip ASC, username ASC";
$selecteren = mysql_query($query0) or die ( mysql_error( ) );
while ($lijst = mysql_fetch_object($selecteren)) {
$query01 = "SELECT * FROM `leden` WHERE `ip` = '".$lijst->ip."'";
$selecter = mysql_query($query01) or die ( mysql_error( ) );
$vorige_ip = '';
while ($row = mysql_fetch_assoc ($selecter)) {
if ($vorige != $row['ip']) {
echo $row['ip']."<br>";
$vorige_ip = $row['ip'];
}
echo $row['username'];
}
}
?>
$query0 = "SELECT ip, username FROM leden ORDER BY ip ASC, username ASC";
$selecteren = mysql_query($query0) or die ( mysql_error( ) );
while ($lijst = mysql_fetch_object($selecteren)) {
$query01 = "SELECT * FROM `leden` WHERE `ip` = '".$lijst->ip."'";
$selecter = mysql_query($query01) or die ( mysql_error( ) );
$vorige_ip = '';
while ($row = mysql_fetch_assoc ($selecter)) {
if ($vorige != $row['ip']) {
echo $row['ip']."<br>";
$vorige_ip = $row['ip'];
}
echo $row['username'];
}
}
?>
Dan komen de gebruikersnamen wel keurig onder elkaar te staan, maar ze komen er nogsteeds 2 of meer keer in voor :s
In mijn voorbeeld ga ik er van uit dat elke gebruikersnaam maar 1 keer voorkomt in je db. Is dat ook zo?
ja, dat is ook zo, maar als hij een ip tegenkomt, wat er meerdere keren instaat, laat hij zien welke gebruikers dat IP hebben, maar dan laat hij ze dus meerdere keren zien, want hij ziet dat Jan hetzelfde IP heeft als Janus, en hij ziet dat Janus hetzelfde IP heeft als Jan, dus laat hij het 2x zien, terwijl ik het maar 1x wil zien..
Code (php)
1
2
3
2
3
<?php
$arr = array("a", "b"); //de a en b als opvulling, weet niet of hij een lege array pakt
?>
$arr = array("a", "b"); //de a en b als opvulling, weet niet of hij een lege array pakt
?>
en dan elke keer als hij een gebruikersnaam tegenkomt:
Hiermee werkt het ;)
Gewijzigd op 01/01/1970 01:00:00 door Sam