求教一个php调用数据库输出的问题

sfhy20 2012-04-10 03:44:52
目的是做一个 选择范围然后 通过这些范围查询数据库并格式化输出结果的

但是做到输出就出问题了 弄了半天很不理解
以下是错误部分代码

mysql_query('set names gbk',$conn);
mysql_select_db('htc',$conn);
$count = 'select count(*) from phone';
$query = mysql_query($count,$conn);
//记录总数
$recordcount = mysql_result($query, 0,0);
//每页多条
$pagesize = 5;
//总页数
$pagecount = ceil($recordcount/$pagesize);
//当前页
$currpage = 1;
if($_GET){
$currpage = (int)$_GET['p'];
}
$currpage = $currpage<1 ? 1 : $currpage;
$currpage = $currpage>$pagecount ? $pagecount : $currpage;

$start = ($currpage-1)*$pagesize;
$sql = "select * from phone order by id desc limit $start,$pagesize";
$result = mysql_query($sql,$conn);
while($row=mysql_fetch_array($result)){
foreach ($row as $k=>$va){
//echo '<pre>';
//print_r($row);

echo "<div class='p_list'>";
echo "<div class='p_list_pic'><a><img src="."'image/'.$va[13]".">"."</img></a></div>";
echo "<div class='p_list_con'>
<p class='p_list_con_title'>$va[1]</p><br>
$va[4],$va[5]<br>
$va[6],$va[7]<br>
$va[8],$va[9]<br>
<p class='p_list_con_state'>$va[10]</p></div>";
echo "<div>售价:¥$va[3]<br>
<img src='image/gm.gif'></img></div>";
echo "</div>";
//echo '</pre>';
}

}
echo '<a href=?p=1>首页</a> ';
echo '<a href=?p='.($currpage+1).'>下页</a> ';
echo '<a href=?p='.($currpage-1).'>上页</a> ';
echo "<a href=?p={$pagecount}>末页</a>  ";
echo "[{$currpage}/{$pagecount}][共{$recordcount}记录,每页{$pagesize}条]";
?>
<select onchange="location.href='?p='+this.value">
<?php for($i=1;$i<=$pagecount;$i++){?>
<option value="<?php echo $i;?>" <?php if($i==$currpage) echo 'selected';?>>第<?php echo $i;?>页</option>
<?php }?>
</select>

错误提示是很多行
但基本上都是提示说


Notice: Uninitialized string offset: 6 in D:\Program Files\Apache\htdocs\pro\phone_zone.php on line 183

Notice: Uninitialized string offset: 7 in D:\Program Files\Apache\htdocs\pro\phone_zone.php on line 183

求教
...全文
159 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
sfhy20 2012-04-10
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 的回复:]

我理解错了你的意思,这是SQL语句中的搜索,所以不能用php的函数。
SQL code
select p_name,p_moshi,p_screen,p_system from phone where `search_in` LIKE '%keyword1%' AND `search_in` LINKE '%keyword2%'

search_in 代表要搜索的列, keyword代表要……
[/Quote]

谢谢!突然忘了mysql还有这样的语句
基本上问题应该不大了
改一下昵称 2012-04-10
  • 打赏
  • 举报
回复
我理解错了你的意思,这是SQL语句中的搜索,所以不能用php的函数。
select p_name,p_moshi,p_screen,p_system from phone where `search_in` LIKE '%keyword1%' AND `search_in` LINKE '%keyword2%'

search_in 代表要搜索的列, keyword代表要搜索的关键字
Mysql还有全文搜索功能,我不会用。
建议你在mysql版就这个问题另外发贴问吧
sfhy20 2012-04-10
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]

php 还有在自带的函数,可以在一个字符串中搜索某个子字符串
例如 strpbrk
strpos
[/Quote]
我知道数组但是不知道怎么写
比如

select p_name,p_moshi,p_screen,p_system from phone where 条件

那个条件不知道怎么写 因为搜索词是包含在字段中而不是相等
本想用in_array() 但是不知道怎么写
改一下昵称 2012-04-10
  • 打赏
  • 举报
回复
php 还有在自带的函数,可以在一个字符串中搜索某个子字符串
例如 strpbrk
strpos
sfhy20 2012-04-10
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

去掉foreach那层循环。
while($va = mysql_fetch_row($result) ){
// ...
}

至于你#2说的问题,我不会正则表达式所以帮不上忙
[/Quote]
对的 谢了
那个匹配的话只能用正则不能用别的吗?
sfhy20 2012-04-10
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

while($row=mysql_fetch_array($result)){//mysql_fetch_array($result)返回的是一维数组
foreach ($row as $k=>$va){//所以$va是单值数据
//echo '<pre>';
//print_r($row);

……
[/Quote]
谢谢
就是输出字段的啊 $va有十几个字段
改一下昵称 2012-04-10
  • 打赏
  • 举报
回复
去掉foreach那层循环。
while($va = mysql_fetch_row($result) ){
// ...
}

至于你#2说的问题,我不会正则表达式所以帮不上忙
xuzuning 2012-04-10
  • 打赏
  • 举报
回复
while($row=mysql_fetch_array($result)){//mysql_fetch_array($result)返回的是一维数组
foreach ($row as $k=>$va){//所以$va是单值数据
//echo '<pre>';
//print_r($row);

echo "<div class='p_list'>";
echo "<div class='p_list_pic'><a><img src="."'image/'.$va[13]".">"."</img></a></div>";
echo "<div class='p_list_con'>
<p class='p_list_con_title'>$va[1]</p><br>
$va[4],$va[5]<br>
$va[6],$va[7]<br>//所以$va[6],$va[7]只能是单个字符,如果$val没有那么长,则就要报错了

我认为你的本意应该是

while($val=mysql_fetch_array($result)){
//foreach ($row as $k=>$va){

也就是说:$va[6],$va[7]是第6,7个字段的值
sfhy20 2012-04-10
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

while($row=mysql_fetch_array($result)){
foreach ($row as $k=>$va){
为什么这么写,数据库读出来的$row只能是一维数组
[/Quote]
本来用的是mysql_fetch_row()
后来调试的时候换过来的 但是用mysql_fetch_row()还是不对的
sfhy20 2012-04-10
  • 打赏
  • 举报
回复
还有就是如果完成这个输出之后
我想做匹配搜索

要搜索的几个词分别包含在查询结果的几个字段里
而且不要怎么做啊
改一下昵称 2012-04-10
  • 打赏
  • 举报
回复
while($row=mysql_fetch_array($result)){
foreach ($row as $k=>$va){
为什么这么写,数据库读出来的$row只能是一维数组

21,882

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧