เพื่อนๆ ครับ มีเรื่องรบกวนเพื่อนๆ หน่อยครับ คือว่า อยากได้หน้าเพจทีแสดงทีละ 1 เรคอร์ดเท่านั้นน่ะครับ
ลองเอา LIMIT 1 ต่อท้าย คำสั่ง sql ดูคับ
Code (SQL)
SELECT * FROM list where Agencies='พระตำหนักจักรีบงกช' LIMIT 1
ไม่รู้ผมเข้าใจถูกป่าว
Date :
2013-02-26 09:05:16
By :
poomberry
ได้แล้วคับ ขอบคุณเพื่อนๆ มากเลยครับ ตามรูปเลย
และมี code ตามนี้
Code (PHP)
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>แสดง Record ที่พบเจอตามข้อมูล</title>
</head>
<body>
<?
//---- ตั้งค่า oop เพื่อเข้าใช้ class ของ database
include("class/phpconnectmysql.php");
//**** New class database ****//
$strHost = "localhost";
$strDB = "supplies";
$strUser = "root";
$strPassword = "laekarat";
//เริ่มติดต่อฐานข้อมูล
mysql_connect($strHost,$strUser,$strPassword) or die ("ติดต่อฐานข้อมูลไม่ได้");
//เลือกฐานข้อมูล
mysql_select_db($strDB) or die("เลือกฐานข้อมูลไม่ได้");
mysql_query("SET NAMES UTF8");
//check ว่ามี ค่าตัวแปร $start หรือไม่ ถ้าไม่มีให้ตั้งเป็น 0
//ปล. อันนี้ต้องใช้กับตัวแบ่งนะ ห้ามเอาออก
if(!isset($start)){
$start = 0;
}
$limit = '1'; // แสดงผลหน้าละกี่หัวข้อ
// หาจำนวน record ทั้งหมด
// ปล. อันนี้ต้องใช้กับตัวแบ่งนะ ห้ามเอาออก
$strSQL = mysql_query("SELECT * FROM list where Agencies='พระตำหนักจักรีบงกช'"); // คิวรี คำสั่ง
$total = mysql_num_rows($strSQL); // หาจำนวน record
// คิวรีข้อมูลออกมาเพื่อแสดงผล
$strQuery = mysql_query("SELECT * FROM list where Agencies='พระตำหนักจักรีบงกช' limit $start,$limit");//คิวรี่คำสั่ง
$totalp = mysql_query($strQuery) ;
?>
<table align="center" border="1">
<?php
while($objResult = mysql_fetch_array($strQuery))
{
?>
<tr>
<td >พระตำหนัก</td>
<td colspan="4" align="left"><input name="agencies" type="text" value="<? echo $objResult["agencies"] ?>" </td>
</tr>
<tr>
<td >วัน เดือน ปี</td>
<td colspan="4" align="left"><input name="date_received" type="text" value="<? echo $objResult["dates"] ?>"</td>
</tr>
<tr>
<td> </td>
<td>หน่วยงาน</td>
<td>ประเภทพัสดุ</td>
<td>ลำดับซื้อ</td>
<td>วันที่ซื้อ</td>
</tr>
<tr>
<td>เลขพัสดุ</td>
<? $express= explode("/",$objResult["parcel_number"]); ?>
<td ><input name="First_Label" value="<? echo $express[0] ?>" type="text" </td>
<td ><input name="Second_Label" value="<? echo $express[1] ?>" type="text" </td>
<td ><input name="Third_Label" value="<? echo $express[2] ?>" type="text" </td>
<td align="left"><input name="Four_Label" value="<? echo $express[3] ?>" type="text" id="datepicker1"></td>
</tr>
<tr>
<td height="35"><p>โมเดล</p></td>
<td colspan="4"><input name="model" value="<? echo $objResult["model"] ?>" type="text"></td>
</tr>
<tr>
<td>รายการสินค้า</td>
<td colspan="2"><input name="list" type="text"value="<? echo $objResult["list"] ?>"></td>
<td>ยี่ห้อ</td>
<td><input name="brand" type="text"value="<? echo $objResult["brand"] ?>"></td>
<tr>
<td>สถานที่</td>
<td colspan="4"><input name="place" type="text" value="<? echo $objResult["place_collect"] ?>"></td>
<tr>
<tr>
<td align="left">รูปภาพ :</td>
<td colspan="4" align="left"><img src=<?php echo "myfile/".$objResult["photo"]; ?> width="300" height="300"></td>
</tr>
<tr>
<td align="left">เปลี่ยนรูป</td>
<td colspan="4" align="left"><input type="file" name="filUpload" id="filUpload" OnChange="showPreview(this)">
<img id="imgAvatar"></td>
</tr>
<?
}
?>
</td></tr>
</div>
<?
mysql_close();
?>
</table>
<table width="200" border="1" align="center">
<tr>
<td>ดูเรคอร์ดที่</td>
<td><?
//ตัวแบ่งหน้า
$page = ceil($total/$limit); // เอา record ทั้งหมด หารด้วย จำนวนที่จะแสดงของแต่ละหน้า
//เอาผลหาร มาวน เป็นตัวเลข เรียงกัน เช่น สมมุติว่าหารได้ 3 เอามาวลก็จะได้ 1 2 3
for($i=1;$i<=$page;$i++){
if($_GET['page']==$i){ //ถ้าตัวแปล page ตรง กับ เลขที่วนได้
echo "[<a href='?start=".$limit*($i-1)."&page=$i'><B>$i</B></A>]"; //ลิ้งค์ แบ่งหน้า เงื่อนไขที่ 1
}else{
echo "[<a href='?start=".$limit*($i-1)."&page=$i'>$i</A>]"; //ลิ้งค์ แบ่งหน้า เงื่อนไขที่ 2
}
}
?></td>
</tr>
</table>
</body>
</html>
Date :
2013-02-26 09:50:46
By :
joolawan
ปัญหาเกิดแล้วครับ คือว่า
ถ้าผมเปลี่ยนเป็นการรับค่า agency จากอีกหน้าเวปหนึ่ง แล้ว ปัญหาเกิดตรงที่ว่า เมื่อเลือกตรงเรคอร์ดด้านล่างของเพจ มันจะไม่สามารถแสดงค่าใน table ได้เลยน่ะครับ
Code (PHP)
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>แสดง Record ที่พบเจอตามข้อมูล</title>
</head>
<body>
<?
//---- ตั้งค่า oop เพื่อเข้าใช้ class ของ database
include("class/phpconnectmysql.php");
//**** New class database ****//
$strHost = "localhost";
$strDB = "supplies";
$strUser = "root";
$strPassword = "laekarat";
//เริ่มติดต่อฐานข้อมูล
mysql_connect($strHost,$strUser,$strPassword) or die ("ติดต่อฐานข้อมูลไม่ได้");
//เลือกฐานข้อมูล
mysql_select_db($strDB) or die("เลือกฐานข้อมูลไม่ได้");
mysql_query("SET NAMES UTF8");
//check ว่ามี ค่าตัวแปร $start หรือไม่ ถ้าไม่มีให้ตั้งเป็น 0
//ปล. อันนี้ต้องใช้กับตัวแบ่งนะ ห้ามเอาออก
if(!isset($start)){
$start = 0;
}
$limit = '1'; // แสดงผลหน้าละกี่หัวข้อ
// หาจำนวน record ทั้งหมด
// ปล. อันนี้ต้องใช้กับตัวแบ่งนะ ห้ามเอาออก
$strSQL = mysql_query("SELECT * FROM list where Agencies='".$_POST["place"]."'"); // คิวรี คำสั่ง
$total = mysql_num_rows($strSQL); // หาจำนวน record
// คิวรีข้อมูลออกมาเพื่อแสดงผล
$strQuery = mysql_query("SELECT * FROM list where Agencies='".$_POST["place"]."' limit $start,$limit");//คิวรี่คำสั่ง
$totalp = mysql_num_rows($strQuery) ;
?>
<table align="center" border="1">
<?php
while($objResult = mysql_fetch_array($strQuery))
{
?>
<tr>
<td >พระตำหนัก</td>
<td colspan="4" align="left"><input name="agencies" type="text" value="<? echo $objResult["agencies"] ?>" </td>
</tr>
<tr>
<td >วัน เดือน ปี</td>
<td colspan="4" align="left"><input name="date_received" type="text" value="<? echo $objResult["dates"] ?>"</td>
</tr>
<tr>
<td> </td>
<td>หน่วยงาน</td>
<td>ประเภทพัสดุ</td>
<td>ลำดับซื้อ</td>
<td>วันที่ซื้อ</td>
</tr>
<tr>
<td>เลขพัสดุ</td>
<? $express= explode("/",$objResult["parcel_number"]); ?>
<td ><input name="First_Label" value="<? echo $express[0] ?>" type="text" </td>
<td ><input name="Second_Label" value="<? echo $express[1] ?>" type="text" </td>
<td ><input name="Third_Label" value="<? echo $express[2] ?>" type="text" </td>
<td align="left"><input name="Four_Label" value="<? echo $express[3] ?>" type="text" id="datepicker1"></td>
</tr>
<tr>
<td height="35"><p>โมเดล</p></td>
<td colspan="4"><input name="model" value="<? echo $objResult["model"] ?>" type="text"></td>
</tr>
<tr>
<td>รายการสินค้า</td>
<td colspan="2"><input name="list" type="text"value="<? echo $objResult["list"] ?>"></td>
<td>ยี่ห้อ</td>
<td><input name="brand" type="text"value="<? echo $objResult["brand"] ?>"></td>
<tr>
<td>สถานที่</td>
<td colspan="4"><input name="place" type="text" value="<? echo $objResult["place_collect"] ?>"></td>
<tr>
<tr>
<td align="left">รูปภาพ :</td>
<td colspan="4" align="left"><img src=<?php echo "myfile/".$objResult["photo"]; ?> width="300" height="300"></td>
</tr>
<tr>
<td align="left">เปลี่ยนรูป</td>
<td colspan="4" align="left"><input type="file" name="filUpload" id="filUpload" OnChange="showPreview(this)">
<img id="imgAvatar"></td>
</tr>
<?
}
?>
</td></tr>
</div>
<?
mysql_close();
?>
</table>
<table width="200" border="1" align="center">
<tr>
<td>ดูเรคอร์ดที่</td>
<td><?
//ตัวแบ่งหน้า
$page = ceil($total/$limit); // เอา record ทั้งหมด หารด้วย จำนวนที่จะแสดงของแต่ละหน้า
//เอาผลหาร มาวน เป็นตัวเลข เรียงกัน เช่น สมมุติว่าหารได้ 3 เอามาวนก็จะได้ 1 2 3
for($i=1;$i<=$page;$i++){
if($_GET['page']==$i){ //ถ้าตัวแปล page ตรง กับ เลขที่วนได้
echo "[<a href='?start=".$limit*($i-1)."&page=$i'><B>$i</B></A>]"; //ลิ้งค์ แบ่งหน้า เงื่อนไขที่ 1
}else{
echo "[<a href='?start=".$limit*($i-1)."&page=$i'>$i</A>]"; //ลิ้งค์ แบ่งหน้า เงื่อนไขที่ 2
}
}
?></td>
</tr>
</table>
</body>
</html>
ตามภาพด้านล่าง
และรูปเมื่อเลือกเรคอร์ดที่ 2 เป็นแบบนี้
Date :
2013-02-26 10:58:50
By :
joolawan
ผมสังเกตว่า หากเป็นการ select ทั้งหมด จะไม่มีปัญหา แต่ถ้ามีการ select เป็นบางค่า ตามเงื่อนไขและมีการส่งผ่านค่าระหว่าง หน้าเพจ แล้ว หน้าแรก จะแสดงค่าได้ แต่ว่า ค่าในเพจที่ 2 จะไม่มีค่าอะไรเลย เพื่อนๆ ช่วยหน่อยสิครับ
Date :
2013-02-26 14:24:49
By :
joolawan
แต่ถ้าเปลี่ยนเงื่อนไขของ
$strSQL = mysql_query("SELECT * FROM list where agencies='พระตำหนักจักรีบงกช' ");
แล้วจะสามารถเลือกไปหน้าที่ หนึ่ง สอง ได้ตามต้องการน่ะครับ
Date :
2013-02-26 15:15:23
By :
joolawan
คือว่า ในการเขียนแบ่งหน้าด้วย php น่ะครับ
ถ้าผมใช้
$strSQL= "SELECT * FROM list where agencies='".$agencies."' and dates between '".$date_start."' and '".$date_end."'";
แล้วมันจะไม่แสดง record ที่สองน่ะครับ
แต่ถ้าผมใช้
Code (PHP)
$strSQL= "SELECT * FROM list where agencies='พระตำหนักจักรีบงกช' and dates between '2013-02-01' and '2013-02-26'";
มันจะแสดง record ที่สอง
ผมหมายถึงว่า ผมใช้ หนึ่งหน้าต่อหนึ่ง เรคอร์ด น่ะคับ
ทำอย่างไง จะทำให้ค่าที่เรารับผ่าน
Code (PHP)
$date_start = $_POST["date_start"]; $date_end=$_POST["date_end"];
$agencies = $_POST["agencies"];
เป็นค่าสตริงได้เลยน่ะครับ
รบกวนเพื่อนๆ หน่อยครับ จนปัญญาครับ
ประวัติการแก้ไข 2013-02-27 12:01:57
Date :
2013-02-27 11:00:41
By :
joolawan
ผมลองทำแบบเรียกข้อมูลจาก array มาแสดงผลหน้าละ 1 record มาเป็นตัวอย่างนะครับ
<?php
$result[] = "Record One";
$result[] = "Record Two";
$result[] = "Record Three";
$result[] = "Record Four";
$result[] = "Record Five";
$result[] = "Record Six";
$i=0;
$j=count($result);
while ($i < count($result) && $i !=$j){
echo $result[$page-1];
echo "</br>";
$i++;
$j = ($j+1)-$j;
}
//ตัวแบ่งหน้า
$page = ceil(count($result)/1); // เอา record ทั้งหมด หารด้วย จำนวนที่จะแสดงของแต่ละหน้า
//เอาผลหาร มาวน เป็นตัวเลข เรียงกัน เช่น สมมุติว่าหารได้ 3 เอามาวลก็จะได้ 1 2 3
for($i=1;$i<=$page;$i++){
if($_GET['page']==$i){ //ถ้าตัวแปล page ตรง กับ เลขที่วนได้
echo "[<a href='?start=".$limit*($i-1)."&page=$i'><B>$i</B></A>]"; //ลิ้งค์ แบ่งหน้า เงื่อนไขที่ 1
}else{
echo "[<a href='?start=".$limit*($i-1)."&page=$i'>$i</A>]"; //ลิ้งค์ แบ่งหน้า เงื่อนไขที่ 2
}
}
?>
Date :
2013-02-27 14:15:41
By :
jatekung
ลองส่งค่าผ่าน การเปลี่ยนหน้าไปด้วยครับ
Code (PHP)
echo "[<a href='?start=".$limit*($i-1)."&page=$i&agencies=$agencies&date_start=$date_start&date_end=$date_end'><B>$i</B></A>]"; //ลิ้งค์ แบ่งหน้า เงื่อนไขที่ 1
}else{
echo "[<a href='?start=".$limit*($i-1)."&page=$i&agencies=$agencies&date_start=$date_start&date_end=$date_end'>$i</A>]"; //ลิ้งค์ แบ่งหน้า เงื่อนไขที่ 2
และใช้ method $_GET ในการรับค่าแทน
Code (PHP)
$date_start = $_GET["date_start"];
$date_end=$_GET["date_end"];
$agencies = $_GET["agencies"];
Date :
2013-02-27 15:55:54
By :
jatekung
ใช้ได้แล้วครับ
ขอบคุณเพื่อนๆ มากเลยครับ หลายๆ
Date :
2013-02-27 16:42:16
By :
joolawan
Load balance : Server 00