извличане от 2 таблици

taneca

Registered
Не мога точно да се изразя и дано ме разберете :)
Имам база данни online, в която има запис ip
Искам да се изпълнява заявка, която да изписва всички потребители, на които полето ip съвпата с първата танлица ip. Тоест да изкарва имената на всички потребители онлайн!
Ето какво направих аз, но без успех:
PHP:
<?php
$online_row=mysql_query("SELECT * FROM `online` ");
$online_obshto=mysql_num_rows($online_row);
$user = $row['ip'];
$query=mysql_query("SELECT * FROM `users` WHERE ip='$user'") or die(mysql_error());
while ($row = mysql_fetch_array($query))
{
echo '<img src="images/user.png" height="14"> '.$row['name'].'';
}
?>
 
PHP:
<?php

$query=mysql_query("SELECT u.* FROM `online` o JOIN `users` u ON u.ip=o.ip") or die(mysql_error());
$online_users = count(mysql_fetch_assoc($query));
echo 'Общо '.$online_users.' потребителя';
while ($row = mysql_fetch_assoc($query))
{
echo '<img src="images/user.png" height="14"> '.$row['name'].'';
}
?>

Пробвай така с JOIN. Заявката ти избира всички от таблица online и изравнява записа с тези от таблица users
 
По този начин не ми изкарва никакви резултати :)

EDIT: с долният изкарва резултат, но ако има повече от 1 запис в online таблицата, не изкарва нищо... как да направя заявката да изкарва всички потребители, на който ип-тата имат запис в online таблицата ?
PHP:
<?php
$online_row=mysql_query("SELECT * FROM `online` ");
$online_obshto=mysql_num_rows($online_row);
$row=mysql_fetch_array($online_row);
$who=$row['ip'];
echo "Общо онлайн ".$online_obshto." в сайта<br><br>";
$query=mysql_query("SELECT * FROM `users` WHERE ip='$who'") or die(mysql_error());
while ($row = mysql_fetch_array($query))
{
echo '<img src="images/user.png" height="14"> '.$row['username'].'';
}
?>
 
PHP:
<?php
$online_row=mysql_query("SELECT * FROM `online` ");
$online_obshto=mysql_num_rows($online_row);
$row=mysql_fetch_array($online_row);
$who=$row['ip'];
echo "Общо онлайн ".$online_obshto." в сайта<br><br>";
$query=mysql_query("SELECT * FROM `users` WHERE ip='$who'") or die(mysql_error());
$row = mysql_fetch_array($query);
echo '<img src="images/user.png" height="14"> '.$row['username'].'';
?>
Пробвай така :)
 
taneca каза:
По този начин не ми изкарва никакви резултати :)

EDIT: с долният изкарва резултат, но ако има повече от 1 запис в online таблицата, не изкарва нищо... как да направя заявката да изкарва всички потребители, на който ип-тата имат запис в online таблицата ?
PHP:
<?php
$online_row=mysql_query("SELECT * FROM `online` ");
$online_obshto=mysql_num_rows($online_row);
$row=mysql_fetch_array($online_row);
$who=$row['ip'];
echo "Общо онлайн ".$online_obshto." в сайта<br><br>";
$query=mysql_query("SELECT * FROM `users` WHERE ip='$who'") or die(mysql_error());
while ($row = mysql_fetch_array($query))
{
echo '<img src="images/user.png" height="14"> '.$row['username'].'';
}
?>

Огледа ли внимателно кода... Не те знам какви полета имаш нито в online нито в users.... Имаш ли поле ip в users ... виж кода ми къде е o.ip = u.ip там сложи 2-те полета, които съвпадат от 2-те таблици и ще ти изведе всичко както трябва...
 

Back
Горе