在php中测试字符串长度的函数是strlen,但今天我发现使用isset更加的更高效哦,口说不你不相信下面我举两个例子来给各位看看。
学PHP的都了解,在PHP中获取字符串有一个strlen自带函数;
这里和大家分享一个在一些特定情况下判断字符串长度较为高效的方式;
来看下面两段代码的执行效率吧,自己理解理解代码的执行思路:
代码如下 |
复制代码 |
<?php
//使用strlen方式
$arr = '123456';
$sTime = microtime(1);
if(strlen($arr) > 6){
// echo 1;
}
echo microtime(1) - $sTime;
// 输出:0.00035595893859863
/*-------------------------------------*/
//使用isset($arr{})方式
$arr = '123456';
$sTime = microtime(1);
if(!isset($arr{6})){
// echo "1rn";
}
echo microtime(1) - $sTime;
// 输出:0.00019097328186035
|
Warning: Invalid argument supplied for foreach() 的中文意思是说foreach需要是一个数组而给它的是一个无效的参数。
在没有购物商品直接进入购物车时竟然出现警告提示
错误提示:
Warning: Invalid argument supplied for foreach() in E:wampwwwmyshopcart.php on line 95
解决方案:就是在循环前面加上判断
直接使用is_array判断给的值是不是为数组
代码如下 |
复制代码 |
if(is_array($items) && !empty($items)){
foreach( )
}
|
或者 强制转换数据类型
代码如下 |
复制代码 |
foreach((array)$v as $k1 => $v1) {
$edu[$k1][$k] = my_h($v1);// v1是最终要入库的数据,进行转义处理
}
|
留言板是在刚接触php时用来学习的一个简单的应用例子了,今天我再给初学php的朋友提供一个完整的php留言板的全部制作过程,希望对你会有帮助。
在网上找了这方面的教程 但是基本就是没有人说什么 然后在某一天看见一个PHP程序设计出了一张类似这样的数据库设计图之后就有了很多领悟!下面是数据库的结构图
下面我们就来继续一下介绍
id 这个算是父Id 可以通过这个id来查询 在这个id下是否有子id 同时也可以记录这个是那条留言的id
son_id 这个是子id 然后通过这个id 可以找到相对应的父id
news_id 记录文章的id
sender_author 接受留言的人
receiver_author 发送留言的人
content 留言的内容
status 在有人回复你的帖子的时候 这个值从0转为1时候 该消息不在显示 如果没点击进去 该消息依然存在
time 记录留言的时间
留言板回复思路
当发送方(也就留言的人)要到该文章下留言或者回复的的时候就需要接收方(也就文章的作者或者要被回复的人)来接收。单数据库语句查询到这个键sender_author和receiver_author 的是就会知道接收方是谁和发送方是谁了。然后在根据这个判断来显示出回复内容
提示你有一条新的消息思路
当发送方发送消息的时候 这个status的值默认为0 就是提示接收发 你有一条新的消息。当点击进去的时候 调用数据库修改语句把指定的值修改成为1 这样就不显示了
查看评论的时候 的数据库操作语句
代码如下 |
复制代码 |
function message($id){
$query = $this->db->query("SELECT * FROM message WHERE news_id = '$id'");//或者文章id后查询里面所有评论
return $query->result();
}
|
这个是获取父的留言内容的代码
代码如下 |
复制代码 |
<?php foreach($query as $sel){?>
<p>留言用户:<?php echo $sel->receiver_author;?> 留言内容:<?php echo $sel->content?></p>
<?php }?>
|
证 用户是否登陆 并给予留言权限
代码如下 |
复制代码 |
<form id="form1" name="form1" method="post" action="<?php echo site_url()."/publish/user_message"?>">
<textarea rows="5" cols="50" name="huifu" <?php if($uere_name == "0"){echo "disabled";}?> >
<?php
if($uere_name == "0")
{echo "抱歉你还没登录不能进行留言";}
?>www.111cN.net
</textarea>
<input class="wole" name="author" value="<?php echo $author;?>" /><!--接受方帖子作者-->
<input class="wole" name="news_id" value="<?php echo $news_idx;?>" /><!--文章id-->
<input type="submit" name="Submit"/>
</form>
<script language="javascript">
function updateinfo(){
if(<?php echo $uere_name;?> == 1){
document.form1.Submit.value = "留言";
document.form1.Submit.disabled = false;
}
else{
document.form1.Submit.value = "还未登录";
document.form1.Submit.disabled = "disabled";
}
}
updateinfo();
</script>
|
这个是显示了 获取指定的父id 之后来显示他里面的全部子id 和留言内容
代码如下 |
复制代码 |
<p>这里是<?php echo $is;?>楼 用户:<?php echo $sel->receiver_author;?> <br />留言内容:<?php echo $sel->content?>
<a onClick="showdiv('contentid<?php echo $is;?>','showtext<?php echo $is;?>')" href="javascript:void(0)">回复</a>
<div id="contentid<?php echo $is;?>" class="none">
<?php
$query = $this->db->query("select * from message where son_id ='$sel->id' order by id");//获取指定父id的子回复
$revis = $query->result();
foreach($revis as $row){?>
<p><?php if($row->sender_author == $row->receiver_author){echo $row->sender_author;}
else{ echo $row->sender_author."回复了:".$row->receiver_author;}?>
内容是:<?php echo $row->content?></p>
<?php }?>
<form action="<?php echo site_url()."/publish/son_message"?>" method="post">
<input name="son_idx" class="wole" value="<?php echo $sel->id?>" />
<input name="receiver_author" class="wole" value="<?php echo $sel->receiver_author;?>" />
<input class="wole" name="news_id" value="<?php echo $news_idx;?>" /><!--文章id-->
<textarea rows="5" cols="50" name="huifux"></textarea>
<br><input type="submit" name="sub" value="回复"></form></div></p>
<script language="JavaScript" type="text/JavaScript">
<!--www.111cn.net
function showdiv(targetid,objN){
var target=document.getElementById(targetid);
var clicktext=document.getElementById(objN)
if (target.style.display=="block"){
target.style.display="none";
clicktext.innerText="回复";
} else {
target.style.display="block";
clicktext.innerText='收起';
}
}
-->
</script>
|
这个是实现之后的效果图片 留言板已经实现了 留言内容回复
然后这个是实现了 回复你的时候 会显示你有一条新的留言
保存数据到mysql数据库中我们需要使用update或insert来协助我们完成,下面我给学习php的朋友介绍几个应用例子,希望文章给你带来帮助。
我们先来介绍INSERT语句
语法1: INSERT INTO table_name VALUES ("1", "2")
解说: 就是插入插入2个值。第一个值为:1 第二个值为:2
语句2:INSERT INTO table_name (column1, column2)VALUES (value1, value2)
解说:就是根据指定的键!插入指定的值。在字段 column1 插件的值为:value1 ,然后再字段column2 插入的值为:value2
INSERT语句的列子
代码如下 |
复制代码 |
<?php
$con = mysql_connect("localhost","peter","abc123");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("my_db", $con);
mysql_query("INSERT INTO Persons (FirstName, LastName, Age)
VALUES ('Peter', 'Griffin', '35')");
mysql_query("INSERT INTO Persons (FirstName, LastName, Age)
VALUES ('Glenn', 'Quagmire', '33')");
mysql_close($con);
?>
|
例子
代码如下 |
复制代码 |
<?php
/*
* 资料保存
* 程序:刘兴
* 时间:2010-6
*/
?>
<!DOCTYPE html PUBLIC ”-//W3C//DTD XHTML 1.0 Transitional//EN” ”http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>
<html xmlns=”http://www.w3.org/1999/xhtml”>
<?php
require_once(“gxpass.php”);//引入密码验证
require_once(“connDB.php”);//引入数据库连接参数
$zl=$_POST;
//数据保存
list ($pid,$pname)=split(‘-’,$zl[people]);
$year=$zl[year];
$jd=$zl[jd];
foreach($zl as $key => $value){
if (strstr($key,”fs”)) {
if (strstr($key,”kfs”)){
$khxm=substr($key,3,strlen($key)-3);
$fs=$zl[$key];
continue;
} //www.111cn.nEt
else{
$khxm=substr($key,2,strlen($key)-2);
}
$khfs=$value;
$khinfo=$zl[$khxm];
$sql=”delete from khzl where peopleid=’$pid’ and khbm=’$khxm’ and time=’$jd’ and year=’$year’”;
$result=mysql_query($sql) ;
$sql=”INSERT INTO khzl (peopleid ,khbm ,fenshu ,time ,year ,info,fs ) VALUES (‘$pid’, ’$khxm’, $khfs, ’$jd’, ’$year’, ’$khinfo’,'$fs’)”;
$fs=0;
$result=mysql_query($sql);
}
}
?>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=gb2312″ />
<title>数据保存</title>
</head>
<body>
<?php
//网址转向
echo ”<script language=’javascript’>”;
echo ” location=’peoplexz.php’;”;
echo ”</script>”;
?>
</body>
</html>
|
一聚教程小编提醒你,保存数据时我们要注意页面之间的编码以免出现不必要的麻烦了,还有就是数据类型与我们提交的数据要一致否则数据是保存不成功的哦。
php中要查询mysql数据库中的内容我们必须先连接mysql数据库,然后再利用sql语句进行查询,下面我们来看一些例子吧。
sql有许多对数据库操作的语句。但是常见和比较需要的是这么几个语句 。SELECT 语句用于从数据库中选取数据。
那么我们先来介绍第一种 SELECT语句
语句1:SELECT * FROM table_name
解说:意思就是读取整个表table_name里面的数据显示出来
语句1:SELECT * FROM table_name Where x = 1
解说:意思就是读取表table_name里面键名为:x 值为:1的 数据显示出来
Select 查询语句的例子
代码如下 |
复制代码 |
<?php
$con = mysql_connect("localhost","peter","abc123");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("my_db", $con);
$result = mysql_query("SELECT * FROM Persons");
while($row = mysql_fetch_array($result))
{
echo $row['FirstName'] . " " . $row['LastName'];
echo "<br />";
}
mysql_close($con);
?>
|
例子
代码如下 |
复制代码 |
<?php
define ('HOSTNAME', 'localhost'); //数据库主机名
define ('USERNAME', 'username'); //数据库用户名
define ('PASSWORD', 'password'); //数据库用户登录密码
define ('DATABASE_NAME', 'testdb'); //需要查询的数据库
$db = mysql_connect(HOSTNAME, USERNAME, PASSWORD) or
die (mysql_error());
//连接不上,就会显示mysql出错的原因。
mysql_select_db(DATABASE_NAME);
//切换到testdb www.111cn.net
$query =
"SELECT uri,title FROM testdb WHERE 1 ORDER by rand() LIMIT 1";
//上面这句的意思是从testdb中随机提取一条数据。
$result = mysql_query($query);
//查询
while ($row = mysql_fetch_array($result)) { echo "<p id="title">" ,
($row['title']) , "</p><p id="uri">–" , nl2br($row['uri'])
, "</p>"; }
//显示结果
mysql_free_result($result);
//释放结果
mysql_close();
//关闭连接
?>
|
mysql中文数据出现乱码
数据库采用UTF8编码,而页面申明编码是GB2312,这是最常见的产生乱码的原因。这时候在PHP脚本里面直接SELECT数据出来的就是乱码,需要在查询前先使用:
代码如下 |
复制代码 |
mysql_query("SET NAMES GBK");或mysql_query("SET NAMES GB2312");
|
来设定MYSQL连接编码,保证页面申明编码与这里设定的连接编码一致(GBK是GB2312的扩展)。如果页面是UTF-8编码的话,可以用:
mysql_query("SET NAMES UTF8"); 注意是UTF8而不是一般用的UTF-8。假如页面申明的编码与数据库内部编码一致可以不设定连接编码。
代码如下:
代码如下 |
复制代码 |
$mysql_mylink = mysql_connect($mysql_host, $mysql_user, $mysql_pass);
mysql_query("SET NAMES 'GBK'");
|
标签:[!--infotagslink--]