|
|
|
ไม่เข้าใจ เรื่องการเเสดงรายชื่อคนออนไลน์คะของ php คะ |
|
|
|
|
|
|
|
ขอตั้งคำถามย้อนก่อนว่า เข้าใจ หลักการ หรือ คิดว่า การแสดงสถานะของผู้ใช้งาน รายชื่อคนออนไลน์ ว่าอย่างไรครับ...
|
|
|
|
|
Date :
2013-10-13 19:44:36 |
By :
apisitp |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ลองทำความเข้าใจดูครับ
ตย.ฐานข้อมูล
-- phpMyAdmin SQL Dump
-- version 2.10.3
-- http://www.phpmyadmin.net
--
-- โฮสต์: localhost
-- เวลาในการสร้าง:
-- รุ่นของเซิร์ฟเวอร์: 5.0.51
-- รุ่นของ PHP: 5.2.6
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
--
-- ฐานข้อมูล: `member`
--
CREATE DATABASE `member` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
USE `member`;
-- --------------------------------------------------------
--
-- โครงสร้างตาราง `online`
--
CREATE TABLE `online` (
`iduser` int(4) NOT NULL,
`status` int(1) NOT NULL,
PRIMARY KEY (`iduser`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
--
-- dump ตาราง `online`
--
INSERT INTO `online` VALUES (1, 0);
INSERT INTO `online` VALUES (2, 0);
-- --------------------------------------------------------
--
-- โครงสร้างตาราง `user`
--
CREATE TABLE `user` (
`id` int(4) NOT NULL auto_increment,
`name` varchar(255) character set utf8 collate utf8_unicode_ci NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ;
--
-- dump ตาราง `user`
--
INSERT INTO `user` VALUES (1, 'a');
INSERT INTO `user` VALUES (2, 'b');
ตัวอย่างอย่างง่าย ต้องไปปรับเอง
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META content="text/html; charset=windows-874" http-equiv="Content-Type">
<META content="MSHTML 6.00.6000.20772" name="GENERATOR">
<META name="GENERATOR" content="MSHTML 8.00.6001.18812">
</HEAD>
<BODY>
<?php
$host='localhost';
$user='root';
$pw='123456';
$dbname='member';
$username = 'a'; // ไม่ได้สร้างฟอร์ม Log In เลยกำหนด ชื่อคงตัว ในการ ล็อกอิน
mysql_connect($host,$user,$pw) or die("ตาย");
mysql_select_db($dbname) or die("ติดต่อฐานข้อมูลไม่ได้");
//เมื่อทำการ log in ก็ทำการค่นหาชื่อสมาชิก
$sql = " SELECT * FROM `user` WHERE `name` = '".$username."'";
$result1 = mysql_db_query($dbname,$sql);
$rs1 = mysql_fetch_array($result1);
$num = mysql_num_rows($result1);
if($num <= 0){ // ไม่พบชื่อสมาชิก
echo "ไม่พบผู้ใช้งาน";
}else{
//เป็นสมาชิก แสดงข้อมูล
echo "ลำดับที่ : ".$rs1['id']."<br>";
echo "ชื่อ : ".$rs1['name']."<br>";
//เมื่อสมาชิก ทำการ Log In สำเร็จ ก็ให้มาทำการเปลี่ยนสถานะ อีก ตารางจาก 0 เป็น 1
$sql1 = "UPDATE `member`.`online` SET `status` = '1' WHERE `online`.`iduser` = '".$rs1['id']."'";
$sqlquery=mysql_db_query($dbname, $sql1);
}
//ถ้าสถานะเป็น 0 คือ ไม่ออนไลน์ ถ้าเป็น 1 แสดงว่าออนไลน์
mysql_connect($host,$user,$pw) or die("ตาย");
mysql_select_db($dbname) or die("ติดต่อฐานข้อมูลไม่ได้");
$sql2 = " SELECT * FROM `online` WHERE `iduser` = '".$rs1['id']."'";
$result2 = mysql_db_query($dbname,$sql2);
$rs2 = mysql_fetch_array($result2);
$num2 = mysql_num_rows($result2);
if($num2 > 0){
echo "กำลังออนไลน์"."<br>";
//เมื่อกระบวนการทุกอย่างจบ ก็ทำการ Log Out ออก และทำการเปลี่ยนสถานะจาก 1 เป็น 0 เมื่อสมาชิก ทำการ Log In มาใหม่ก็จะแสดงออนไลน์เหมือนเดิม
//แต่ต้องลองศึกษาดูว่า ทำอย่างไร สถานะ 1 จะกลับเป็น 0 ได้ ถ้ากรณีที่ user ไม่ทำการ Log out
}
?>
</BODY>
</HTML>
|
ประวัติการแก้ไข 2013-10-13 20:46:33
|
|
|
|
Date :
2013-10-13 20:45:22 |
By :
apisitp |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 00
|