ช่วยดูโค้ดให้หน่อยนะคะ อยากให้เวลาที่เรากดค้นหามันแสดงข้อมูลมาหมดเล
Code (PHP)
<?php
$hostname = "localhost";
$username = "root";
$password = "1234";
$dbname = "datatest";
$conn = mysql_connect( $hostname, $username, $password );
mysql_query("SET NAMES UTF8");
if ( ! $conn )die ( "ไม่สามารถติดต่อฐานข้อมูล MySQL ได้ " );
mysql_select_db ( $dbname, $conn )or die ( "ไม่สามารถเลือกฐานข้อมูล datatest ได้" );
//----------------คำสั่ง SQL ให้เลือกใช้งานตาราง ------------------------------//
$sql = "SELECT * FROM data order by P_id desc";
//--------------กำหนดจำนวนข้อมูลแสดงผลต่อ 1 หน้า ---------------------------//
$per_page = 5;
//$page_start =0;
//-----------------------------------------------------------------------//
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 "จำนวน $page มากกว่า $num_pages";
//-------------------คำสั่ง SQL กำหนดลิมิต ให้แสดงผลต่อ 1 หน้า---------------------------//
$sql .= " LIMIT $page_start, $per_page";
$result = mysql_query( $sql );
$dbquery = mysql_db_query($dbname,$sql);
$cols = 5; //กำหนดจำนวนคอลั่ม
$c = $cols;
?>
<table width="100%" border="0"><tr>
<?
while($result = mysql_fetch_array( $dbquery)) {
$c --;
?>
<?
if($c == 0) {
$c = $cols;
?></tr> <? } } ?> </table>
<br /><br /><!- - แสดงผลจำนวนเรคคอร์ดของข้อมูล จำนวนหน้าและลิงค์หน้าต่อๆไป - - !>
รวม <b><?php echo $count; ?></b> แสดงอยู่ <b><?php echo ceil( $count / $per_page );?></b> หน้า <br />
<?php //------------------- สร้างปุ่มย้อนกลับ -------------------------//
if ( $prev_page )
echo "<a href=\"$PHP_SELF?page=$prev_page\"><<กลับไป </a>";
//--------------------- สร้างตัวเลขหน้า -----------------------------//
for ( $i=1; $i<=$num_pages; $i++ )
{
if ( $i != $page)
echo "[<a href=\"$PHP_SELF?page=$i\">$i</a>]";
else
echo " <b>$i</b> ";
}
//-------------------- สร้างปุ่มเดินหน้า --------------------------------//
if ( $page != $num_pages )
echo "<a href=\"$PHP_SELF?page=$next_page\"> หน้าต่อไป >></a>";
?>
<?php
//-------------ค้นหา
if(isset($_REQUEST['text_search']) && trim($_REQUEST['text_search'])!= ""){
$txt_search = $_REQUEST['text_search'];
$search_type = $_REQUEST['search_type'];
//echo $search_type;
switch ($search_type){
case 2: $where = "P_id=" . $txt_search ; break;
case 3: $where = "Name LIKE '%" . $txt_search . "%'"; break;
}
$sql_data = "SELECT P_id,Name,Address,Tel,Mobile,Fax,Email,Education,Course,
Institution FROM data WHERE " .$where. " ORDER BY P_id desc LIMIT $page_start, $per_page";
$count = mysql_num_rows(mysql_db_query($dbname,$sql_data));
}
else{if($page_start=="")$page_start=0;
if($per_page=="")$per_page=5;
$sql_data = "SELECT P_id,Name,Address,Tel,Mobile,Fax,Email,Education,Course,
Institution FROM data ORDER BY P_id desc LIMIT $page_start, $per_page";
$count = mysql_num_rows(mysql_db_query($dbname,$sql_data));
}
//echo $sql_data;
$data_result = mysql_db_query($dbname,$sql_data);
mysql_close ($conn );
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<style type="text/css">
<!--
.style2 {font-size: 16px; font-weight: bold; color: #FF0000;}
.style3 {color: #000000}
.style4 {color: #0000FF}
-->
</style>
</head>
<body onload='document.Add1.text_search.focus();'>
<table width="1300" border="1">
<form action='Show1.php' method='post' >
<tr>
<td colspan="18" align='center' bgcolor="#00CCFF" class="style2 style3">แสดงข้อมูล</td>
</tr>
<tr>
<td colspan="18" align='center' bgcolor="#00CCFF"><input name="text_search" type="text" value="<?=$txt_search?>">
<select name="search_type">
<option value='1'type="<? search_type?>">-คำค้นหา-</option>
<option value='2'type="<? search_type?>">รหัส</option>
<option value='3'type="<? search_type?>">ชื่อ</option>
</select>
<input name="cmd_Search" type="submit" id="cmd_Search"value="ค้นหา"> </tr>
</form>
<tr align='center'>
<td width="28" bgcolor="#00CC99"><span class="style4">ลำดับ</span></td>
<td width="100" bgcolor="#00CC99"><span class="style4">ชื่อ</span></td>
<td width="217" bgcolor="#00CC99"><span class="style4">ที่อยู่</span></td>
<td width="95" bgcolor="#00CC99"><span class="style4">เบอร์โทรศัพท์</span></td>
<td width="86" bgcolor="#00CC99"><span class="style4">มือถือ</span></td>
<td width="93" bgcolor="#00CC99"><span class="style4">แฟกซ์</span></td>
<td width="98" bgcolor="#00CC99"><span class="style4">อีเมลล์</span></td>
<td width="76" bgcolor="#00CC99"><span class="style4">การศึกษา</span></td>
<td width="158" bgcolor="#00CC99"><span class="style4">สาขา</span></td>
<td width="165" bgcolor="#00CC99"><span class="style4">มหาวิทยาลัย</span></td>
<td width="61" bgcolor="#00CC99"><span class="style4">แก้ไข</span></td>
<td width="47" bgcolor="#00CC99"><span class="style4">ลบ</span></td>
</tr>
<?php
if($data_result){ // ถ้ามีข้อมูลอยู่แล้วให้โชว์ data result
$i = 1;
while($rows = mysql_fetch_array($data_result)){//query ก็สอบถามไปยัง database โดยส่ง command ไป
//จะ return ค่า เป็น resource กลับมาก้อนนึง $data_result ก็คือค่า ที่เรามา fetch
//whileตัวนี้จะหลุดจาก loop เมื่อ มัน fetch หมดทุกๆ ค่า//mysql_fetch_array จะดึงค่า ออกมาที ละ row
//ถ้าเมื่อ fetch ค่าไม่หมดจะเป็น while( True )//เมื่อ fetch ค่าทุกๆ ออกมาหมดแล้ว จะเป็น while ( false )
//while ตัวนี้จะหลุดจาก loop เมื่อ มัน fetch หมดทุกๆค่าและหยุดการทำงาน
$P_id = $rows['P_id'];
$Name = $rows['Name'];
$Address = $rows['Address'];
$Tel = $rows['Tel'];
$Mobile = $rows['Mobile'];
$Fax = $rows['Fax'];
$Email = $rows['Email'];
$Education = $rows['Education'];
$Course = $rows['Course'];
$Institution = $rows['Institution'];
//-----------ค้นหาตามคีย์เวิร์ด---------//
$keyword = $_REQUEST['text_search'];// สมมติว่า keyword เท่ากับ text_search
$replace = "<span style='color:red'>{$keyword}</span>"; // ใส่สีให้ keyword
$original = $Name; // string ทั้งหมดที่ query มา
$Name = str_replace($keyword,$replace,$original);
//-----------------
echo $result;
echo "<tr>";
echo "<td align='center' bgcolor='#FF9933'>" . $i . "</td>" ;
//echo "<td align='center'>" . $P_id . "</td>" ;
echo "<td bgcolor='#FFFF99'>" . $Name . "</td>" ;
echo "<td bgcolor='#FFFF99'>" . $Address. "</td>" ;
echo "<td bgcolor='#FFFF99'>" . $Tel. "</td>" ;
echo "<td bgcolor='#FFFF99'>" . $Mobile. "</td>" ;
echo "<td bgcolor='#FFFF99'>" . $Fax. "</td>" ;
echo "<td bgcolor='#FFFF99'>" . $Email. "</td>" ;
echo "<td bgcolor='#FFFF99'>" . $Education. "</td>" ;
echo "<td bgcolor='#FFFF99'>" . $Course. "</td>" ;
echo "<td bgcolor='#FFFF99'>". $Institution."</td>" ;
echo "<td align='center'bgcolor='#999999'><a href='Edit1.php?P_id=" .$P_id . "'>แก้ไข</a></td>" ;
echo "<td align='center'bgcolor='#999999'><a href='Delete1.php?P_id=" .$P_id . "'>ลบ</a></td>" ;
echo "</tr>";
$i++;
}
}
//----------------- ปิดการเชื่อมต่อฐานข้อมูล -------------------------//
//mysql_close( $connect_mysql );
?>
<tr nowrap>
<td height="28" colspan="18"align='center' bgcolor="#CC33CC">
<form action='Add1.php' method='post'>
<input name="cmd_Add" type="submit" id="cmd_Add" value="เพิ่มข้อมูล"onclick="javascript: location.href='Add1.php';">
</form></td>
</tr>
</table>
<body>
</html>
ช่วยดูโค้ดให้หน่อยนะคะ อยากให้เวลาที่เรากดค้นหามันแสดงข้อมูลมาหมดเลย แต่เวลาที่เราใส่คีย์เวิร์ดลงไปด้วยก้อให้แสดงเฉพาะคียืเวิร์ดที่เราต้องการให้แสดงนะคะ ไม่ให้แสดงหมด เพราะตอนนี้ไม่ว่าจะใส่คีย์เวิณ์ดไรลงไปมันก้อแสดงข้อมูลทั้งหมดเลย งะ แก้ไม่ได้งะ เขียนปนกันจนตัวเองงงหมดแล้วคะ ไม่เปงระบบระเบียบด้วย ใครที่เก่งๆดูโค้ดให้หน่อยนะคะ ขอร้องละคะ พลีสTag : - - - -
Date :
2010-01-05 11:23:47
By :
kakaka
View :
1134
Reply :
14
ตาลายนะคับ คือให้ทำการตรวจสอบว่า เป็นการค้นหาหรือไม่ก่อน ให้ปรับ sql ให้ตรงว่าจะเป็นปรกติ หรือ search แล้วค่อยคิวรี่ทีเดียวคับคือตรวจสอบก่อนว่า ค้นหาหรือไม่ก่อน แล้วค่อยสั่งคิวรี่ตามที่ต้องการ
Date :
2010-01-05 11:39:47
By :
pjgunner
ของผมทำแบบนี้ อ่ะครับ
Code (PHP)
$search=$_REQUEST[search];
$keyword=$_REQUEST[keyword];
if($op=="search"){
$prd="SELECT * FROM product WHERE (product.p_code LIKE '%$keyword%' OR product.p_name LIKE '%$keyword%' $type) ORDER BY product.p_code ASC";
}else{
$prd="SELECT * FROM product ORDER BY product.p_code ASC";
}
ลองเอาไปประยุกต์ดูครับ
Date :
2010-01-05 11:53:32
By :
yomaster
Code (PHP)
if(isset($_GET['search']) && $_GET['search'] != "" )
{
$search = " where c_name like '%".$_GET['search']."%'";
}
$query_cus = "SELECT * FROM customer $search "; // อันนี้เอาไว้ หาจำนวนทั้งหมดข้อมูล เอาไว้สร้างลิ้ง
$all_cus = mysql_query($query_cus);
$total = mysql_num_rows($all_cus);
$totalPages_cus = ceil($total/$maxRows_cus)-1;
// ส่วนอันนี้ เอาไว้ ดึงข้อมูลที่จะแสดงในแต่ล่ะหน้า
$query_limit_cus = sprintf("%s LIMIT %d, %d", $query_cus, $startRow_cus, $maxRows_cus);
$cus = mysql_query($query_limit_cus) or die(mysql_error());
// ส่วนการแสดงผล
while($row_c=mysql_fetch_array($cus )){
// blah blah
// blah blah
// blah blah
}
Date :
2010-01-05 13:56:17
By :
lozomac
แต่ว่าตอนที่ค้นหาจะมีการค้นหาแบบไม่ต้องใส่คีย์เวิร์ด กดค้นหาไปเลยแล้วมันแสดง กับค้นหาอีกแบบเป็น ค้นหาแบบมีคีย์เวิร์ดนะคะ จะให้มันตรวจสอบทีเดียวเลยได้ไหมคะ หรือว่ายังไง โปรดมาให้ความกระจ่างอีกรอบได้ไหมคะ ไม่เข้าใจอยู่ดีอ่าคะ ตอนนี้สับสนว่าจะให้อันไหนมันทำก่อนหลังงะ ขอบคุณที่มาให้คำแนะนำนะคะ แต่ขออีกนิดนึง คะ เกือบจะเข้าใจละคะ แต่ก้อยัง คิคิ
Date :
2010-01-05 14:44:20
By :
kakaka
อ่อ พอ จะ เข้า ใจ แล้ว คะ เด่ว จะ ลอง เอา ไป ประ ยุกต์ ใช้ ดู นะ คะ
ขอบ คุน มาก ๆ นะ คะ
Date :
2010-01-05 15:16:19
By :
kakaka
ใช้ $_REQUEST[keyword];
และ $_REQUEST[search];
ดีกว่าครับ
ตัดปัญหา เรื่อง การรับค่าแบบ GET หรือ POST
แล้วก็เอาไปเข้าเงื่อนไข คุณ A-mac
หรือของผมก็ได้ ^-^
Date :
2010-01-06 09:18:34
By :
yomaster
Code (PHP)
//-----------ค้นหาตามคีย์เวิร์ด---------//
$keyword = $_REQUEST['text_search'];// สมมติว่า keyword เท่ากับ text_search
$replace = "<span style='color:red'>{$keyword}</span>"; // ใส่สีให้ keyword
$original = $Name; // string ทั้งหมดที่ query มา
$Name = str_replace($keyword,$replace,$original);
//-----------------
//-------------ค้นหา
if(isset($_REQUEST['text_search']) && trim($_REQUEST['text_search'])!= ""){
$txt_search = $_REQUEST['text_search'];
$search_type = $_REQUEST['search_type'];
switch ($search_type){
case 2: $where = "P_id=" . $txt_search ; break;
case 3: $where = "Name LIKE '%" . $txt_search . "%'"; break;
}
$sql_data = "SELECT P_id,Name,Address,Tel,Mobile,Fax,Email,Education,Course,
Institution FROM data WHERE " .$where. " ORDER BY P_id desc LIMIT $page_start, $per_page";}
//$count = mysql_num_rows(mysql_db_query($dbname,$sql_data));
else{
$sql_data = "SELECT P_id,Name,Address,Tel,Mobile,Fax,Email,Education,Course,
Institution FROM data ORDER BY P_id desc LIMIT $page_start, $per_page";}
//$count = mysql_num_rows(mysql_db_query($dbname,$sql_data))};
$data_result = mysql_db_query($dbname,$sql_data);
Code
ลองทำแล้วมันไม่ได้อยู่ดีคะ หรือทำไม่ถูกก้อไม่รุ้คะ ตรงค้นหาเนี่ยคะที่จะให้แบบตรงอันนี้นะคะ
if(isset($_REQUEST['text_search']) && trim($_REQUEST['text_search'])!= ""){
เขียนแบบนี้ใช้กรณีไหนได้บ้างคะ ถ้าเราไม่เขียนแบบนี้เขียนแบบอื่นได้ไหมคะ
คือ ถ้าtext_searchมันเปงช่องว่างเวลากดค้นหาเลยให้มันแสดงทั้งหมด แต่ถ้าคีย์เวิร์ดก้อทำต่างหาก
อยากให้มันรวมอยู่ด้วยกันเลยคะ ทั้งค้นหาธรรมดาหรือตามคีย์เวิร์ดนะคะ
Date :
2010-01-06 14:17:31
By :
kakaka
ูู^^ดูโค้ดให้หน่อยคร้า Y-Y
Date :
2010-01-06 14:54:11
By :
kakaka
ก็น่าจะถูกแล้วนี่ครับ ลอง แสดงคำสั่ง sql ออมาดูครับ
Date :
2010-01-06 16:31:34
By :
lozomac
Date :
2010-01-06 19:12:35
By :
s
คะได้แล้วคะ ขอบคุนสำหรับคำแนะนำนะคะ
Date :
2010-01-07 09:11:40
By :
kakaka
Code (PHP)
$page_start=0;
$per_page=5;
//-------------ค้นหา
if(isset($_REQUEST['text_search']) && trim($_REQUEST['text_search'])!= ""){
$txt_search = $_REQUEST['text_search'];
$search_type = $_REQUEST['search_type'];
switch ($search_type){
case 2: $where = "P_id=" . $txt_search ; break;
case 3: $where = "Name LIKE '%" . $txt_search . "%'"; break;
}
$sql_data = "SELECT P_id,Name,Address,Tel,Mobile,Fax,Email,Education,Course,
Institution FROM data WHERE " .$where. " ORDER BY P_id desc LIMIT $page_start, $per_page";
$count = mysql_num_rows(mysql_db_query($dbname,$sql_data));}
else{
$sql_data = "SELECT P_id,Name,Address,Tel,Mobile,Fax,Email,Education,Course,
Institution FROM data ORDER BY P_id desc LIMIT $page_start, $per_page";
$count = mysql_num_rows(mysql_db_query($dbname,$sql_data));}
$data_result = mysql_db_query($dbname,$sql_data);
//--------------กำหนดจำนวนข้อมูลแสดงผลต่อ 1 หน้า ---------------------------//
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( $data_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 "จำนวน $page มากกว่า $num_pages";
//-------------------คำสั่ง SQL กำหนดลิมิต ให้แสดงผลต่อ 1 หน้า---------------------------//
$sql .= " LIMIT $page_start, $per_page";
$result = mysql_query( $sql );
$dbquery = mysql_db_query($dbname,$sql);
$cols = 5; //กำหนดจำนวนคอลั่ม
$c = $cols;
$c --;
?>
<table width="100%" border="0"><tr>
<?
if($c == 0) {
$c = $cols;
?></tr> <? } ?> </table>
<br /><br /><!- - แสดงผลจำนวนเรคคอร์ดของข้อมูล จำนวนหน้าและลิงค์หน้าต่อๆไป - - !>
รวม <b><?php echo $num_rows; ?></b> แสดงอยู่ <b><?php echo $num_pages; ?></b> หน้า <br />
<?php //------------------- สร้างปุ่มย้อนกลับ -------------------------//
if ( $prev_page )
echo "<a href=\"$PHP_SELF?page=$prev_page\"><<กลับไป </a>";
//--------------------- สร้างตัวเลขหน้า -----------------------------//
for ( $i=1; $i<=$num_pages; $i++ )
{
if ( $i != $page)
echo "[<a href=\"$PHP_SELF?page=$i\">$i</a>]";
else
echo " <b>$i</b> ";
}
//-------------------- สร้างปุ่มเดินหน้า --------------------------------//
if ( $page != $num_pages )
echo "<a href=\"$PHP_SELF?page=$next_page\"> หน้าต่อไป >></a>";
?>
Code
ดูโค้ดให้อีกนิดคะ ข้อมูลมีทั้งหมด 16 record แต่มันแสดงแค่ 5 ตามที่กำหนดจำนวนแสดงต่อหน้านะคะ
เพจมันมะแบ่งให้อ่าคะ ไม่รุ้ผิดตรงไหนงะ ดูให้หน่อยนะคะ อยากให้มันแสดงทั้งหมดและแบ่งหน้าด้วยนะคะ
Date :
2010-01-07 12:10:07
By :
kakaka
ช่วยดูโค้ดให้ด้วยนะคะ อันใหม่คะข้างบนเนี่ยคะ
Date :
2010-01-07 13:21:53
By :
kakaka
Load balance : Server 05