probleempje met koppelen van tabellen in db

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jens V

Jens V

23/09/2006 13:31:00
Quote Anchor link
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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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>';
?>


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
 
PHP hulp

PHP hulp

18/11/2024 09:32:02
 
Rens nvt

Rens nvt

23/09/2006 13:40:00
Quote Anchor link
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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$query
= "SELECT * FROM uhits LEFT JOIN uips ON uhits.fullhost = uips.fullhost";
?>


Als de kolom person dan NULL is het een "Unknown Person"
 
Jens V

Jens V

23/09/2006 13:41:00
Quote Anchor link
omdat ik niet wist hoe ;)
 
Rens nvt

Rens nvt

23/09/2006 13:45:00
Quote Anchor link
hehehe ;-) dat is een hele goeie reden ;-)

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

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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'>&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>";
?>
 
Jens V

Jens V

23/09/2006 13:47:00
Quote Anchor link
is zoiets als dit juist?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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>';
  }
}}

?>


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
 
Jens V

Jens V

23/09/2006 13:47:00
Quote Anchor link
ah, thx :)
 
Rens nvt

Rens nvt

23/09/2006 13:56:00
Quote Anchor link
succes ermee ;-)
 
Jens V

Jens V

23/09/2006 14:16:00
Quote Anchor link
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?
 
Rens nvt

Rens nvt

23/09/2006 15:06:00
Quote Anchor link
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:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
  $query
= "SELECT uhits.ip, uhits.date, uhits.fullhost, uips.person FROM rest van de query";
?>
 
Jens V

Jens V

23/09/2006 15:08:00
Quote Anchor link
dus
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?
$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
 
Jens V

Jens V

23/09/2006 15:09:00
Quote Anchor link
oki, dat werkt,
nog eens bedankt ;)
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.