probleempje met koppelen van tabellen in db
Ik heb nu geprobeerd om daaraan een tabel 'uips' te koppelen, zodat die de ip's die we kennen, een naam kan aan geven.
de code ziet er zo uit:
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
<?
$sql = "SELECT * FROM uhits";
$res = mysql_query ($sql) or die (mysql_error ());
if (mysql_num_rows ($res) >= 1){
while ($row = mysql_fetch_array ($res)){
echo '<tr><td width="100">'.$row['ip'].'</td><td width="400">'.$row['fullhost'].'</td><td width="100">'.$row['date'].'</td>';
$fullhost = $row['fullhost'];
$sql = "SELECT * FROM uips WHERE fullhost = '$fullhost'";
$res = mysql_query ($sql) or die (mysql_error ());
if (mysql_num_rows ($res) >= 1){
while ($row = mysql_fetch_array ($res)){
echo '<td width="50">Aka</td><td width="100">'.$row['person'].'</td></tr>';
}} else {
echo '<td width="50"></td><td width="100">Unkown person</td></tr>';
}
}}
echo'</table>';
?>
$sql = "SELECT * FROM uhits";
$res = mysql_query ($sql) or die (mysql_error ());
if (mysql_num_rows ($res) >= 1){
while ($row = mysql_fetch_array ($res)){
echo '<tr><td width="100">'.$row['ip'].'</td><td width="400">'.$row['fullhost'].'</td><td width="100">'.$row['date'].'</td>';
$fullhost = $row['fullhost'];
$sql = "SELECT * FROM uips WHERE fullhost = '$fullhost'";
$res = mysql_query ($sql) or die (mysql_error ());
if (mysql_num_rows ($res) >= 1){
while ($row = mysql_fetch_array ($res)){
echo '<td width="50">Aka</td><td width="100">'.$row['person'].'</td></tr>';
}} else {
echo '<td width="50"></td><td width="100">Unkown person</td></tr>';
}
}}
echo'</table>';
?>
Als ik dit doe, dan geeft hij enkel het eerste record van de table 'uhits'. Als ik dan dat stuk van 'uips' eruit laat, geeft ie alle unieke hits.
Wat is hier fout aan?
Gewijzigd op 01/01/1970 01:00:00 door Jens V
En zo ja, waarom doe je geen joint?
Zeg maar zoiets als:
Code (php)
1
2
3
2
3
<?php
$query = "SELECT * FROM uhits LEFT JOIN uips ON uhits.fullhost = uips.fullhost";
?>
$query = "SELECT * FROM uhits LEFT JOIN uips ON uhits.fullhost = uips.fullhost";
?>
Als de kolom person dan NULL is het een "Unknown Person"
omdat ik niet wist hoe ;)
Ik heb je scriptje even omgebouwd, volgens mij moet het zo werken:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?
echo "<table>";
$sql = "SELECT * FROM uhits LEFT JOIN uips ON uhits.fullhost = uips.fullhost ";
$res = mysql_query ($sql) or die (mysql_error());
if (mysql_num_rows ($res) >= 1) {
while ($row = mysql_fetch_array($res)) {
echo "<tr><td width='100'>" . $row["ip" . "</td><td width='400'>" . $row["fullhost"] . "</td><td width='100'>" . $row["date"] . "</td>";
if ($row["person"] == "") {
echo "<td width='50'> </td><td width='100'>Unknown person</td></tr>";
} else {
echo "<td width='50'>AKA</td><td width='100'>" . $row["person"] . "</td></tr>";
}
}
}
echo "</table>";
?>
echo "<table>";
$sql = "SELECT * FROM uhits LEFT JOIN uips ON uhits.fullhost = uips.fullhost ";
$res = mysql_query ($sql) or die (mysql_error());
if (mysql_num_rows ($res) >= 1) {
while ($row = mysql_fetch_array($res)) {
echo "<tr><td width='100'>" . $row["ip" . "</td><td width='400'>" . $row["fullhost"] . "</td><td width='100'>" . $row["date"] . "</td>";
if ($row["person"] == "") {
echo "<td width='50'> </td><td width='100'>Unknown person</td></tr>";
} else {
echo "<td width='50'>AKA</td><td width='100'>" . $row["person"] . "</td></tr>";
}
}
}
echo "</table>";
?>
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
<?
$sql = "SELECT * FROM uhits";
$res = mysql_query ($sql) or die (mysql_error ());
if (mysql_num_rows ($res) >= 1){
while ($row = mysql_fetch_array ($res)){
echo '<tr><td width="100">'.$row['ip'].'</td><td width="400">'.$row['fullhost'].'</font></td><td width="100">'.$row['date'].'</font></td>';
$fullhost = $row['fullhost'];
$sql = "SELECT * FROM uhits LEFT JOIN uips ON uhits.fullhost = uips.fullhost";
$res = mysql_query ($sql) or die (mysql_error ());
if (mysql_num_rows ($res) >= 1){
while ($row = mysql_fetch_array ($res)){
echo '<td width="50">Aka</font></td><td width="100">'.$row['person'].'</font></td></tr>';
}} else {
echo '<td width="50"></td><td width="100">Unkown person</font></td></tr>';
}
}}
?>
$sql = "SELECT * FROM uhits";
$res = mysql_query ($sql) or die (mysql_error ());
if (mysql_num_rows ($res) >= 1){
while ($row = mysql_fetch_array ($res)){
echo '<tr><td width="100">'.$row['ip'].'</td><td width="400">'.$row['fullhost'].'</font></td><td width="100">'.$row['date'].'</font></td>';
$fullhost = $row['fullhost'];
$sql = "SELECT * FROM uhits LEFT JOIN uips ON uhits.fullhost = uips.fullhost";
$res = mysql_query ($sql) or die (mysql_error ());
if (mysql_num_rows ($res) >= 1){
while ($row = mysql_fetch_array ($res)){
echo '<td width="50">Aka</font></td><td width="100">'.$row['person'].'</font></td></tr>';
}} else {
echo '<td width="50"></td><td width="100">Unkown person</font></td></tr>';
}
}}
?>
ik denk van iet, want nu geeft ie de ip's en fullhost's van het eerste uhits record, daarbij de 'person' kolom van het overeenstemmende record, en de rest van die uips geeft ie ook, maar van de 3 andere records uit uhits geeft ie niets...
vb:
ip1 fullhost1 2006-09-20 Aka mijnnaam
Aka
Aka
Aka nog een naam
ah, thx :)
succes ermee ;-)
als de fullhost niet in de uips db staat, dus een unkown person geeft, dat weergeeft hij de fullhost niet...
wat nu?
Probeer altijd zoveel mogelijk te specificeren wat je wilt selecteren in een query...
In een normale query kun je dat doen door SELECT kolom1, kolom2 FROM... enz...
Als je meerdere tabellen gebruikt moet je de tabelnaam ook toevoegen.
In jouw script wordt het zoiets:
Code (php)
1
2
3
2
3
<?
$sql = "SELECT uhits.ip, uhits.date, uhits.fullhost, uips.person FROM uhits LEFT JOIN uips ON uhits.fullhost = uips.fullhost ";
?>
$sql = "SELECT uhits.ip, uhits.date, uhits.fullhost, uips.person FROM uhits LEFT JOIN uips ON uhits.fullhost = uips.fullhost ";
?>
??
Gewijzigd op 01/01/1970 01:00:00 door Jens V
nog eens bedankt ;)