ارسال موضوع  ارسال پاسخ 
 
رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
این کد رو به چه طریق دیگه ای میشه نوشت
نویسنده پیام
amir abbas آفلاین
با سابقه ها و بزرگان
MT LEGEND

ارسال‌ها: 750
Likes Given: 0
Likes Received: 0 in 0 posts
تاریخ عضویت: ۲ تیر ۱۳۸۵
ارسال: #1
این کد رو به چه طریق دیگه ای میشه نوشت
آقا این کد یه سری داده رو از دیتابیس می خونه. بعد نمایششون میده. منتها خروجی ها رو صفحه بندی می کنه

کد PHP:
<?php

/**
 * @copyright 2009
 * view_users2.php
 */ 

$page_title 'view users page';
include(
'includes/header.html');
require_once(
'connection.php');
$display 10;
if ( isset(
$_GET['p']) && is_numeric($_GET['p']) ) {
    
$page $_GET['p'];
} else {
    
$q "SELECT COUNT(user_id) FROM users";
    
$r = @mysqli_query($dbc$q);
    
$row = @mysqli_fetch_array($rMYSQLI_NUM);
    
$records =$row[0];
    if (
$records $display) {
        
$page ceil($records/$display);
    } else {
        
$page 1;
    }
}

if ( (isset(
$_GET['s'])) && (is_numeric($_GET['s'])) ) {
    
$start $_GET['s'];
} else {
    
$start 0;
}
$q "SELECT first_name, last_name, DATE_FORMAT(registration_date, '%d, %m, %Y') AS date, user_id FROM users ORDER BY registration_date ASC LIMIT $start, $display";
$r = @mysqli_query($dbc$q);
// table header 
echo '<table align="center" cellspacing="0" cellpadding="5" width="75%">
<tr> <th>edit</th><th>delete</th><th>first name</th><th>last name</th><th>registration date </th></tr>'
;
$bg '#eeeeee';
while (
$row mysqli_fetch_array($rMYSQLI_ASSOC)) {
    
$bg = ($bg == '#eeeeee' '#ffffff' '#eeeeee');
    echo 
'<tr bgcolor="' $bg '"><td><a href="edit_user.php?id=' $row['user_id'] . '">edit</a></td><td><a href="delete_user.php?id=' $row['user_id'] . '">delete</a></td><td>' $row['first_name'] . '</td><td>' $row['last_name'] . '</td><td>' $row['date'] . '</td></tr>';
}
echo 
'</table>';
mysqli_free_result($r);
mysqli_close($dbc);
if (
$page 1) {
    echo 
'<br /><p>';
    
$current_page = ($start/$display) + ;
    if (
$current_page != 1) {
        echo 
'<a href="view_users2.php?s=' . ($start $display) . '$p=' $page '"> Previous </a>';
    }
    for (
$i $i <= $page$i++) {
        if (
$i != $current_page) {
            echo 
'<a href="view_users2.php?s=' . (($display * ($i 1))) . '&p=' $page '">' $i '</a> ';
        } else {
            echo 
$i ' ';
        }
    }
    if (
$current_page != $page) {
        echo 
'<a href="view_users2.php?s=' . ($start $display) . '&p=' $page '">Next </a>';
    }
    echo 
'</p>';
}
include(
'includes/footer.html');
?>

اینجا دلیل اینکه $page رو می فرسته تو نوار آدرس و از طریق $_GET می گیرتش چیه ؟

[تصویر: 2s9egxl.jpg]
آموزش CSS -- سی اس اس
طراحی سایت, طراحی وب
۲۳ بهمن ۱۳۸۷ ۰۸:۲۷ عصر
یافتن تمامی ارسال‌های این کاربر Like Post نقل قول این ارسال در پاسخ
Morteza آفلاین
Posting Freak
*****

ارسال‌ها: 1,370
Likes Given: 12
Likes Received: 25 in 20 posts
تاریخ عضویت: ۶ دی ۱۳۸۶
ارسال: #2
این کد رو به چه طریق دیگه ای میشه نوشت
دلیلش اینه که مثلا چجوری می خواید با $_post بگیره ؟
فرم ارسال کنه ؟ چجوری ؟
هر صفحه که اضافه شد براش یه فرم جدا طراحی بشه ؟
برای اینکه اینجوری نشه از Query String استفاده می شه !

[تصویر: ubuntu2_userbar.gif]
۲۳ بهمن ۱۳۸۷ ۰۸:۳۷ عصر
مشاهده سایت کاربر یافتن تمامی ارسال‌های این کاربر Like Post نقل قول این ارسال در پاسخ
amir abbas آفلاین
با سابقه ها و بزرگان
MT LEGEND

ارسال‌ها: 750
Likes Given: 0
Likes Received: 0 in 0 posts
تاریخ عضویت: ۲ تیر ۱۳۸۵
ارسال: #3
این کد رو به چه طریق دیگه ای میشه نوشت
اینجا فرمی تولید نمیشه. اگر تعداد صفحات رو به نوار آدرس هم نفرستیم باز هم اسکریپت بدون مشکل کار میکنه

[تصویر: 2s9egxl.jpg]
آموزش CSS -- سی اس اس
طراحی سایت, طراحی وب
۲۳ بهمن ۱۳۸۷ ۰۸:۴۲ عصر
یافتن تمامی ارسال‌های این کاربر Like Post نقل قول این ارسال در پاسخ
Morteza آفلاین
Posting Freak
*****

ارسال‌ها: 1,370
Likes Given: 12
Likes Received: 25 in 20 posts
تاریخ عضویت: ۶ دی ۱۳۸۶
ارسال: #4
این کد رو به چه طریق دیگه ای میشه نوشت
آخه چطور ممکنه بدون گت بشه صفحه بندی رو نوشت !
تا حالا سایتی دیدید که صفحه بندی باشه ولی از query string استفاده نشده باشه ؟

[تصویر: ubuntu2_userbar.gif]
۲۳ بهمن ۱۳۸۷ ۰۸:۴۷ عصر
مشاهده سایت کاربر یافتن تمامی ارسال‌های این کاربر Like Post نقل قول این ارسال در پاسخ
amir abbas آفلاین
با سابقه ها و بزرگان
MT LEGEND

ارسال‌ها: 750
Likes Given: 0
Likes Received: 0 in 0 posts
تاریخ عضویت: ۲ تیر ۱۳۸۵
ارسال: #5
این کد رو به چه طریق دیگه ای میشه نوشت
شما کد رو ببین. من بحثم سر فرستادن شماره صفحه به URL هست. اون چیزی که برای نتایج صفحه بندی لازمه یکی $start هست که offset رو توی query مشخص می کنه (از صفر تا 9. از 9 تا 19 از 19 تا 29 و .... ) و اون یکی هم $display هست که تعداد نتایج تو هر صفحه رو مشخص می کنه. اون $page فقط برای ایجاد کردن لینک های زیر صفحه استفاده میشه. اصلا توی صفحه بندی کردن نتایج نقشی نداره

[تصویر: 2s9egxl.jpg]
آموزش CSS -- سی اس اس
طراحی سایت, طراحی وب
۲۳ بهمن ۱۳۸۷ ۰۸:۵۱ عصر
یافتن تمامی ارسال‌های این کاربر Like Post نقل قول این ارسال در پاسخ
Saleh آفلاین
صالح
MT LEGEND

ارسال‌ها: 2,228
Likes Given: 1
Likes Received: 1 in 1 posts
تاریخ عضویت: ۱۱ دی ۱۳۴۸
ارسال: #6
این کد رو به چه طریق دیگه ای میشه نوشت
ظاهر امر مشخص هست که این کد مربوط به یک لیست که صحفه صفحه نمایش داده میشه

متغییر $page یک مقدار عددی هست که شماره صفحه رو در بر میگیه

اگر

که اگر در url پارامتر &p= مقداری نداشته باشد میاد خودش به $page مقدار 1 میده یعنی پیج اول

کد PHP:
$display 10;
if ( isset(
$_GET['p']) && is_numeric($_GET['p']) ) {
    
$page $_GET['p'];
} else {
    
$q "SELECT COUNT(user_id) FROM users";
    
$r = @mysqli_query($dbc$q);
    
$row = @mysqli_fetch_array($rMYSQLI_NUM);
    
$records =$row[0];
    if (
$records $display) {
        
$page ceil($records/$display);
    } else {
        
$page 1;
    }


اگر مقدار داشته باشه یعنی شماره صفحه مشخص کرده که [COLOR=#007700]$start شروع رکرود و [/COLOR][COLOR=#0000BB]$display تعداد تمایش در صفحه و محدود کردن کوئری هست

حالا چیش گنگ هست نفهمیدم


[/COLOR]
نقل قول:آخه چطور ممکنه بدون گت بشه صفحه بندی رو نوشت !
تا حالا سایتی دیدید که صفحه بندی باشه ولی از query string استفاده نشده باشه ؟
__________________

بله میشود با استفاده از سشن و کوکی

۲۵ بهمن ۱۳۸۷ ۱۲:۵۰ صبح
مشاهده سایت کاربر یافتن تمامی ارسال‌های این کاربر Like Post نقل قول این ارسال در پاسخ
Morteza آفلاین
Posting Freak
*****

ارسال‌ها: 1,370
Likes Given: 12
Likes Received: 25 in 20 posts
تاریخ عضویت: ۶ دی ۱۳۸۶
ارسال: #7
این کد رو به چه طریق دیگه ای میشه نوشت
saleh نوشته شده:بله میشود با استفاده از سشن و کوکی
درسته ولی اینجا سشن و کوکی هم وجود نداره .

[تصویر: ubuntu2_userbar.gif]
۲۵ بهمن ۱۳۸۷ ۰۳:۱۷ صبح
مشاهده سایت کاربر یافتن تمامی ارسال‌های این کاربر Like Post نقل قول این ارسال در پاسخ
amir abbas آفلاین
با سابقه ها و بزرگان
MT LEGEND

ارسال‌ها: 750
Likes Given: 0
Likes Received: 0 in 0 posts
تاریخ عضویت: ۲ تیر ۱۳۸۵
ارسال: #8
این کد رو به چه طریق دیگه ای میشه نوشت
من منظورم این است که الان برای صفحه بندی کردن نتایج اصلا احتیاجی به اون $page نداریم. تو کوئری صفحه فقط یه متغیر $start استفاده میشه که شروع بخش LIMIT رو مشخص می کنه و $display که تعداد نتایج رو مشخص می کنه. $display که مشخصه و تغییر نمیکنه. فقط همون $start باشه کفایت می کنه. اینجا چرا $page رو هم فرستاده به نوار آدرس ؟

نمی دونم تونستم واضح توضیح بدم :confused:

[تصویر: 2s9egxl.jpg]
آموزش CSS -- سی اس اس
طراحی سایت, طراحی وب
۲۵ بهمن ۱۳۸۷ ۰۴:۰۰ عصر
یافتن تمامی ارسال‌های این کاربر Like Post نقل قول این ارسال در پاسخ
hosseintdk775 آفلاین
Member
***

ارسال‌ها: 71
Likes Given: 0
Likes Received: 0 in 0 posts
تاریخ عضویت: ۳۰ خرداد ۱۳۸۶
ارسال: #9
این کد رو به چه طریق دیگه ای میشه نوشت
amir abbas نوشته شده:من منظورم این است که الان برای صفحه بندی کردن نتایج اصلا احتیاجی به اون $page نداریم. تو کوئری صفحه فقط یه متغیر $start استفاده میشه که شروع بخش LIMIT رو مشخص می کنه و $display که تعداد نتایج رو مشخص می کنه. $display که مشخصه و تغییر نمیکنه. فقط همون $start باشه کفایت می کنه. اینجا چرا $page رو هم فرستاده به نوار آدرس ؟

نمی دونم تونستم واضح توضیح بدم :confused:
بسم الله الرحمن الرحیم
سلام

شما فرض کنید کسی قبلا وارد صفحه 2 شده و حال می خواهد صفحه را ببندید و بعدا بیاید / و این شخص لینک را کپی می کند که در لینک شماره صفحه هم مشخص شده است.

حال اگر در کدها $page مشخص نباشد / سیستم از کجا می خواهد بفهمد که من می خواهم به صفحه 2 بروم و اگر $page مشخص نباشد از همان صفحه 1 شروع خواهد کرد / با اینکه من صفحه 2 را مشخص کرده ام.

چاپلوسی و حسودی از خلق و خوی مومن نیست مگر برای دانش جستن.
۲۵ بهمن ۱۳۸۷ ۰۴:۱۸ عصر
مشاهده سایت کاربر یافتن تمامی ارسال‌های این کاربر Like Post نقل قول این ارسال در پاسخ
amir abbas آفلاین
با سابقه ها و بزرگان
MT LEGEND

ارسال‌ها: 750
Likes Given: 0
Likes Received: 0 in 0 posts
تاریخ عضویت: ۲ تیر ۱۳۸۵
ارسال: #10
این کد رو به چه طریق دیگه ای میشه نوشت
جوابش رو خودم پیدا کردم Big Grin
کد رو دوباره می نویسم

تو بخش اول کد:

کد PHP:
$page_title 'view users page';
include(
'includes/header.html');
require_once(
'connection.php');
$display 10

خط اول تایتل صفحه رو مشخص می کنه
دومی هیدر رو اینکلود می کنه
خط سوم فایل ارتباط با دیتابیس رو ایمپورت میکنه
و خط چهارم هم متغیر display رو تعریف میکنه

تیکه دوم کد

کد PHP:
if ( isset($_GET['p']) && is_numeric($_GET['p']) ) {
    
$page $_GET['p'];
} else {
    
$q "SELECT COUNT(user_id) FROM users";
    
$r = @mysqli_query($dbc$q);
    
$row = @mysqli_fetch_array($rMYSQLI_NUM);
    
$records =$row[0];
    if (
$records $display) {
        
$page ceil($records/$display);
    } else {
        
$page 1;
    }


این تیکه کد میگه اگر تعداد صفحات تو نوار آدرس مشخص شده بود که تعداد رو از اونجا بگیر ولی اگر مشخص نشده بود از تیبل یوزر ها با فانکشن count یه کوئری بگیر و تعداد کاربران رو مشخص کن. بعد اگر تعداد کاربران از مقدار display که 10 بود بیشتر بود، تعداد کاربران رو به 10 تقسیم کن و به سمت بالا گرد کنش . مثلا اگر 25 تا کاربر باشه. 25 تقسیم بر 10 میشه که میشه 2.5 که به بالا گرد بشه میشه 3. یعنی 3 صفحه. و اگر هم تعداد کاربران از متغیر display بیشتر نبود که مقدار رو معادل 1 قرار میده.

کد PHP:
if ( (isset($_GET['s'])) && (is_numeric($_GET['s'])) ) {
    
$start $_GET['s'];
} else {
    
$start 0;


تو این تیکه کد اول بررسی میشه که تو نوار آدرس مقدار s یا همون $start مشخص شده یا نه. اگر مشخص شده باشه که از اون استفاده می کنه و اگر نباشه که از مقدار صفر استفاده میشه (یعنی طرف برای بار اول صفحه رو باز کرده)

کد PHP:
$q "SELECT first_name, last_name, DATE_FORMAT(registration_date, '%d, %m, %Y') AS date, user_id FROM users ORDER BY registration_date ASC LIMIT $start, $display";
$r = @mysqli_query($dbc$q);
// table header 
echo '<table align="center" cellspacing="0" cellpadding="5" width="75%">
<tr> <th>edit</th><th>delete</th><th>first name</th><th>last name</th><th>registration date </th></tr>'
;
$bg '#eeeeee';
while (
$row mysqli_fetch_array($rMYSQLI_ASSOC)) {
    
$bg = ($bg == '#eeeeee' '#ffffff' '#eeeeee');
    echo 
'<tr bgcolor="' $bg '"><td><a href="edit_user.php?id=' $row['user_id'] . '">edit</a></td><td><a href="delete_user.php?id=' $row['user_id'] . '">delete</a></td><td>' $row['first_name'] . '</td><td>' $row['last_name'] . '</td><td>' $row['date'] . '</td></tr>';
}
echo 
'</table>';
mysqli_free_result($r);
mysqli_close($dbc); 

این تیکه کد هم یه کوئری به دیتابیس میفرسته که نام و نام خانوادگی و تاریخ ثبت نام و یوزر آیدی رو درخواست می کنه و به ترتیب تاریخ ثبت نام مرتبش میکنه منتها LIMIT داره و برای بار اول که $start اش معادله صفره یعنی از اولین رکورد نمایش میده و display هم که 10 هست و تو هر نوبت 10 تا رو نشون میده. بعد یه تیبل ایجاد میکنه و داده هارو توش نشون میده و بعد متغیر $r رو خالی میکنه و ارتباط با دیتابیس رو می بنده

کد PHP:
if ($page 1) {
    echo 
'<br /><p>';
    
$current_page = ($start/$display) + ;
    if (
$current_page != 1) {
        echo 
'<a href="view_users2.php?s=' . ($start $display) . '$p=' $page '"> Previous </a>';
    }
    for (
$i $i <= $page$i++) {
        if (
$i != $current_page) {
            echo 
'<a href="view_users2.php?s=' . (($display * ($i 1))) . '&p=' $page '">' $i '</a> ';
        } else {
            echo 
$i ' ';
        }
    }
    if (
$current_page != $page) {
        echo 
'<a href="view_users2.php?s=' . ($start $display) . '&p=' $page '">Next </a>';
    }
    echo 
'</p>';
}
include(
'includes/footer.html');
?>

این تیکه هم که میگه اگر تعداد صفحات کمتر از یک صفحه بود که اصلا لینکی زیر صفحه نمایش نده ولی اگر بیشتر از یک صفحه بود :
- اول چک کنه که صفحه این که توش هست صفحه اول نتایج هست یا نه. اگر صفحه اول نیست ، لینک previous رو نشون بده با مقادیر مناسب

- بعد به تعداد صفحات، زیر صفحه لینک ایجاد کنه و تعداد صفحات رو بفرسته به نوار آدرس

- اگر تو صفحه آخر هم نیستیم، لینک next رو نشون بده

خوب الان ما تو کوئری ای که نام و نام خانوادگی رو می خوند اصلا از $page استفاده نکرده بودیم که بخواد تو صفحه تاثیر داشته باشه. در ضمن این شماره صفحه تو نوار آدرس ثابته و صفحه به صفحه هیچ تغییری نمی کنه.

چیزی که من حدس می زنم اینه:
هر چی هست توی این بخشه

کد PHP:
if ( isset($_GET['p']) && is_numeric($_GET['p']) ) {
    
$page $_GET['p'];
} else {
    
$q "SELECT COUNT(user_id) FROM users";
    
$r = @mysqli_query($dbc$q);
    
$row = @mysqli_fetch_array($rMYSQLI_NUM);
    
$records =$row[0];
    if (
$records $display) {
        
$page ceil($records/$display);
    } else {
        
$page 1;
    }


اگر متغیر page تو نوار آدرس هست از اون استفاده کن ولی اگر نیست اون مراحل بعدی رو انجام بده و یک کوئری بفرست به دیتابیس و تعداد صفحات رو مشخص کن
اینطوری با اول بازدید صفحه دو کوئری اجرا میشه. یکی برای مشخص کردن تعداد کاربران و یکی برای گرفتم نام و نام خانوادگی و ....

ولی وقتی $page میره تو نوار آدرس، بعد از کلیک روی لینک صفحات دیگه ، دیگه لازم نیست که کوئری اول اجرا بشه چون $page مشخصه و یه کوئری صرفه جویی میشه و به دیتابیس فشار کمتری میاد چون حتی بدون فرستادن $page به نوار آدرس هم همه چیز به درستی کار میکنه.

Wink

[تصویر: 2s9egxl.jpg]
آموزش CSS -- سی اس اس
طراحی سایت, طراحی وب
۲۵ بهمن ۱۳۸۷ ۰۹:۲۷ عصر
یافتن تمامی ارسال‌های این کاربر Like Post نقل قول این ارسال در پاسخ
ارسال موضوع  ارسال پاسخ 


پرش در انجمن: