เรื่องการ search แบ่งหน้าครับ ช่วยดูแก้โค้ตให้หน่อยครับจากบทเรียนมันผิดตรงนี้ครับ ชื่อฐานข้อมูล mydatabase
ช่วยดูแก้โค้ตให้หน่อยครับจากบทเรียนมันผิดตรงนี้ครับ
ชื่อฐานข้อมูล mydatabase
รายละเอียดของ Table
CREATE TABLE color (
color_no int(2) NOT NULL default '0',
color_name varchar(10) NOT NULL default ''
) TYPE=MyISAM;
#
# dump ตาราง `color`
#
INSERT INTO color VALUES (1, 'สีดำ');
INSERT INTO color VALUES (13, 'สีครีม');
INSERT INTO color VALUES (2, 'สีขาว');
INSERT INTO color VALUES (3, 'สีฟ้า');
INSERT INTO color VALUES (4, 'สีชมพู');
INSERT INTO color VALUES (5, 'สีเหลือง');
INSERT INTO color VALUES (6, 'สีเขียว');
INSERT INTO color VALUES (7, 'สีน้ำตาล');
INSERT INTO color VALUES (8, 'สีส้ม');
INSERT INTO color VALUES (9, 'สีน้ำเงิน');
INSERT INTO color VALUES (10, 'สีแดง');
INSERT INTO color VALUES (11, 'สีเทา');
INSERT INTO color VALUES (12, 'สีม่วง');
Sample1.php
<html>
<body bgcolor="#FFFFFF">
<form name="form1" method="post" action="Sample1.php">
<br>
ค้นหาสี
<input type="text" name="keyword" value="<? echo $keyword; ?>">
<input type="submit" name="Submit" value="ค้นหา">
</form>
<?
if (empty($keyword))
{
echo"กรุณากรอกชื่อสี";
exit();
}
$host="localhost";
$username="";
$pass_word="";
$db="mydatabase";
$tb="color";
mysql_connect( $host,$username,$pass_word) or die ("ติดต่อกับฐานข้อมูล Mysql ไม่ได้ ");
mysql_select_db($db) or die("เลือกฐานข้อมูลไม่ได้");
$sql = "select * From $tb where color_name like '%$keyword%'";
/* ตั้งค่า แสดงผลต่อหน้า $Per_Page */
$Per_Page =3; // แสดงหน้าละ 3
if(!$Page)
$Page=1;
$Prev_Page = $Page-1;
$Next_Page = $Page+1;
$result = mysql_query($sql);
$Page_start = ($Per_Page*$Page)-$Per_Page;
$Num_Rows = mysql_num_rows($result);
if($Num_Rows<=$Per_Page)
$Num_Pages =1;
else if(($Num_Rows % $Per_Page)==0)
$Num_Pages =($Num_Rows/$Per_Page) ;
else
$Num_Pages =($Num_Rows/$Per_Page) +1;
$Num_Pages = (int)$Num_Pages;
if(($Page>$Num_Pages) || ($Page<0))
print "<center><b>จำนวน $Page มากกว่า $Num_Pages ยังไม่มีข้อความ<b></center>";
$sql = "select * From $tb where color_name like '%$keyword%' order by color_no asc LIMIT $Page_start , $Per_Page";
//ส่วนแสดงผล
$result = mysql_query($sql);
?>
<table width="32%" border="1" cellspacing="1" cellpadding="1">
<tr>
<td width="47%" height="26">
<div align="center">รหัส ID</div>
</td>
<td width="53%" height="26">
<div align="center">ชื่อสินค้า</div>
</td>
</tr>
</table>
<?
While($row= mysql_fetch_array($result)){
$color_no = $row["color_no"];
$color_name = $row["color_name"];
?>
<table width="32%" border="1" cellspacing="1" cellpadding="1">
<tr>
<td width="47%" height="26">
<div align="center">
<?echo $color_no;?>
</div>
</td>
<td width="53%" height="26">
<?echo $color_name;?>
</td>
</tr>
</table>
<?}?>
<br>
พบทั้งหมด<b>
<?= $Num_Rows;?>
</b> รายการ รวมทั้งหมด : <b>
<?=$Num_Pages;?>
</b> หน้า :
<?/* สร้างปุ่มย้อนกลับ */
if($Prev_Page)
echo " <a href='$PHP_SELF?Page=$Prev_Page&keyword=$keyword'><< ย้อนกลับ </a>";
for($i=1; $i<$Num_Pages; $i++){
if($i != $Page)
echo "[<a href='$PHP_SELF?Page=$i&keyword=$keyword'>$i</a>]";
else
echo "<b> $i </b>";
}
/*สร้างปุ่มเดินหน้า */
if($Page!=$Num_Pages)
$Num_Rows = mysql_num_rows($result);
While($row= mysql_fetch_array($result)){
ช่วยแก้ให้ทีครับ เครื่องผมรันแล้ว แจ้งข้อความนี้ขึ้นมาเกิดจากอะไรครับ
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\AppServ\www\test_search.php on line 23
รหัส ID ชื่อสินค้า
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\AppServ\www\test_search.php on line 48
Tag : - - - -
Date :
1 ส.ค. 2551 20:53:26
By :
timm
View :
1457
Reply :
5
น่าจะ connect database ไม่ได้
Date :
1 ส.ค. 2551 23:34:37
By :
อิอิ
ขอบคุณครับ ทำได้แล้วครับ connect ไม่ได้จริง ๆ
Date :
2 ส.ค. 2551 23:02:28
By :
tt
ขอ code ที่เเก้เรีบยร้อยเเล้วคับอยากได้
Date :
3 ส.ค. 2551 23:43:07
By :
77777
ตัวแก้ไขครับ
<?
if (empty($keyword))
{
echo"กรุณากรอกชื่อสี";
exit();
}
$dbhost="localhost";
$dbuser="root";
$dbpass="";
$dbname="color";
$tb="color";
mysql_connect( $dbhost,$dbuser,$dbpass ) or die ("ติดต่อกับฐานข้อมูล Mysql ไม่ได้ ");
mysql_select_db($dbname) or die("เลือกฐานข้อมูลไม่ได้");
mysql_query("set NAMES tis620 "); //เพิ่มบรรทัดนี้เข้ามาไม่งั้นรันไม่ผ่านครับ
$sql = "select * From color where color_name like '%$keyword%'";
/* ตั้งค่า แสดงผลต่อหน้า $Per_Page */
$Per_Page =3; // แสดงหน้าละ 3
if(!$Page)
$Page=1;
$Prev_Page = $Page-1;
$Next_Page = $Page+1;
$result = mysql_query($sql);
$Page_start = ($Per_Page*$Page)-$Per_Page;
$Num_Rows = mysql_num_rows($result);
if($Num_Rows<=$Per_Page)
$Num_Pages =1;
else if(($Num_Rows % $Per_Page)==0)
$Num_Pages =($Num_Rows/$Per_Page) ;
else
$Num_Pages =($Num_Rows/$Per_Page) +1;
$Num_Pages = (int)$Num_Pages;
if(($Page>$Num_Pages) || ($Page<0))
echo"<center><b>จำนวน $Page มากกว่า $Num_Pages ยังไม่มีข้อความ<b></center>";
$sql = "select * From color where color_name like '%$keyword%' order by color_no asc LIMIT $Page_start , $Per_Page";
//ส่วนแสดงผล
echo"
<table width='32%' border='1' cellspacing='1' cellpadding='1'>
<tr>
<td width='47%' height='26'>
<div align='center'>รหัส ID</div>
</td>
<td width='53%' height='26'>
<div align='center'>ชื่อสี</div>
</td>
</tr>
</table>";
$result = mysql_query($sql);
While($row= mysql_fetch_array($result)){
$color_no = $row["color_no"];
$color_name = $row["color_name"];
?>
<table width="32%" border="1" cellspacing="1" cellpadding="1">
<tr>
<td width="47%" height="26">
<div align="center">
<?echo $color_no;?>
</div>
</td>
<td width="53%" height="26">
<?echo $color_name;?>
</td>
</tr>
</table>
<?}?>
<br>
พบทั้งหมด<b>
<?= $Num_Rows;?>
</b> รายการ รวมทั้งหมด : <b>
<?=$Num_Pages;?>
</b> หน้า :
<?/* สร้างปุ่มย้อนกลับ */
if($Prev_Page)
echo " <a href='$PHP_SELF?Page=$Prev_Page&keyword=$keyword'><< ย้อนกลับ </a>";
for($i=1; $i<$Num_Pages; $i++){
if($i != $Page)
echo "[<a href='$PHP_SELF?Page=$i&keyword=$keyword'>$i</a>]";
else
echo "<b> $i </b>";
}
/*สร้างปุ่มเดินหน้า */
if($Page!=$Num_Pages)
echo "<a href ='$PHP_SELF?Page=$Next_Page&keyword=$keyword'> หน้าถัดไป>> </a>";
mysql_close();
?>
ฐานข้อมูลตัวเดิมนะครับ
โค้ตเหมือนเดิมเพียงแต่เพิ่มบรรทัด mysql_query("set NAMES tis620 "); เข้ามาครับ
Date :
4 ส.ค. 2551 18:30:11
By :
timm
ลืมอีกอย่าง บรรทัด for($i=1; $i<$Num_Pages; $i++){
ต้องเป็น for($i=1; $i<=$Num_Pages; $i++){
นะคัรับไม่งั้นจะไม่โชว์ตัวเลขแสดงหน้าที่ 4 ครับ
Date :
5 ส.ค. 2551 06:29:38
By :
timm
Load balance : Server 01