За последние 24 часа нас посетили 18544 программиста и 1713 роботов. Сейчас ищут 820 программистов ...

Оптимизировать говнокод

Тема в разделе "PHP для новичков", создана пользователем grimmjoww, 23 май 2010.

  1. grimmjoww

    grimmjoww Активный пользователь

    С нами с:
    23 май 2010
    Сообщения:
    7
    Симпатии:
    0
    Нужно вывести данные в таблицу с 3 столбцами, получается такое месиво:
    PHP:
    1.  
    2. <?php
    3. if ($result = mysql_query("SELECT * FROM `news` ORDER BY date DESC LIMIT $start, $num",$db)) {
    4.     if (mysql_num_rows($result) > 0) {
    5.         $myrow = mysql_fetch_array($result);
    6.         echo '<table border="0" cellspacing="0" cellpadding="0" style="width:100%;">'."\n".'';
    7.         $a = 0;
    8.         do {
    9.  
    10. if ( $a == 0) { echo "<tr>\n"; }
    11.  
    12. echo '<td align="center" style="vertical-align:top;padding:12px 0px 24px 0px;">$myrow[title]</td>'."\n".'';
    13.  
    14. $a++;
    15.  
    16. if ( $a == 3) { echo "</tr>\n"; $a = 0; }
    17.  
    18.         }
    19.         while ($myrow = mysql_fetch_array($result));
    20.         echo "</table>\n";
    21.     }
    22. }
    23.  
    Надеюсь на помощь.
     
  2. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    для начала
    PHP:
    1. while ($myrow = mysql_fetch_array($result))
    2. {
    дальше додумаешь?
     
  3. grimmjoww

    grimmjoww Активный пользователь

    С нами с:
    23 май 2010
    Сообщения:
    7
    Симпатии:
    0
    Спасибо, сейчас такой код

    PHP:
    1.  
    2. <?PHP
    3. if ($result = mysql_query("SELECT * FROM `design` ORDER BY date DESC LIMIT $start, $num",$db)) {
    4.     if (mysql_num_rows($result) > 0) {
    5.         echo '<table border="0" cellspacing="0" cellpadding="0" style="width:100%;">'."\n".'';
    6.         $a = 0;
    7.         while ($myrow = mysql_fetch_array($result)) {
    8.  
    9. if ( $a == 0) { echo "<tr>\n"; }
    10.  
    11. echo '<td align="center" style="vertical-align:top;padding:12px 0px 24px 0px;">1</td>'."\n".'';
    12.  
    13. $a++;
    14.  
    15. if ( $a == 3) { echo "</tr>\n"; $a = 0; }
    16.  
    17.         }
    18.         echo "</table>\n";
    19.     }
    20. }
    21. ?>
    22.  
    Неужели нельзя заменить подсчёт, когда надо выводить tr и это:
    PHP:
    1.  echo '<td align="center" style="vertical-align:top;padding:12px 0px 24px 0px;">1</td>'."\n".'';
    на, что то более приличное?
     
  4. ShamahN

    ShamahN Активный пользователь

    С нами с:
    10 апр 2007
    Сообщения:
    1.449
    Симпатии:
    0
    Адрес:
    г.Волгодонск Роствской обл.
    так чтоли
    PHP:
    1. <?php
    2. if (!$result = mysql_query("SELECT * FROM `design` ORDER BY date DESC LIMIT $start, $num",$db)) die();
    3. if (mysql_num_rows($result) > 0) {
    4.     echo '<table border="0" cellspacing="0" cellpadding="0" style="width:100%;">'."\n".'';
    5.     while ($myrow = mysql_fetch_array($result)) {
    6.         echo "<tr>\n<td align='center' style='vertical-align:top;padding:12px 0px 24px 0px;'>1</td>\n</tr>\n";
    7.     }
    8.     echo "</table>\n";
    9. }
    и это.. http://www.php.ru/forum/viewtopic.php?t=15029
     
  5. grimmjoww

    grimmjoww Активный пользователь

    С нами с:
    23 май 2010
    Сообщения:
    7
    Симпатии:
    0
    Нет, подсчёт должен быть, через каждых 3 прохода выводить <tr> </tr>
     
  6. ShamahN

    ShamahN Активный пользователь

    С нами с:
    10 апр 2007
    Сообщения:
    1.449
    Симпатии:
    0
    Адрес:
    г.Волгодонск Роствской обл.
    а зачем подсчет? 3 столбца чтобы было?
     
  7. grimmjoww

    grimmjoww Активный пользователь

    С нами с:
    23 май 2010
    Сообщения:
    7
    Симпатии:
    0
  8. ShamahN

    ShamahN Активный пользователь

    С нами с:
    10 апр 2007
    Сообщения:
    1.449
    Симпатии:
    0
    Адрес:
    г.Волгодонск Роствской обл.
    глупо..
    интересно, что будет, если число количество строк выборке не будет кратно 3м предсказать можете?
    если да, и все равно нужно то что Вы сказали, то тот кусок который был у вас вторым, не сильно хуже других предложенных будет
     
  9. grimmjoww

    grimmjoww Активный пользователь

    С нами с:
    23 май 2010
    Сообщения:
    7
    Симпатии:
    0
    Если число элементов не будет кратным 3, нечего плохого не будет, тем более такое оформление(в виде столбцов) встречается часто. Вот и думаю как это организовано, тоже на каждый n проход вставляют <tr> </tr> или есть способ попроще.
     
  10. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    А как иначе?
     
  11. grimmjoww

    grimmjoww Активный пользователь

    С нами с:
    23 май 2010
    Сообщения:
    7
    Симпатии:
    0
    жаль...
    Всем спасибо за ответы.