малко помощ

r_a_s

Registered
Здравейте! Опитвам се да си напиша скрипт за гости, но не ми се получава
нещо записвам си ip i chas в база данни и от там не иска да ми изведе примерно по ip пробвах и с mysql_num_rows(); и с mysql_fetch_array();
Ето и самия код
Код:
<?php
session_start();
include('config.php');
$username = $_SESSION['username'];
$sql = mysql_query("SELECT * from `users`") or die (gre6ka);
$row = mysql_fetch_array($sql);
$ipto = $_SERVER['REMOTE_ADDR'];
$chas = time();
if($username != $row['username'])
{
$sql2 = mysql_query("SELECT * from `gosti` where `ip` = '$ip'") or die (gre6ka);
$row2 = mysql_num_rows($sql2);
echo $row2['ip'];

if($row2['ip'] != $ipto){
$insert = mysql_query("INSERT INTO `gosti` (`ip`,`timeLogin`) VALUES('$ipto','$chas')") or die (gre6ka);
}
else{
mysql_query("UPDATE `gosti` SET `timeLogin` = '$chas' WHERE `ip` = '$ipto'") or die (mysql_error());
}
}
?>
 
<?php
session_start();
include('config.php');
$username = $_SESSION['username'];
$sql = mysql_query("SELECT * from `users`") or die ("gre6ka");
$row = mysql_fetch_array($sql);
$ipto = $_SERVER['REMOTE_ADDR'];
$chas = time();
if($username != $row['username'])
{
$sql2 = mysql_query("SELECT * from `gosti` where `ip` = '$ip'") or die ("gre6ka");
$row2 = mysql_num_rows($sql2);
echo $row2['ip'];

if($row2['ip'] != $ipto){
$insert = mysql_query("INSERT INTO `gosti` (`ip`,`timeLogin`) VALUES('$ipto','$chas');") or die ("gre6ka");
}
else{
mysql_query("UPDATE `gosti` SET `timeLogin` = '$chas' WHERE `ip` = '$ipto'") or die (mysql_error());
}
}
?>

Не съм гледал кода, но на пръв поглед това забелязах, че си сгрешил.
 
Виж така дали ще стане и ако не стане ми копирай грешката;
Код:
  <?php
session_start();
include('config.php');
$username = $_SESSION['username'];
$query = mysql_query("SELECT * from `users`")or die(mysql_error()."<br />Грешка: ".__LINE__);
$row = mysql_fetch_array($query);
$ipto = $_SERVER['REMOTE_ADDR'];
$chas = time();
if($username != $row['username']){


$sql2 = mysql_query("SELECT * from `gosti` WHERE ip='$ipto'")or die(mysql_error()."<br />Грешка: ".__LINE__);
$row2 = mysql_fetch_array($sql2);
$ip2 = $row2['ip'];
echo "ip: $ip2";

if($row2['ip'] != $ipto){
$insert = mysql_query("INSERT INTO `gosti` (`ip`,`timeLogin`) VALUES('$ipto','$chas')")or die(mysql_error()."<br />Грешка: ".__LINE__);
}
else{
mysql_query("UPDATE `gosti` SET `timeLogin` = '$chas' WHERE `ip` = '$ipto'")or die(mysql_error()."<br />Грешка: ".__LINE__);
}}
?>
 
не дава грешка, но пак не става не иска да ми изведе `ip` от базата данни
 
r_a_s каза:
не дава грешка, но пак не става не иска да ми изведе `ip` от базата данни

Провери дали въобще има някакъв запис в базата от данни. Защото, ако няма съответно нищо няма да изведеш и сложи структурата на таблиците.
 
ми има записи вьтре в полето ip ми се записва ип-то така 127.0.0.1 а иначе структурата на таблицата е следната казва се gosti има три полета в нея id, ip, timeLogin това са полетата
 
Никой ли не може да помогне?
Ако не можете напишете ми друг скрипт който да работи.
Ще сьм ви много благодарен!!!
 
r_a_s каза:
Никой ли не може да помогне?
Ако не можете напишете ми друг скрипт който да работи.
Ще сьм ви много благодарен!!!

Бях на работа.. Напиши ми какво точно искаш и малко по-късно ще ти дам кода :)
 
ми искам да направя брояч за гости тоест да ми покзва колко гости в момента са в сайта това е :)
 
пробвай следното..

index.php
Код:
<?php
include ('config.php');
include ('func.php');

echo "Статистика:";

if ($username) {
$time=time();
$query = "UPDATE users SET timestamp='$time' WHERE username='$username'";
$result = mysql_query($query);
}
$timestamp = time() - 180;
$query = "SELECT * FROM users WHERE timestamp>'$timestamp'";
$result = mysql_query($query);
$nums = mysql_num_rows($result);
$select = mysql_query("DELETE FROM `online` WHERE `session`<'$now'"); //изтриваме всички записани адреси които в полето си session имат по малка стойност от 1 час
$select = mysql_query("SELECT * FROM `online` WHERE `session`>'$now' ORDER BY `session` DESC"); //избираме цялата инфомация от таблицата където полето session е по голямо от $now
$num = mysql_num_rows($select); // присвояваме броя на редовете на избраната информация
$nums +=$num;
online();

echo "<a href="viewonline.php">Онлайн:</a> <?= $nums; ?><br />";

?>

func.php
Код:
<?php
function online() {
global $username;
if (!$username) {
$ip = $_SERVER['REMOTE_ADDR']; //Взимаме IP адреса на посетителя
$session = time(); //Присвояваме фунцкията time()
$now = time()-120; //Изкарваме 3600 от функцията

$data = date("H:i:s"); //Присвояваме часът пр.: чч:мм:сс
$select = mysql_query("SELECT * FROM `online` WHERE `ip`='$ip'"); //проверяваме дали има вече такова записано IP
$num = mysql_num_rows($select); //присвояваме резултата 0 или 1
if ($num==0) { //ако е нула :
$select = mysql_query("DELETE FROM `online` WHERE `session`<'$now'"); //изтриваме всички записани адреси които в полето си session имат по малка стойност от 1 час
if (!$username) {
$select = mysql_query("INSERT INTO `online` VALUES('$ip', '$session', '$data')") or die(mysql_error()); //избираме всички нови записи, вече опреснени.
}}}}


function showonline() {
global $username;
$select = mysql_query("DELETE FROM `online` WHERE `session`<'$now'"); //изтриваме всички записани адреси които в полето си session имат по малка стойност от 1 час
$select = mysql_query("SELECT * FROM `online` WHERE `session`>'$now' ORDER BY `session` DESC"); //избираме цялата инфомация от таблицата където полето session е по голямо от $now
$num = mysql_num_rows($select); //присвояваме броя на редовете на избраната информация
if ($num==1) { 
$broi = "Общо <strong>$num</strong> гост онлайн<br />"; 
} //ако е едно показваме краен резултат в единствено число
else { 
$broi = "Общо <strong>$num</strong> гости онлайн<br />"; 
} //иначе показваме резултатите в множествено число
$i=0; //присвояваме 0
echo $broi;
echo "<table>
<tr>
<td style='width: 150px;'>IP: </td>
<td style='width: 350px;'>Време: </td>
</tr>"; //изкарваме информацията колко потребителя имаме онлайн
while ($row = mysql_fetch_array($select)) { //резултатът влиза в цикъл
$i++; //овеличаваме с 1
$ex = explode(".","$row[ip]"); //разделяме IP-то на части така че да можем да маскираме със звездички последните цифри

$last2 = strlen($ex[3]); //присвояваме последната част
if($last2==1) { $point2='*'; } //ако е една цифра ще покаже 1 звезда
if($last2==2) { $point2='**'; } //ако са две цифри ще покаже 2 звезди
if($last2==3) { $point2='***'; } //ако са 3 цифри ще покаже 3 звезди
echo "<tr>
<td style='width: 150px;'>$i - ".$ex[0].".".$ex[1].".".$ex[2].".".$point2."</td>
<td style='width: 350px;'>$row[data]</td>
</tr>"; //извеждаме краен резултат - маскираното IP и кога е влезнало
} //затваряме цикъла
echo "</table>"; //извеждаме краен резултат за таблицата в която е цялото инфо
}
?>

viewonline.php
Код:
<?php
include ("config.php");
include ("func.php");
echo 'Онлайн потребители';
showonline();
$timestamp = time() - 180;
$query = "SELECT * FROM `users` WHERE timestamp > '$timestamp'";
$result = mysql_query($query);
$nums = mysql_num_rows($result);
if ($nums == 1) { 
$broi = "<br /><br />Общо <strong>$nums</strong> потребител онлайн<br>"; 
} //ако е едно показваме краен резултат в единствено число
else { 
$broi = "<br /><br />Общо <strong>$nums</strong> потребителя онлайн<br />"; 
} //иначе показваме резултатите в множествено число
echo $broi;
$timestamp=time()-180;
$query = "SELECT * FROM users WHERE timestamp>'$timestamp'";
$result = mysql_query($query);
echo '<br />';
echo 'Последно действие:';

echo "<table>
<tr>
<td style='width: 150px;'>Потребител</td></tr>";
while ($row = mysql_fetch_array($result)) {
echo "<tr><td style='width: 150px;'><a href='viewprofile.php?id=$row[id]'>$row[username]</a></td></tr>";
}
echo "</table>";
echo '</div>
</div>';
?>

sql.sql
Код:
CREATE TABLE `users` (
  `id` int(11) NOT NULL auto_increment,
  `username` varchar(30) NOT NULL default '',
  `password` varchar(255) NOT NULL default '',
  `timestamp` int(200) NOT NULL default '0',
  `ip` varchar(100) NOT NULL default '',
  `session` varchar(32) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM ;


CREATE TABLE `online` (
  `ip` varchar(100) NOT NULL default '',
  `session` varchar(100) NOT NULL default '',
  `data` varchar(100) NOT NULL default ''
) ENGINE=MyISAM ;

Успех.. Надявам се да си схванал логиката колкото до кода.. Взел съм го от един стар проект за Visual Basic - Сборник
 

Back
Горе