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是最终要入库的数据,进行转义处理
}
|
你可能所有不知道获取短网址跳转后的真实地址我们可以使用get_headers()函数来实现,下面我一起来看我总结的一些例子。
获取到一个短连接,需要将短连接转换成真实的网址,通过查资料,发现 PHP 提供了一个函数 get_headers() ,可以完成这个任务,先把 头部信息获取到,然后再分析跳转地址即可
利用get_headers() 函数获取http头
php 自带的get_headers()取得服务器响应一个 HTTP 请求所发送的所有标头。 获取301状态肯定没问题。
例子
代码如下 |
复制代码 |
$url = 'http://t.cn/h5mwx';
$headers = get_headers($url, TRUE);
print_r($headers);
//输出跳转到的网址
echo $headers['Location'];
附:
Array
(
[0] => HTTP/1.1 302 Moved Temporarily
[Location] => http://www.111Cn.net
[Content-Type] => Array
(
[0] => text/html;charset=UTF-8
[1] => text/html;charset=utf-8
)
[Server] => Array
(
[0] => weibo
[1] => BWS/1.0
)
[Content-Length] => Array
(
[0] => 203
[1] => 16424
)
[Date] => Array
(
[0] => Thu, 12 Dec 2013 10:42:25 GMT
[1] => Thu, 12 Dec 2013 10:42:25 GMT
)
[X-Varnish] => 2893360335
[Age] => 0
[Via] => 1.1 varnish
[Connection] => Array
(
[0] => close
[1] => Close
)
)
|
好了我们看一个获取短网址跳转之前的网址
代码如下 |
复制代码 |
$header = get_headers($url, 1);
if (strpos($header[0], '301') || strpos($header[0], '302')) {
if (is_array($header['Location'])) {
return $header['Location'][count($header['Location'])-1];
} else {
return $header['Location'];
}
} else {
return $url;
}
|
在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
|
留言板是在刚接触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>
|
一聚教程小编提醒你,保存数据时我们要注意页面之间的编码以免出现不必要的麻烦了,还有就是数据类型与我们提交的数据要一致否则数据是保存不成功的哦。
标签:[!--infotagslink--]