PDA

View Full Version : سوال: نمایش اطلاعات به صورت چند صفحه ای



mahnaz_tbe
سه شنبه 06 بهمن 1388, 11:36 صبح
سلام.اگه میشه زودتر منو راهنمائی کنید.من دارم چندین تا فیلد رو از چندین تا جدول select می کنم.حالا می خوام اطلاعات رو توی چندین صفحه به کاربر نشون بدم.یعنی مثلاً تیکه تیکه اطلاعات رو select کنم یا اصلاً نه یه باره select کنم بعد بگم تو صفحه های مختلف نشون بده.نمی دونم.حالا هر کدوم بهتر هستش و زودتر صفحه رو لود می کنه.ولی نمی دونم چجوری این کار رو انجام بدم.search کردم ولی چون همه از دستورات خاصی که من تا حالا به گوشمم نخورده استفاده کردن چیزی دستگیرم نشد.به فکرم رسید اول تعداد رکوردهای select شده رو بدست بیارم.بعد تقسیم کنم به تعدادی که می خوام تو هر صفحه نشون داده بشه.بعد پائین صفحه به این تعداد شماره بگذارم و از اینا.ولی فکر نکنم درست باشه.نمی دونم چیکار کنم.فقط به این توجه کنید که من یه تعداد فیلد رو از چندین جدول که با هم Join شدند select می کنم.میشه منو زودتر راهنمائی کنید؟:افسرده::ناراحت:
یکی از کدهائی که بهش بر خوردم اینه.شما ازش سر در میارین؟


$str="SELECT COUNT(*) FROM your_table_name_here";
Declare @PageNumber int
set @PageNumber = 1
Declare @PageSize int
Set @PageSize = 10
select * from
(Select *,Row_number() Over (Order by GetDate()) as Row from TABLENAME) T
Where Row Between (@PageNumber - 1) * @PageSize + 1 and @PageNumber * @PageSize

digitak
سه شنبه 06 بهمن 1388, 15:15 عصر
به کدت نمیاد PHP باشه !

mahnaz_tbe
سه شنبه 06 بهمن 1388, 17:19 عصر
قبلا گفته شده , سرچ کنید ! باید توی کوئری limit قرار بدی و بقیه موارد ...
قبل از اینکه شما بگی من search کردم.یه پروژه هم به تورم خورد.ولی خطا داره.علاوه بر این متوجه نمی شم چیکار کرده.اجرا هم که نمیشه.
:ناراحت:

امیـرحسین
سه شنبه 06 بهمن 1388, 18:11 عصر
نمایش رکوردها با تعداد خاص (http://www.barnamenevis.org/forum/showthread.php?p=865206)

mahnaz_tbe
چهارشنبه 07 بهمن 1388, 12:05 عصر
نمایش رکوردها با تعداد خاص (http://www.barnamenevis.org/forum/showthread.php?p=865206)

می گم تو این کدی که تو اون صفحه گذاشتین یه جا نوشین


$totalPages = ceil($resultsPerPage, $row[0]);

این خط خطا داشت.بعد من Search کردم دیدم تابع Ceil فقط یه آرگومان داره.بعد $row[0] رو پاکش کردم.خطاش درست شده.این واسه چی بود؟

mahnaz_tbe
چهارشنبه 07 بهمن 1388, 12:13 عصر
آقا من خدائی یه کم ناشی هستم.منو یه کم بیشتر راهنمائی کنید.یعنی مثلاً کدهام رو اینطوری بنویسم؟


<?




require_once("../includes/connect.inc.php");


$page = '3';
$page--;
$resultsPerPage = 2;
$sql = "SELECT * FROM specs LIMIT $page,$resultsPerPage";
print $sql;
$select = mysql_query($sql);
while ($d=mysql_fetch_assoc($select))
{
?>
<table width="600" border="1" cellspacing="0" cellpadding="0">
<tr>
<td><? print $d["username"]; ?></td>
<td><? print $d["name_branch"]; ?></td>
<td><? print $d["date_require_day"]; ?></td>
<td><? print $d["date_require_mnd"]; ?></td>
<td><? print $d["date_require_year"]; ?></td>
<td><? print $d["time_require"]; ?></td>
</tr>
</table>


<?
}
$sqlCount = "SELECT COUNT(username) FROM specs;";
print $sqlCount;
$row = mysql_fetch_row( mysql_query($sqlCount) );
$totalPages = ceil($resultsPerPage);
print $totalPages . "kkkkkkkk";
for($i=1 ; $i<=$totalPages; $i++) {
if($i == ($page+1))
echo $i;
else
echo '<a href="untitled.php?page=' .$i. '">' .$i. '</a>';
}
?>


لطفاً به عکس ضمیمه نیگاه کنید.اینجائی که دورش خط کشیدم مربوط میشه به جائی که من باید محتویات رو تو صفحه نشون بدم.جائی که نوشتم درسته؟آخه وقتی اجرا می کنم توی صفحه فقط عدد 1 و 2 نوشته و فقط 2 تا از رکوردها رو نشون می ده.می دونم چون محدودش کردم به 2 تا.ولی خوب آخه بقیش که تو صفحه بعد نشون نمی ده.چیکار کنم خوب؟سر در نمیارم.میشه با یه مثال بگین؟

امیـرحسین
چهارشنبه 07 بهمن 1388, 19:41 عصر
اون خط اشتباه بود باید اینجوری باشه:
$totalPages = ceil($row[0] / $resultsPerPage);
من با توصیه پست قبل موافقم.

mahnaz_tbe
پنج شنبه 08 بهمن 1388, 10:36 صبح
من با توصیه پست قبل موافقم.

بابا خوب منم دارم همین کار رو می کنم.:ناراحت:شماها خیال می کنین مثل شما چاه همه لب دریاست:عصبانی:.ما تو شهرمون یه کلاس php هم نیست.هرکی هم بلده خودش کار کرده تا یاد گرفته.هرکی هم یجور چیز یاد می گیره.من یه چیزائی تو دانشگاه یاد گرفتم.بقیش رو دوست دارم با نوشتن پروژه یاد بگیرم.حالا تو پروژه کم کم چیزائی که بهش بر می خورم رو یاد می گیرم البته با کاربردش.شما چی خیال کردین؟:گریه:

mahnaz_tbe
پنج شنبه 08 بهمن 1388, 11:01 صبح
آقا من خدائی یه کم ناشی هستم.منو یه کم بیشتر راهنمائی کنید.یعنی مثلاً کدهام رو اینطوری بنویسم؟


<?




require_once("../includes/connect.inc.php");


$page = '3';
$page--;
$resultsPerPage = 2;
$sql = "SELECT * FROM specs LIMIT $page,$resultsPerPage";
print $sql;
$select = mysql_query($sql);
while ($d=mysql_fetch_assoc($select))
{
?>
<table width="600" border="1" cellspacing="0" cellpadding="0">
<tr>
<td><? print $d["username"]; ?></td>
<td><? print $d["name_branch"]; ?></td>
<td><? print $d["date_require_day"]; ?></td>
<td><? print $d["date_require_mnd"]; ?></td>
<td><? print $d["date_require_year"]; ?></td>
<td><? print $d["time_require"]; ?></td>
</tr>
</table>


<?
}
$sqlCount = "SELECT COUNT(username) FROM specs;";
print $sqlCount;
$row = mysql_fetch_row( mysql_query($sqlCount) );
$totalPages = ceil($resultsPerPage);
print $totalPages . "kkkkkkkk";
for($i=1 ; $i<=$totalPages; $i++) {
if($i == ($page+1))
echo $i;
else
echo '<a href="untitled.php?page=' .$i. '">' .$i. '</a>';
}
?>



لطفاً به عکس ضمیمه نیگاه کنید.اینجائی که دورش خط کشیدم مربوط میشه به جائی که من باید محتویات رو تو صفحه نشون بدم.جائی که نوشتم درسته؟آخه وقتی اجرا می کنم توی صفحه فقط عدد 1 و 2 نوشته و فقط 2 تا از رکوردها رو نشون می ده.می دونم چون محدودش کردم به 2 تا.ولی خوب آخه بقیش که تو صفحه بعد نشون نمی ده.چیکار کنم خوب؟سر در نمیارم.میشه با یه مثال بگین؟



این پست جواب نداشت؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟ ؟؟؟:ناراحت:
خوب بابا من کجا باید بگم که داده ها رو بچینه تو صفحه؟بعد از مجا می فهمه که بقیه رو باید تو صفحه بعد نشون بده؟توروخدا یکی جواب بده.:ناراحت:

s_salavati2002
پنج شنبه 08 بهمن 1388, 12:16 عصر
اون کدی که گذاشتیو دیدم کار کرد، مشکلی نداشت
قسمت مهمش اینه که شروع رکوردهاتو مشخص میکنه


$offset = ($page-1) * $records_per_page;

من نمی دونم کجاشو متوجه نمیشی، دقیق تر بگو
ببین منطق کار اینه که میاد از مقادیر get شده شماره صفحتو میگیره، بعدش طبق فرموله بالا اندیس اولین رکورد صفحه جاری رو بدست میاره ، تو دستور sql هم یه limit داره که به تعداد records_per_page از offsetشروع می کنه و نتایج رو بر میگردونه

echo "<table><tr><th>Name</th><th>Name Meaning</th></tr>";
if($row = mysql_fetch_array($result)){
do{
echo "<tr><td>{$row["name"]}</td><td>{$row["meaning"]}</td></tr>";
} while($row = mysql_fetch_array($result));
}
echo "</table>";
کد بالاهم نتایجو نشون میده
بعدشم یه تابع داره که url درست میکنه که بتونی صفحه قبل و صفحه بعد بزنی
اگر اونو متوجه نمیشی کلا برش دار ، برای صفحه قبل و صفحه بعد زدن مستقیم خودت آدرس بده مثلا


name_meanings.php?page=10

اگر بازم جاییشو متوجه نمیشی بگو