نمایش نتایج 1 تا 9 از 9

نام تاپیک: برعکس کردن رکردهای گرفته شده از دیتابیس

  1. #1

    برعکس کردن رکردهای گرفته شده از دیتابیس

    سلام

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

    قبلا کد ام ساده تر بود و از 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>';

    }
    }
    }
    ?>

  2. #2
    کاربر دائمی آواتار رضا قربانی
    تاریخ عضویت
    خرداد 1389
    محل زندگی
    ܓܨ_| ı̴̴̡ ̡̡͡|̲̲̲͡͡͡ ̲▫̲͡ ̲̲̲͡͡π̲̲͡͡ ̲̲͡▫̲̲͡͡ ̲|̡̡̡ _
    پست
    1,824

    نقل قول: برعکس کردن رکردهای گرفته شده از دیتابیس

    هر جا $Query حروف کوچیک و بزرگ داری اون دستوری که قبلا استفاده می کردی رو انتهاشون بگذار . این ساده ترین و راحت ترین راه هست و بعد یکی یکی پاکش کن و ببین واسه کدوم هست

    order by desc

  3. #3
    کاربر تازه وارد آواتار Cyletech
    تاریخ عضویت
    شهریور 1388
    محل زندگی
    شهر جدید هشتگرد
    سن
    32
    پست
    86

    نقل قول: برعکس کردن رکردهای گرفته شده از دیتابیس

    هرجا که آیدی رو گرفتی و در نهایت قصد خروج اون رو داشتی توی mysql_query همون از order by DESC استفاده کن.

  4. #4

    نقل قول: برعکس کردن رکردهای گرفته شده از دیتابیس

    به هر حال این Table شما یک Id داری که به ازای هر entry که واردش می شه increment می شه . پس می تونی بگی .

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



  5. #5

    نقل قول: برعکس کردن رکردهای گرفته شده از دیتابیس

    با سلام، فرض كنيد چنين دستوري دارين:

    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

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

  6. #6
    کاربر تازه وارد آواتار Cyletech
    تاریخ عضویت
    شهریور 1388
    محل زندگی
    شهر جدید هشتگرد
    سن
    32
    پست
    86

    نقل قول: برعکس کردن رکردهای گرفته شده از دیتابیس

    MMSHFE جان می تونید در مورد کد زیر بیشتر توضیح بدین؟
     
    SELECT * FROM (SELECT * FROM `table` ORDER BY `id` LIMIT $start,$limit) AS `temp` ORDER BY `id` DESC


  7. #7

    نقل قول: برعکس کردن رکردهای گرفته شده از دیتابیس

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

  8. #8
    کاربر تازه وارد آواتار Cyletech
    تاریخ عضویت
    شهریور 1388
    محل زندگی
    شهر جدید هشتگرد
    سن
    32
    پست
    86

    نقل قول: برعکس کردن رکردهای گرفته شده از دیتابیس

    آره آقا خوب توضیح دادی. مرسی. فقط یک سوالی برام پیش اومد و اونم اینه که چرا باید در یک جدول بصورت موقت ذخیره می کنیم؟ آیا امکانش هست که اینکارو نکنیم؟ یعنی بصورت زیر بنویسیم:
     
    SELECT * FROM (SELECT * FROM `table_name` ORDER BY `id` LIMIT $start,$limit) ORDER BY `id` DESC

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

  9. #9

    نقل قول: برعکس کردن رکردهای گرفته شده از دیتابیس

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

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •