PDA

View Full Version : سوال: سوال درباره صفحه بندی



raha1234567
دوشنبه 03 آذر 1393, 23:01 عصر
سلااااام من الان داشتم درباره صفحه بندی میخوندم یه عاااااااااااااالم سوال اومد به ذهنم:

1. آیا صفحات خودمون رو باید از قبل ساخته باشیم؟؟؟؟؟؟؟؟؟
خب اگه این جور باشه که نمیدونم به چند صفحه نیاز دارم شاید در یک سرچ به 10 صفحه نیاز داشته باشم و در سرچ دیگه 1 صفحه و مقدار این متغییر هست و من نمیدونم باید چند صفحه از پیش بسازم؟؟؟؟؟؟؟؟

2. من نفهمیدم این کد چه میکند؟؟؟؟


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


3.این کد میاد مقادیر نام برده شده رو میگیره و به تعدادی که خواسته در صفحه نمایش میده مثلا 5 تاش رو
حالا منی که میخوام جستوجو رو از تکس باکس انجام بده چه باید بکنم؟؟؟؟/
بعدم این id چکار میکنه یعنی من باید توی دیتابیسم id داشته باشم؟؟؟؟؟؟؟؟؟؟؟؟؟



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



4. در توضیحات گفته تعداد کل ردیف های دیتابیس رو باید بدونیم تا لینک ایجا شه بین صفحات ..... یعنی کلش یا برا هر جست جویی جدا هست؟؟؟؟؟؟؟؟
یعنی اگه جست جو درباره کفش بود باید تعداد ردیفهای که کفش هست رو بگه ؟؟؟

H:Shojaei
سه شنبه 04 آذر 1393, 00:20 صبح
سلام
صفحه ای از قبل ساخته نمیشه همش تو یه صفحس
ما کلا یه مقدار داریم که شماره صفحه هست و میتونه از هر جایی بیاد از یه فرم یا از یه لینک یا...
با این شماره صفحه مطالبی رو که در بازه اون صفحه تو دیتابیس هست رو نمایش میدیم (البته بستگی به تعداد پست در هر صفحه داره...)
مثلا تعداد مطلب از هر صفحه 10تاس و روی لینکی که مربوط به صفحه شماره 5 هست کلیک شده حالا چه بازه ای از داده ها رو باید نشون بدیم؟
هر صفحه 10 مطلب و تعداد صفحات هم 5 تا پس 5*10=50 حالا میفهمیم که باید از رکورد شماره 50 شروع کنیم و تا 60 بخونیم...
2-شما وقتی وارد صفحه بشید و چیزی مقدار صفحه رو ارسال نکنید پس باید صفحه ی 1 به شما نمایش داده بشه بنابراین اگه متقیر مربوطه خالی بود مقدار 1 رو میذاریم توش...
3- واسه جستجو فقط شما به کدی که هست یه where اضافه کنید و شرط رو بذارید کار خودشو میکنه بازم
اگه ترتیب داده های ذخیره شده مهمه واستون باید یه id که autoincrement هم هست رو به جدول اضافه کنید ولی اگه نیازی به این که ترتیب مطالب چی باشه ندارین مهم نیست
4-شما هر جستوجویی که میزنید یه کوئری هم با شرطهای همون جستجو باید داشته باشین که تعداد کل سطر هایی رو که جستوجو کرده رو بهتون بده...

id1385
سه شنبه 04 آذر 1393, 00:24 صبح
با سلام
صفحات شما داینامیک ساخته میشن، شما کافیه شماره صفحه و اینکه در هر صفحه چه تعداد از دیتاها باید نمایش داده شوند مثلاً الان صفحه 1 هستیم و در هر صفحه 10 رکورد داریم، بقیش به صورت داینامیک ساخته میشه. کد زیر یه نمونه هستش. قبلاً یه فایلی برای یکی از سوالای شما آپلود کردم توی اون همین فانکشن هم هست.

private function GetTableValues($GetonlyActive = false) {
// where clause
$sWhere = '';
if (isset($this->childOf) && strlen($this->childOf) > 0) {
$sWhere = " WHERE `ParentId` = '" . VWA::TranslateToken($this->childOf) . "';";
}
if (isset($this->viewType) && $this->viewType === 'AsTree') {
$sWhere = " WHERE `ParentId` = '-1'";
}


// new instance of PDO
$dBA = new mPDo(VWA::theConfig());

// select data
$this->sql = "SELECT * FROM `" . VWA::getConfigValues('tble_prefix') . $this->PAGEID . '`' . $sWhere;

// run sql
$QueryResults = $dBA->query($this->sql);

// get row count
$this->total_rows = $QueryResults->rowCount();

// if found
if ($this->total_rows > 0) {


// Calculat max page number
$this->max_pages = ceil($this->total_rows / $this->rows_per_page);
if ($this->links_per_page > $this->max_pages) {
$this->links_per_page = $this->max_pages;
}


// check is current page grater than max page or not
if ($this->page > $this->max_pages || $this->page <= 0) {
$this->page = 1;
}


// get offset
$this->offset = $this->rows_per_page * ($this->page - 1);

// create sql with order and offset
$this->sql = ($this->sql . " ORDER BY `" . $this->sortBy . "` " . $this->orderBy . " LIMIT {$this->offset}, {$this->rows_per_page}");


// run sql
$QueryResult = $dBA->pdoQuery($this->sql);

// if found
if ($QueryResult->affectedRows() > 0) {
// get result as array
$QueryArray = $QueryResult->_featch;

// is array (is found)
if (is_array($QueryArray) && count($QueryArray) > 0) {

// return data as array
return $QueryArray;
}
}
}

// if !=found
return array();
}

raha1234567
سه شنبه 04 آذر 1393, 13:38 عصر
دوستاااااان من کد هام رو نوشتم صفحه اول رو نمایش میده ولیییی بقیه رو نه!!!!



<?php
$num_rec_per_page=1;
mysql_connect('localhost','root','');
mysql_query("SET Names 'utf8'");

mysql_select_db('jobs');
if (isset($_GET["page"])) { $page = $_GET["page"]; } else { $page=1; };
$start_from = ($page-1) * $num_rec_per_page;



$sql ="SELECT id,pic FROM `page` WHERE `tsearch` LIKE '".$_POST["tsearch"]."' LIMIT $start_from, $num_rec_per_page";
$rs_result = mysql_query ($sql); //run the query
?>
<table>
<?php
while ($row = mysql_fetch_assoc($rs_result))
{
?>


<tr>
<td><?php echo'<img src="'.$row['pic'].'">'; ?></td>
</tr>
<?php
};
?>
</table>
<?php
$sql = "SELECT * FROM `page` WHERE `tsearch` LIKE '".$_POST["tsearch"]."'";
$rs_result = mysql_query($sql); //run the query
$total_records = mysql_num_rows($rs_result); //count number of records
$total_pages = ceil($total_records / $num_rec_per_page);

echo "<a href='pagination.php?page=1'>".'|<'."</a> "; // Goto 1st page

for ($i=1; $i<=$total_pages; $i++) {
echo "<a href='pagination.php?page=".$i."'>".$i."</a> ";
};
echo "<a href='pagination.php?page=$total_pages'>".'>|'."</a> "; // Goto last page
?>

H:Shojaei
سه شنبه 04 آذر 1393, 14:17 عصر
خوب ارور که معلومه دیگه گفته صفحه pagination پیدا نشد...
همین فایلی که این کدها توشه اسمش چیه هرچی هست توی تگهای a تو آدرس دهیش(جلوی href) نام رو به جای pagination.php بنویسید

raha1234567
سه شنبه 04 آذر 1393, 14:44 عصر
ببخشید اشتاباهییییی گذاشتم سوالم رو ...........
صفحه بندیم رو نشون میده صفحاتم رو هم نشون میده ولی عکسای صفحات بعدم رو نشون نمیده
وقتی هم به عقب برمی گردی دیگه چیزی نمایش تنیده

این ارور رو قبلش میداد اشتباهی گذاشتم
ارورهایی که میده رو فهمیدم برا چی هست بخاطر اینکه با mysql مینویسم

H:Shojaei
سه شنبه 04 آذر 1393, 14:57 عصر
دلیلش اینه که شما نمیتونید همزمان هم به روش get و هم post به یک پیج داده ارسال کنید در صورتی که شما این کار رو کردین...
کدها رو باید به این صورت تغییر بدین:
کوئری رو به این شک کنید:
$sql ="SELECT id,pic FROM `page` WHERE `tsearch` LIKE '".$_GET["tsearch"]."' LIMIT $start_from, $num_rec_per_page";
و لینکهای صفحات رو هم به این شکل:
echo "<a href='pagination.php?page=".$i."&tsearch=valueToSearch'>".$i."</a> ";

raha1234567
سه شنبه 04 آذر 1393, 15:00 عصر
echo"<a href='pagination.php?page=".$i."&tsearch=valueToSearch'>".$i."</a> ";


مرسی بعد دقیقا این کد چه میکنه ....

H:Shojaei
سه شنبه 04 آذر 1393, 19:07 عصر
مرسی بعد دقیقا این کد چه میکنه ....
این کد یه لینک هست که مقادیر رو واسه کوئری که قراره اجرا بشه و اطلاعات رو برگردونه میفرسته و اون مقدار tsearch همیشه یه مقدار ثابت هم هست همون مقداری که قراره جستجو بشه

raha1234567
سه شنبه 04 آذر 1393, 20:19 عصر
ولی هنوز همون ایراد رو داره که.....:افسرده:

H:Shojaei
سه شنبه 04 آذر 1393, 23:33 عصر
بعد این خط:
$sql ="SELECT id,pic FROM `page` WHERE `tsearch` LIKE '".$_POST["tsearch"]."' LIMIT $start_from, $num_rec_per_page";
مقداری که داخل $sql میریزه رو echo کنید و تو بروزر کوئری که چاپ شده رو کپی کنید و ببریدش تو mysql قسمت اجرای کد sql انجا اجراش کنید واسه ه پیجی که خطا میده این کارو بکنید میبینید که کوئری مشکل داره و باید رفعش کنید...