Archives for : 友吧今天

星期六 晴 8~18℃

去医院(25) 骨伤科

  • 独一味胶囊(3瓶)
  • 通络开痹片(5盒)

友吧今天

完成嵌套:发起/编辑话题。

星期五 晴 6~18℃

javascript 返回上一页不刷新的方法

onclick="history.go(-1);"

如果把“返回上一页”的事件写在 <form> 标签里,用户点击返回上一页修改时,会发现之前填写的数据被清空了。

解决办法是把“返回上一页”写在 <form> 标签的外面,如果考虑到对齐问题,可以用 position:absolute 定位来解决。

2012-7-24 更新

如果要把“返回上一页”写在 form 里,不要使用 input,例如可以用 <a> 链接。


友吧今天

完成嵌套:圈子创建、圈子设置、圈子成员管理、邀请好友加入圈子。

星期四 昨夜小雨,今天晴(天空看起来被雨洗得很干净) 8~16℃

UCH2.0 显示 ajax 对话框的“开关”,方便调试页面

在 header.htm 有一句:

<div id="ajaxwaitid"></div>

这个是显示 ajax 对话框的 div。

以“加入该群组”为例:

在网速正常时,点击“加入该群组”,会弹出一个 ajax 对话框,但是在网速慢的时候,会直接跳转到一个新的网页。

在本地调试时,因为不会有网速不正常的现象,但是为了调试“网速慢”时出现的情况,可以把 header.htm 里的这行代码删除,就相当于是“网速慢”的情形了。


UCH2.0 加入退出群组的 ajax hack

在 IE / FF / Opera 下都正常,唯独在 chrome 下不正常:

在“加入”或者“退出”群组时,需要点击两次,第一次点击出现 ajax 对话框,点击按钮后又会跳到一个新的页面,再次点击按钮才能完成。

目前没有解决这个 hack,可能其他一些页面弹出的 ajax 对话框在 chrome 下也会有不兼容的现象。


链接去掉虚框(虚线)

同事问起,找了两个方法:

单个链接:

<a href="#@" onfocus="this.blur();"><img src="" />test</a>

批量链接,除 FF 外,其他几个浏览器都兼容。

<style>
a { pickbar:expression(this.hideFocus=true) }
</style>
<a href="#@"><img src="" />test</a>

2010-12-3 更新,applewar 分享的方法,兼容 IE / FF / chrome / Opera:

a{outline:none;blr:expression(this.onFocus=this.blur());}


友吧今天

嵌套页面:创建圈子、圈子设置。

处理一些细节。

星期三 大雾(中午有点阳光) 9~16℃

UCH2.0 随便看看使用 ajaxget 方法随机刷新头像

刚开始直接用:

function reloadHead() {
 ajaxget(‘network.php’, ‘headPics’);
}

没有成功,后来看 script_ajax.js,看到这一行:

var url = url + ‘&inajax=1&ajaxtarget=’ + showid;

于是试一下在地址后面加个参数:

function reloadHead() {
 ajaxget(‘network.php?uid=0′, ‘headPics’);
}

可以了。

事实上只要在地址后加个“?”就可以,ajaxget 函数在变量 url 后面加了参数,如果不用“?”连接的话,就变成直接用“&”连接,地址就错误了。

举个例子

这样可以正常访问:

http://www.zhugao.net/index.html?

但是这样不行:

http://www.zhugao.net/index.html&

以下是 uch2.0 随便看看使用 ajaxget 方法随机刷新头像

模板 network.htm

<!–{if !empty($_SGLOBAL[inajax])}–>
<!–{loop $spaceRandom $value}–>
 <li>
  <div class="d_avatar avatar48"><a href="space.php?uid=$value[uid]" title="{$_SN[$value[uid]]}" target="_blank"><!–{avatar($value[uid],small)}–></a></div>
  <p><a href="space.php?uid=$value[uid]" target="_blank">{$_SN[$value[uid]]}</a></p>
  <p>$value[resideprovince] $value[residecity]</p>
  <p>$value[friendnum] 位好友</p>
 </li>
<!–{/loop}–>
<!–{else}–>
(把原来的所有代码放到这里面,再加上下面这段)
<div style="cursor:pointer" onmouseover="this.style.textDecoration=’underline’" onmouseout="this.style.textDecoration=’none’" onclick="reloadHead()">随机刷新</div>
<ul class="s_clear" id="headPics">
<!–{loop $spacelist $value}–>
 <li>
  <div class="d_avatar avatar48"><a href="space.php?uid=$value[uid]" title="{$_SN[$value[uid]]}" target="_blank"><!–{avatar($value[uid],small)}–></a></div>
  <p><a href="space.php?uid=$value[uid]" target="_blank">{$_SN[$value[uid]]}</a></p>
  <p>$value[resideprovince] $value[residecity]</p>
  <p>$value[friendnum] 位好友</p>
 </li>
<!–{/loop}–>
</ul>
<script>
function reloadHead() {
 ajaxget(‘network.php?uid=0′, ‘headPics’);
}
</script>
<!–{/if}–>

network.php 修改

//是否公开
if(empty($_SCONFIG['networkpublic'])) {
 checklogin();//需要登录
}

下方增加:

$cachefile = S_ROOT.’./data/cache_index.txt’;
$cachetime = @filemtime($cachefile);
$spacelist = $spaceRandom = array();
//(页面加载时调用)每隔900秒更新一次缓存,避免每次加载页面都读取数据库
if($_SGLOBAL['timestamp'] – $cachetime > 900) {
 $query = $_SGLOBAL['db']->query("SELECT s.*, sf.resideprovince, sf.residecity
  FROM ".tname(‘space’)." s
  LEFT JOIN ".tname(‘spacefield’)." sf ON sf.uid=s.uid
  ORDER BY s.friendnum DESC");
 while ($value = $_SGLOBAL['db']->fetch_array($query)) {
  $spacelist[] = $value;
 }
 $spacelist = sarray_rand($spacelist, 15);
 swritefile($cachefile, serialize($spacelist));
} else {
 $spacelist = unserialize(sreadfile($cachefile));
}
//ajax随机刷新
$query = $_SGLOBAL['db']->query("SELECT s.*, sf.resideprovince, sf.residecity
 FROM ".tname(‘space’)." s
 LEFT JOIN ".tname(‘spacefield’)." sf ON sf.uid=s.uid
 ORDER BY s.friendnum DESC");
while ($value = $_SGLOBAL['db']->fetch_array($query)) {
 $spaceRandom[] = $value;
}
$spaceRandom = sarray_rand($spaceRandom, 15);
//实名
foreach ($spacelist as $key => $value) {
 realname_set($value['uid'], $value['username'], $value['name'], $value['namestatus']);
}
foreach ($spaceRandom as $key => $value) {
 realname_set($value['uid'], $value['username'], $value['name'], $value['namestatus']);
}
realname_get();


UCH2.0 是通过 style.css 来判断站点模板

昨天把模板目录下原始的 style.css 移走(不需要了),今天发现在后台站点设置的“站点模板”里缺少了新增的模板,于是想到可能是这个 style.css 的原因。在模板目录下新建一个 .txt 文件,更名为 style.css,刷新试试,果然是这个原因。


大雾

昨晚十点左右发现外面好大雾,大概当时的能见度不足 200 米。早上起来雾还未散,不过比不上昨晚看到的阵势。到公司后看到新闻《大雾突袭浙江 高速、航空交通“瘫痪”》,下面是新闻中的一段描述:

晚上10点30分,在从高速彭埠入口赶回城里的途中,坐在副驾驶室的记者也亲身体验到了大雾的“杀伤性”,透过前挡风玻璃,最多只能看到大约三四米距离的车辆和物体,若遇到前方路灯不够明亮的地方,车子就有如被大雾“吃”了一样,整个埋没进去。

到下班仍然未散。


友吧今天

1、网站首页嵌套完成。

2、完成零碎页面:信息提示页、登录页、注册页。

星期二 小雨转阴 10~16℃

UCH 2.0 群组名改为可更改

默认的,群主不可以更改群组名,现在改为可更改。

第一步

cp_mtag.php

$setarr['joinperm'] = $field['manualmember']?intval($_POST['joinperm']):0;

上方加一行

$setarr['tagname'] = getstr($_POST['tagname'], 80, 1, 1, 1, 1);

第二步

模板 cp_mtag.htm

<th width="100">群组名</th>
<td>$mtag[tagname]</td>

改为

<th width="100">群组名</th>
<td><input id="tagname" type="text" name="tagname" value="$mtag[tagname]" size="80" class="t_input" /></td>


SQL 关联表:SQL "WHERE"、"LEFT JOIN"

参考:WHERE 子句LEFT JOIN 关键字

现学现卖:UCH 2.0 随便看看调用“喜欢的运动”

第一步

index.php

原:

//20位热门用户
$query = $_SGLOBAL['db']->query("SELECT s.*, sf.resideprovince, sf.residecity
 FROM ".tname(‘space’)." s
 LEFT JOIN ".tname(‘spacefield’)." sf ON sf.uid=s.uid
 ORDER BY s.friendnum DESC LIMIT 0,20");

增加显示“喜欢的运动”:

//20位热门用户
$query = $_SGLOBAL['db']->query("SELECT s.*, sf.resideprovince, sf.residecity, si.title, si.friend
 FROM ".tname(‘space’)." s
 LEFT JOIN ".tname(‘spacefield’)." sf ON sf.uid=s.uid
 LEFT JOIN ".tname(‘spaceinfo’)." si ON si.uid=s.uid WHERE subtype=’sport’
 ORDER BY s.friendnum DESC LIMIT 0,20");

第二步

模板 index.htm

<!–{loop $spacelist $value}–>
 <li>
  <div class="d_avatar avatar48"><a href="space.php?uid=$value[uid]" title="{$_SN[$value[uid]]}" target="_blank"><!–{avatar($value[uid],small)}–></a></div>
  <p><a href="space.php?uid=$value[uid]" target="_blank">{$_SN[$value[uid]]}</a></p>
  <p>$value[resideprovince] $value[residecity]</p>
  <p>$value[friendnum] 位好友</p>
 </li>
<!–{/loop}–>

改,(显示条件:用户设置了“喜欢的运动”,并且隐私条件设置为“全用户可见”)

<!–{loop $spacelist $value}–>
 <!–{if $value[title] && $value[friend]==0}–>
 <li>
  <div class="d_avatar avatar48"><a href="space.php?uid=$value[uid]" title="{$_SN[$value[uid]]}" target="_blank"><!–{avatar($value[uid],small)}–></a></div>
  <p><a href="space.php?uid=$value[uid]" target="_blank">{$_SN[$value[uid]]}</a></p>
  <p>$value[resideprovince] $value[residecity]</p>
  <p>$value[friendnum] 位好友</p>
  <p>$value[title]</p>
 </li>
 <!–{/if}–>
<!–{/loop}–>


友吧今天

1、昨晚列出剩下的未完成页面,还有十来个,努力在这周完成。局部细节可以上线后再处理,不影响使用。

2、继续嵌套首页,扩展处理遇到的技术问题。

星期一 阴转小雨 9~17℃

UCH 2.0 随便看看增加推荐群组

在 index.php 或 source/network.php 增加,其中 $mtagcount 是群组总数,使用了随机显示:

//推荐群组
$mtaglist = array();
$mtagcount = $_SGLOBAL['db']->result($_SGLOBAL['db']->query("SELECT COUNT(*) FROM ".tname(‘mtag’)), 0);
if($mtagcount) {
 $query = $_SGLOBAL['db']->query("SELECT tagid,tagname,pic,recommend FROM ".tname(‘mtag’)." WHERE recommend=1");
 while ($value = $_SGLOBAL['db']->fetch_array($query)) {
  $mtaglist[] = $value;
 }
 $mtaglist = sarray_rand($mtaglist, 6);
}

模板页 index.htm / network.htm

<h2>已有 $mtagcount 个群组</h2>
<div class="i_mtag">
 <ul>
 <!–{loop $mtaglist $value}–>
  <li>
   <a href="space.php?do=mtag&tagid=$value[tagid]"><img src="$value[pic]" class="mainBg" /></a>
   <p><a href="space.php?do=mtag&tagid=$value[tagid]">$value[tagname]</a></p>
  </li>
 <!–{/loop}–>
 </ul>
</div>


邻居房间进小偷了

昨晚去外面买外卖打包回来没多久,听到房门外有声音,后来房东来了,听情形是邻居遭贼了,被偷的是放在床上的笔记本和游戏机。

没多久,楼上有一户也说丢东西了。

然后是保安来了,然后听到邻居打电话报警。

再后来听到邻居的哭声。丢东西的两户都是女孩子。

我一天都在家,并未听到外面有什么动静。五点半左右出门去买饭,不到六点左右回来。听他们谈话的情形,正是在五点半左右发生的。有人说看到楼下有两个男的鬼鬼祟祟。难道小偷瞄准我出门了就下手?以前短时间出门的话会想:“不要紧,反正就这几分钟,没事。”然后窗户和后门可能就不关了,现在不敢这么想了,尤其是年底小偷最猖獗的时候。

想起前不久记的“关好门窗,防止小偷”。出门切记要关好门窗,就连晚上睡觉都要小心。这次事件实在离自己太近,没准哪天就轮到自己了。昨晚把相机之类的易偷物品都放到了不太明显的地方。

进入二十一世纪后,贫富差距和失业率越来越大,住在中国的哪旮旯还能有些许的安全感呢?


友吧今天

嵌套网站首页。此前嵌套了一半,因为遇到技术问题,所以暂时搁置。现在内页套好了再回过来套首页,套内页时稍稍学了点 php 知识,此前遇到的技术问题也解决了。

第922天:嵌套“最喜欢的运动”

星期日 阴 8~16℃

友吧今天

把个人资料页里“喜欢的运动”改成“最喜欢的运动”,输入框改成单选项,用 js 实现传值。

星期六 晴 10~18℃

休息

天气好。洗衣晒被。


UCH 2.0 消息发送页收件人列表的关闭按钮始终显示在右上角

默认的关闭按钮会随着滚动条滚动,当需要关闭时,滚动条需要拉到最顶上才能看到关闭按钮。现在改成关闭按钮固定不动,不管滚动条怎么滚,都可以随时点击关闭。

模板页 cp_pm.htm

原:

<div id="username_menu" class="ajax_selector" onclick="$(‘username_menu’).style.display=’none’;" style="display:none">
 <div class="ajax_selector_option" style="width: 396px; height: 100px;">
  <a href="javascript:;" onclick="$(‘username_menu’).style.display=’none’;" class="float_del" style="margin-right: 5px;">a</a>
  <ul id="friendlist" class="blocklink">
   <!–{loop $friends $key $value}–>
    <!–{eval $fs[] = $value['username'];}–>
    <li>$value[username]</li>
   <!–{/loop}–>
  </ul>
 </div>
</div>

改,把关闭按钮提到上面一层,并加上 z-index:

<div id="username_menu" class="ajax_selector" onclick="$(‘username_menu’).style.display=’none’;" style="display:none">
 <a href="javascript:;" onclick="$(‘username_menu’).style.display=’none’;" class="float_del" style="right:0; left:362px; z-index:1">&nbsp;</a>
 <div class="ajax_selector_option" style="width: 396px; height: 100px;">
  <ul id="friendlist" class="blocklink">
   <!–{loop $friends $key $value}–>
    <!–{eval $fs[] = $value['username'];}–>
    <li>$value[username]</li>
   <!–{/loop}–>
  </ul>
 </div>
</div>

另外,这个关闭按钮有一个 hack,鼠标经过时有时会跳动,可能是因为出现滚动条的原因,解决方法是把相当右定位改成相对左定位:

right:0; left:362px;

这个 left 根据 div 的宽度来定。


友吧今天

嵌套消息发送页。

星期五 多云 7~16℃

早上断水,奢侈

昨晚十点多发现断水。早上起床还没来水,拿桶到楼下准备打些井水,正好看见一大妈在井边洗拖把,一问,这井水原来是脏的,只是用来洗衣服洗拖把的(估计洗好了的衣服还是要用清水过几遍才行)。去年刚搬进这小区还以为这小区风水好,每家每户楼下都有口小井,原来是这样。

打电话给房东,说断水了。房东说十五分钟后到。

回到房间,因为急着上班,准备下去买矿泉水来洗。女友说桌子底下不是有一箱吗?才想起是半年前买来准备打篮球时喝的,结果才买来没多久就查出膝盖滑膜炎,一箱水到现在还没开封,还以为再过段时间要过期扔掉了,没想到还能救急 ^____^

灌到热水瓶里烧热水,用了 3 瓶半矿泉水才装满热水瓶,想起来真有点奢侈。

快出门的时候房东来了,很快解决了问题,可能是昨天晚上修的时候把哪个开关给关了。


UCH2.0 站内消息增加表情解析

第一步

在模板(space_pm.htm)消息框(textarea)上方增加表情插入:

<a href="#@" id="message_face" onclick="showFace(this.id, ‘pm_message’);return false;"><img src="image/facelist.gif" align="absmiddle" /></a>

第二步

在 space_pm.php 的

$value['daterange'] = 5;

上方增加一行

$value['message'] = preg_replace("/\[em:(\d+):]/is", "<img src=\"image/face/\\1.gif\" class=\"face\">", $value['message']);


玩《红警2》原版(v1.006)

玩了有一段时间了,主要用来放松自己,一般玩个把小时,赢一局就不玩了。

玩原版就像打 CS,很快一局就没了,很有挑战性,如果能赢的话一局通常是半小时。玩这游戏还能体会到“创业起步阶段太艰难”,能顶住前面几波攻击基本上也就赢了。

比较喜欢玩的地图是冰天雪地和长征(因为难度大),用美国(据说用美国的话,敌国会更冷酷),敌国冷酷随机。最多只赢过一挑三,还没有赢过一挑四的纪录。


友吧今天

完成“消息”“通知”页面嵌套。接下去开始嵌套零碎页面,以及一些页面的细节。

上线在即。

星期四 多云 6~14℃

友吧今天

1、设计登录后的首页banner。

2、嵌套“设置和管理”:个人资料、密码修改、我的头像、我的经验、隐私设置、动态屏蔽。