PDA

View Full Version : برعکس کردن رکردهای گرفته شده از دیتابیس



kamalhamidi
شنبه 28 اسفند 1389, 21:50 عصر
سلام

من مشکل برعکس کردن شمارش رکردهای دیتابیس رو دارم... یعنی میخوام مطالبم از آخر به اول نمایش داده بشن!

قبلا کد ام ساده تر بود و از DESC برای برعکس کردن استفاده میکردم. اما الان نمیدونم چطور ازش توی کد زیر استفاده کنم!

حالا چیکار کنم که مطالبم توی کد زیر برعکس نمایش داده بشن!؟


<?php
/*
Place code to connect to your DB here.
*/
include "Smilehaa Admin Panel/config.php";


$tbl_name="org_firstinfo"; //your table name
// How many adjacent pages should be shown on each side?
$adjacents = 3;

/*
First get total number of rows in data table.
If you have a WHERE clause in your query, make sure you mirror it here.
*/
$query = "SELECT COUNT(*) as num FROM $tbl_name";
$result = mysql_query($query) or die('Error, query failed');
$row = mysql_fetch_array($result, MYSQL_ASSOC);
$total_pages = $row['num'];



/* Setup vars for query. */
$targetpage = "index.php"; //your file name (the name of this file)
$limit = 3; //how many items to show per page
$page = $_GET['page'];

if($page)
$start = ($page - 1) * $limit; //first item to display on this page
else
$start = 0; //if no page var is given, set start to 0

/* Get data. */
$sql = "SELECT * FROM $tbl_name LIMIT $start, $limit";
$result = mysql_query($sql);

/* Setup page vars for display. */
if ($page == 0) $page = 1; //if no page var is given, default to 1.
$prev = $page - 1; //previous page is page - 1
$next = $page + 1; //next page is page + 1
$lastpage = ceil($total_pages/$limit); //lastpage is = total pages / items per page, rounded up.
$lpm1 = $lastpage - 1; //last page minus 1

/*
Now we apply our rules and draw the pagination object.
We're actually saving the code to a variable in case we want to draw it more than once.
*/
$pagination = "";
if($lastpage > 1)
{
$pagination .= "<div class=\"pagination\">";
//previous button
if ($page > 1)
$pagination.= "<a href=\"$targetpage?page=$prev\">Prev</a>";
else
$pagination.= "<span class=\"disabled\">Prev</span>";

//pages
if ($lastpage < 7 + ($adjacents * 2)) //not enough pages to bother breaking it up
{
for ($counter = 1; $counter <= $lastpage; $counter++)
{
if ($counter == $page)
$pagination.= "<span class=\"current\">$counter</span>";
else
$pagination.= "<a href=\"$targetpage?page=$counter\">$counter</a>";
}
}
elseif($lastpage > 5 + ($adjacents * 2)) //enough pages to hide some
{
//close to beginning; only hide later pages
if($page < 1 + ($adjacents * 2))
{
for ($counter = 1; $counter < 4 + ($adjacents * 2); $counter++)
{
if ($counter == $page)
$pagination.= "<span class=\"current\">$counter</span>";
else
$pagination.= "<a href=\"$targetpage?page=$counter\">$counter</a>";
}
$pagination.= "...";
$pagination.= "<a href=\"$targetpage?page=$lpm1\">$lpm1</a>";
$pagination.= "<a href=\"$targetpage?page=$lastpage\">$lastpage</a>";
}
//in middle; hide some front and some back
elseif($lastpage - ($adjacents * 2) > $page && $page > ($adjacents * 2))
{
$pagination.= "<a href=\"$targetpage?page=1\">1</a>";
$pagination.= "<a href=\"$targetpage?page=2\">2</a>";
$pagination.= "...";
for ($counter = $page - $adjacents; $counter <= $page + $adjacents; $counter++)
{
if ($counter == $page)
$pagination.= "<span class=\"current\">$counter</span>";
else
$pagination.= "<a href=\"$targetpage?page=$counter\">$counter</a>";
}
$pagination.= "...";
$pagination.= "<a href=\"$targetpage?page=$lpm1\">$lpm1</a>";
$pagination.= "<a href=\"$targetpage?page=$lastpage\">$lastpage</a>";
}
//close to end; only hide early pages
else
{
$pagination.= "<a href=\"$targetpage?page=1\">1</a>";
$pagination.= "<a href=\"$targetpage?page=2\">2</a>";
$pagination.= "...";
for ($counter = $lastpage - (2 + ($adjacents * 2)); $counter <= $lastpage; $counter++)
{
if ($counter == $page)
$pagination.= "<span class=\"current\">$counter</span>";
else
$pagination.= "<a href=\"$targetpage?page=$counter\">$counter</a>";
}
}
}

//next button
if ($page < $counter - 1)
$pagination.= "<a href=\"$targetpage?page=$next\">Next</a>";
else
$pagination.= "<span class=\"disabled\">Next</span>";
$pagination.= "</div>\n";
}
?>
<?=$pagination?>


<?php
while($row = mysql_fetch_array($result))
{
$i = $row['id'];
$Query = mysql_query ("SELECT * FROM `org_firstinfo` WHERE id = $i ");
$row = mysql_fetch_array($Query) ;
$n = $row['idsmile'];
$Query = mysql_query ("SELECT * FROM `org_smile` WHERE id = $n");
$row_smile = mysql_fetch_array($Query) ;
$download = "count/download.php?id=" . $row_smile['downloadlink'];
if(!empty($row['id'])) {
if($row['type'] == 'smile') {

echo '<div class="fnew-item"><h3 class="fnew-title">'.$row['title'].'</h3><div class="fnew-ransmile">';
echo '<div class="fnew-textimg"><img src="'.$row_smile['dirimage'].'" alt="Smile" width="72" height="72"/>';
echo '<div class="fnew-text">'.$row['text'].'</div></div><br/><div class="fnew-buttom">';
echo '<a class="add-cart" href="'.$download.'" title="Getsmile برای اجرا در gsml دانلود فایل"><span> Download </span></a>';
echo '<a class="add-cart" href="'.$row_smile['phplink'].'" title="نمایش تمام اسمایل های این پک" target="_blank"><span> View All </span></a>';
echo '<a class="add-cart" href="'.$row_smile['rndlink'].'" title="Random نمایش یکی از شکلک های این پک به صورت"><span> Random </span></a></div></div></div>';
} else {
echo '<div class="fnew-item"><h3 class="fnew-title">'.$row['title'].'</h3><div class="fnew-ransmile">';
echo '<div class="fnew-textimg"><img src="'.$row['img'].'" alt="Smile" width="72" height="72"/>';
echo '<div class="fnew-text">'.$row['text'].'</div></div></div></div>';

}
}
}
?>

رضا قربانی
شنبه 28 اسفند 1389, 22:20 عصر
هر جا $Query حروف کوچیک و بزرگ داری اون دستوری که قبلا استفاده می کردی رو انتهاشون بگذار . این ساده ترین و راحت ترین راه هست و بعد یکی یکی پاکش کن و ببین واسه کدوم هست

order by desc

Cyletech
یک شنبه 29 اسفند 1389, 10:16 صبح
هرجا که آیدی رو گرفتی و در نهایت قصد خروج اون رو داشتی توی mysql_query همون از order by DESC استفاده کن.

mehdi_php
یک شنبه 29 اسفند 1389, 13:21 عصر
به هر حال این Table شما یک Id داری که به ازای هر entry که واردش می شه increment می شه . پس می تونی بگی .


/* Get data. */ $sql = "SELECT * FROM $tbl_name order by id desc LIMIT $start, $limit";

MMSHFE
یک شنبه 29 اسفند 1389, 20:08 عصر
با سلام، فرض كنيد چنين دستوري دارين:

SELECT * FROM `table` ORDER BY `id` LIMIT $start,$limit

حالا ميخواين اين نتايج رو برعكس كنيد:

SELECT * FROM (SELECT * FROM `table` ORDER BY `id` LIMIT $start,$limit) AS `temp` ORDER BY `id` DESC

با اين كار، نتايج برعكس ميشن.
موفق و مؤيد باشيد.

Cyletech
دوشنبه 01 فروردین 1390, 13:15 عصر
MMSHFE جان می تونید در مورد کد زیر بیشتر توضیح بدین؟


SELECT * FROM (SELECT * FROM `table` ORDER BY `id` LIMIT $start,$limit) AS `temp` ORDER BY `id` DESC

MMSHFE
دوشنبه 01 فروردین 1390, 14:19 عصر
با سلام، ابتدا اطلاعات مورد نظر توسط SELECT داخل پرانتز استخراج ميشه و تحت عنوان temp بصورت يك جدول موقت ذخيره ميشه و بعد، كل اطلاعات اين جدول توسط SELECT بيروني، به ترتيب نزولي نمايش داده ميشه. البته temp يك نام اختياري هست و ميتونيد هر نام دلخواه ديگه به جاش بگذارين.
اميدوارم خوب توضيح داده باشم.
موفق باشيد.

Cyletech
دوشنبه 01 فروردین 1390, 14:47 عصر
آره آقا خوب توضیح دادی. مرسی. فقط یک سوالی برام پیش اومد و اونم اینه که چرا باید در یک جدول بصورت موقت ذخیره می کنیم؟ آیا امکانش هست که اینکارو نکنیم؟ یعنی بصورت زیر بنویسیم:


SELECT * FROM (SELECT * FROM `table_name` ORDER BY `id` LIMIT $start,$limit) ORDER BY `id` DESC

اینطوری که من برای خودم تعریف می کنم درسته اما در عمل نمی دونم چطور کار می کنه. من میگم همه جداول رو از تیبل فلان بخون و اونها رو به ترتیب جدول id که از فلان تا فلان محدود می کنم بعد همه این رو دوباره می خونم و مجدد به ترتیب id اما از آخر به اول در میارم.
درست گفتم؟

MMSHFE
دوشنبه 01 فروردین 1390, 18:51 عصر
با سلام، طبق مستندات رسمي MySQL بايد براي تمامي جداول و فيلدها و كلاً شناسه هايي كه توسط خودمون ساخته ميشن و در DB موجود نيستن، يك اسم مستعار توسط كلمه كليدي AS انتخاب كنيم. مثلاً به جاي (*)SELECT COUNT بايد بگيم `SELECT COUNT(*) AS `count و... . در اينجا هم بايد به جدول موقت يك اسم بديم كه بعداً براي مثال، بتونيم به جاي `id` بگيم `table`.`id` يا هر كار ديگه كه خواستيم با اين جدول انجام بديم، يك نام داشته باشه. اگه شما دستوري كه نوشتين رو اجرا كنيد، خواهيد ديد كه با پيغام خطا مواجه ميشين. علت اين مسئله همين موضوعيه كه گفتم.
موفق باشيد.