PDA

View Full Version : سوال: جستجو و چاپ در چندین صفحه



زینب فاطمی
شنبه 03 اسفند 1392, 13:29 عصر
سلام
من از کد زیر برای صفحه بندی استفاده کردم . میخوام یه ایکون جستجو بذارم که نتایج بدست اومده رو بر اساس این کد در چند صفحه نشون بده . قسمت select کد رو چطور برای جستجو تغییر بدم ؟
این کد php صفحه بندی :


<?php
//تعداد آیتم در هر صفحه
$setting = array(
'paged_item' => 2
);
//نام میزبان
$db_host = "localhost";
//MySQL نام کاربری
$db_user = "root";
//MySQL کلمه عبور
$db_password = "";
//نام پایگاه داده
$db_name = "db_test";
//نام جدول
$tb_name = "tb_test";

//اتصال به سرور و پایگاه داده
$connect = mysql_connect("$db_host", "$db_user", "$db_password")
or die(mysql_error());

//انتخاب دیتابیس
mysql_select_db("$db_name")
or die(mysql_error());

//تنظیم کاراکترها سازگار با فارسی
$set = mysql_query("SET NAMES 'utf8'")
or die(mysql_error());

//دریافت صفحه درخواستی
@$page = mysql_real_escape_string($_GET['page']);

//محاسبه شروع انتخاب نتایج
if(empty($page)){
//پیش فرض
$page = 1;
}
$start = ($page - 1) * $setting['paged_item'];

//اجرای پرس و جوی داینامیک و دریافت مقادیر
$query = mysql_query("SELECT id, title, article FROM ".$tb_name." ORDER BY id ASC LIMIT $start, ".$setting['paged_item']."")
or die(mysql_error());

//چاپ خروجی
while($row = mysql_fetch_array($query)){
$id = $row['id'];
$title = $row['title'];
$article = $row['article'];
echo 'مطلب شماره: '.$id.' '.$title.' '.$article.'<br />'."\n";
}

//پرس و جوی تعداد کل ردیف ها
$total = mysql_query("SELECT id FROM ".$tb_name."")
or die(mysql_error());
//مجموع
$count = mysql_num_rows($total);

//بررسی نیاز به صفحه بندی
if($count - $setting['paged_item'] > 0){
//تعداد صفحات
$paged_total = ceil($count / $setting['paged_item']);
//صفحه آخر
$paged_last = $paged_total;
//صفحات میانی
$paged_middle = $page + 4;
//شروع صفحه بندی
$paged_start = $paged_middle - 4;

//ایجاد لینک صفحه نخست
if($page > 1){
//اگر صفحه درخواستی بزرگتر از 1 بود
$paged_result = '<div class="paged-link"><a href="paged_index.php?page=1" title="صفحه نخست">نخست</a></div>'."\n";
}
//غیر فعال کردن لینک صفحه نخست اگر صفحه درخواستی برابر 1 بود
else{
$paged_result = '<div class="paged-link-off">نخست</div>'."\n";
}

//ایجاد لینک صفحه قبلی
if($page > 1){
//محاسبه لینک صفحه قبلی
$paged_perv = $page - 1;
//ایجاد لینک صفحه قبلی
$paged_result .= '<div class="paged-link"><a href="paged_index.php?page='.$paged_perv.'" title="صفحه قبلی">قبلی</a></div>'."\n";
}
//غیر فعال کردن لینک صفحه قبلی اگر صفحه انتخابی برابر 1 بود
else{
$paged_result .= '<div class="paged-link-off">قبلی</div>'."\n";
}

//ایجاد لینک صفحات میانی، شروع از دو شماره قبل
for ($i=$paged_start-2; $i<=$paged_middle; $i++){
//ایجاد لینک در صورتی که صفر، منفی یا از آخرین صفحه بیشتر نباشد
if ($i > 0 && $i <= $paged_last){
//در حالت انتخاب شده
if($i == $page){
$paged_result .= '<div class="paged-link-selected"><a href="paged_index.php?page='.$i.'" title="صفحه '.$i.'">'.$i.'</a></div>'."\n";
}
//در حالت عادی
else{
$paged_result .= '<div class="paged-link"><a href="paged_index.php?page='.$i.'" title="صفحه '.$i.'">'.$i.'</a></div>'."\n";
}
}
}

//نمایش لینک صفحات بعدی
if($page <= $paged_last - 1){
//محاسبه لینک صفحه بعدی
$paged_next = $page + 1;
//ایجاد لینک صفحه بعدی
$paged_result .= '<div class="paged-link"><a href="paged_index.php?page='.$paged_next.'" title="صفحه بعدی">بعدی</a></div>'."\n";
}
//غیر فعال کردن لینک صفحه بعدی اگر صفحه انتخابی برابر صفحه آخر بود
else{
$paged_result .= '<div class="paged-link-off">بعدی</div>'."\n";
}

//لینک صفحه آخر
if($page <= $paged_last - 1){
$paged_result .= '<div class="paged-link"><a href="paged_index.php?page='.$paged_last.'" title="صفحه آخر">آخر</a></div>'."\n";
}
//غیر فعال کردن لینک صفحه آخر اگر صفحه انتخابی برابر صفحه آخر بود
else{
$paged_result .= '<div class="paged-link-off">آخر</div>'."\n";
}

//اطلاعات صفحات
$paged_result .= '<div class="paged-link-info">&raquo; صفحه: '.$page.' از '.$paged_total.'</div>'."\n";
//خروجی
echo $paged_result;
}
else{
echo 'صفحه ای وجود ندارد!'."\n";
}

//پایان اتصال
$close = mysql_close($connect);
?>


اینم css :



<style type="text/css">
.paged-link{
display:inline-block;
line-height:14px;
float:right;
margin:2px;
}
.paged-link a{
display:inline-block;
border:#06C 1px solid;
padding:2px;
text-decoration:none;
}
.paged-link a:hover{
border:#900 1px solid;
}
.paged-link-selected{
display:inline-block;
line-height:14px;
float:right;
margin:2px;
}
.paged-link-selected a{
display:inline-block;
border:#900 1px solid;
padding:2px;
text-decoration:none;
}
.paged-link-selected a:hover{
border:#900 1px solid;
}
.paged-link-off{
display:inline-block;
border:#06C 1px solid;
padding:2px;
color:#CCC;
line-height:14px;
float:right;
margin:2px;
}
.paged-link-info{
display:inline-block;
float:left;
padding:2px;
color:#666;
line-height:14px;
margin:2px;
font-size:11px;
}
</style>

***BiDaK***
شنبه 03 اسفند 1392, 14:05 عصر
برای جستجو میتونی از LIKE استفاده کنی.

WHERE `title` LIKE '%key%'

زینب فاطمی
شنبه 03 اسفند 1392, 14:22 عصر
سلام
ممنون
بله منم خط 40 قبل order گذاشتم ولی عمل نکرد برای همین پرسیدم .
سوال دوم اینکه میشه یه تکس باکس گذاشت ولی تو تمام فیلد های جدول اون کلمه رو جستجو کرد ؟

***BiDaK***
شنبه 03 اسفند 1392, 14:46 عصر
از این هم میتونین استفاده کنین:

LIKE CONCAT('%',name,'%')
میتونین از OR استفاده کنید برای چک کردن فیلد های دیگه.

زینب فاطمی
شنبه 03 اسفند 1392, 15:09 عصر
ممنون حل شد.