首 页   · 站长博客 · 用户注册 · 会员登陆  · 会员排行  ·最新主题  ·最近回复  精华区  版权声明  ·论坛管理
  当前登录身份:游客,请先登录。  笔名: 口令: 验证码:   
楼 主  index »  PHP安装/语法/函数 » [原创]简易聊天室问题  


  作者:Aben
  注册时间:2005-06-28
  主题/回复:6/5
  积分:435
  等级:★★☆(五级)
  称号:略有小成

  spzhuo1982@hotma..
  未提供
  www.

 

 发表:2005-08-19 00:44:45 阅读 2312 次 回复 4 次 得分2  |   字号 字色
[原创]简易聊天室问题
请站长和高手们帮我看一下啊`~`
1.同一个ID不能连续发送2句话,第二句话进不了数据库.2.ID为空时,即2.ID为"路人"时,为什么不能发送语句?

以下是代码(共3个文件):
第一个<chat.php>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>无标题文档</title>
</head>

<frameset rows="70%,30%"  framespacing="0" frameborder="NO" border="1">
  <frame src="/list.php" >
  <frame src="/type.php" >
</frameset><noframes></noframes>

</html>

第2个 <list.php>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta http-equiv="refresh" content="3; url=list.php">
<title>无标题文档</title>
</head>

<body>
<?
$db=mysql_connect("localhost","root","");
mysql_select_db("chat",$db);
$dbq=mysql_query("select id,words from mychatdb order by datetime desc limit 0,20");
$dbt=mysql_num_rows($dbq);
echo "<table cellpadding=0 cellspacing=0 border=0 width=90% >";
for ($t=$dbt-1;$t>=0;$t--)
{
mysql_data_seek($dbq,$t);
$dbrow=mysql_fetch_row($dbq);
$id=$dbrow[0];
$words=$dbrow[1];
echo "<tr> <td width=10%>$id</td>";
echo "<td width=5% align=center>: </td>";
echo "<td width=85%>$words</td></tr>";
}
echo "</table>";
mysql_close($db);
?>
</body>
</html>

第3个 <type.php>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>无标题文档</title>
</head>

<body>
<?
$db=mysql_connect("localhost","root","");
mysql_select_db("chat",$db);
if ($chatid=="") $chatid="路人";
if (isset($words))
$dbq=mysql_query("insert into mychatdb values ('$chatid','$words',now())");
echo "<table width=99%  cellpadding=0 cellspacing=0 border=9>\n";
echo "<tr>";
echo "<td align=left><font size=2><b>";
echo "<form method=get action=type.php>\n";
echo "$chatid: <input type=text size=50 maxlength=160 name=words value=\"\">";
echo "  <input type=hidden name=chatid value=\"".$chatid."\">";
echo "  <input type=submit name=sendout value=\"送出\"> ";
echo "</form>";
echo "</font></td>";
echo "<td align=left><font size=2><b>";
echo "<form method=get action=type.php>\n";
echo "<input type=text size=12 maxlength=160 name=chatid value=\"\">";

echo " <input type=submit name=renamebutton value=\"重命名称\"> ";
echo "</form>";
echo "</font></td>";
echo "</tr>";
echo "</table>";
mysql_close($db);
?>
</body>
</html>


看起来比较麻烦 ,,各位耐心点啊~~~小弟拜谢~
 
 1#楼  
 
  回复人:Aben
  注册时间:2005-06-28
  主题/回复:6/5
  积分:435
  等级:★★☆(五级)
  称号:略有小成

   
 1#楼 发表于2005-08-19 22:25:45  评分:× 

忘了说了,数据库chat  表mychatdb  结构为3个字段:id  words datetime
 2#楼  
 
  回复人:一起PHP
  注册时间:2004-02-27
  主题/回复:247/1521
  积分:4649
  等级:★★★★★☆(十一级)
  称号:论坛圣人

   
 2#楼 发表于2005-08-23 16:47:37  评分:1 

不知道你用的什么版本的PHP
也不知道你的php.ini中 register_globals的设置是1还是0

如果是1的话,整个程序没有明显问题。除非你的数据库有问题,比如你的ID字段设置为了唯一索引,这样的话不能有重复值,因此无法插入。
如果是0的话,那么程序就有问题了。
if (isset($words)),这里面的$words变量,应当意思是接收表单提交的值,在PHP3以前可以直接这么写,但是PHP4以后不行了。应当首先接收,$words=$_GET["words"];,然后再用if (isset($words))。否则的话这个地方判断结果永远为false。
 3#楼  
 
  回复人:Aben
  注册时间:2005-06-28
  主题/回复:6/5
  积分:435
  等级:★★☆(五级)
  称号:略有小成

   
 3#楼 发表于2005-08-23 23:10:59  评分:× 

谢谢站长啊~~
我的是PHP4,, register_globals设置是1
数据库看过了,,ID字段没设唯一索引啊~~可是还是这个问题。

但是为什么ID是“路人”的时候写不进数据库里啊?
 4#楼  
 
  回复人:rredg
  注册时间:2005-05-26
  主题/回复:0/10
  积分:409
  等级:★★☆(五级)
  称号:略有小成

   
 4#楼 发表于2005-09-07 07:43:46  评分:1 

1程序有毛病,php4中得用$_GET["words"]接收表单数据.
2数据库也有问题,你应该设一个列为主码,id不能为主码
数据库列不能有相同的内容.设置一个自动增长的列.
  页数1/1首页 « 1 » 末页
  发表回复:您还没有登陆,无法发表回复。请先[登陆]

一起PHP技术联盟 主办:一起PHP 联系方式:站长QQ:4304410 QQ群:8423742 20159565 站长博客 E-mail: nqp@nqp.me 执行时间:0.009sec
SimsmaBBS 2008 (v6.0) Developed by 17php.com,Copyright(C)2003-2010 All rights reserved. 副本授权:一起PHP官方专用版