Ik heb een countertje gemaakt dat unieke hits registreerd. De ip's en fullhosts van die unieke hits worden in een tabel 'uhits' opgeslaan.
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:
<?
$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?
Probeer je nu uit 2 tabellen gegevens op te halen, en die weer te geven als hits op de pagina?

En zo ja, waarom doe je geen joint?

Zeg maar zoiets als:
<?php
$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 ;)
hehehe ;-) dat is een hele goeie reden ;-)

Ik heb je scriptje even omgebouwd, volgens mij moet het zo werken:

<?
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'>&nbsp;</td><td width='100'>Unknown person</td></tr>";
} else {
echo "<td width='50'>AKA</td><td width='100'>" . $row["person"] . "</td></tr>";
}
}
}
echo "</table>";
?>
is zoiets als dit juist?

<?
$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 ;-)
er zit nog altijd een miniem foutje in:
als de fullhost niet in de uips db staat, dus een unkown person geeft, dat weergeeft hij de fullhost niet...
wat nu?
Dit komt doordat je alles selecteert uit beide tabellen (SELECT * FROM)... In de uips tabel bestaat de fullhost waarde niet, en dus geeft hij hem niet weer...

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:

<?php
$query = "SELECT uhits.ip, uhits.date, uhits.fullhost, uips.person FROM rest van de query";
?>
dus
<?
$sql = "SELECT uhits.ip, uhits.date, uhits.fullhost, uips.person FROM uhits LEFT JOIN uips ON uhits.fullhost = uips.fullhost ";
?>

??
oki, dat werkt,
nog eens bedankt ;)

Reageren