"PHP" / Говнокод #2023 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
  36. 36
  37. 37
  38. 38
  39. 39
  40. 40
  41. 41
  42. 42
  43. 43
  44. 44
  45. 45
  46. 46
  47. 47
  48. 48
  49. 49
  50. 50
  51. 51
  52. 52
  53. 53
  54. 54
  55. 55
  56. 56
  57. 57
  58. 58
  59. 59
  60. 60
  61. 61
  62. 62
  63. 63
  64. 64
  65. 65
<?php
if (isset($_GET['cat'])) {$cat = $_GET['cat']; }
if (!isset($cat)) {$cat = 1;}
/* Проверяем, является ли переменная числом */
if (!preg_match("|^[\d]+$|", $cat)) {
exit ("<p>Неверный формат запроса! Проверьте URL!");
}
$result = mysql_query("SELECT * FROM wc_news_cat WHERE id='$cat'");
if (!$result)
{
echo "<p>Запрос на выборку данных из базы не прошел. Напишите об этом администратору<br> <strong>Код ошибки:</strong></p>";
exit(mysql_error());
}
if (mysql_num_rows($result) > 0)
{
$myrow = mysql_fetch_array($result); 
}
else
{
echo "<p>Информация по запросу не может быть извлечена в таблице нет записей.</p>";
exit();
}

/* Выводим новости */

$result = mysql_query("SELECT id,cat,title,news,view,data,author FROM wc_news WHERE cat='$cat'");
if (!$result)
{
echo "<p>Запрос на выборку данных из базы не прошел. Напишите об этом администратору<br> <strong>Код ошибки:</strong></p>";
exit(mysql_error());
}
if (mysql_num_rows($result) > 0)
{
$myrow = mysql_fetch_array($result); 
}

do 
{


printf ("<table align='center' class='news'>
         
		 <tr>
         <td class='news_title'>
		 <p class='news_name'><a href='news.php?id=%s'>%s</a></p>
		 <p class='news_adds'>Дата добавления: %s</p>
		 <p class='news_adds'>Автор урока: %s</p></td>
         </tr>
         
		 <tr>
         <td>%s <p class='news_view'>Просмотров: %s </p></td>
         </tr>
         
		 </table><br><br>",$myrow["id"],$myrow["title"],$myrow["author"],$myrow["news"], $myrow["view"]);
}
while ($myrow = mysql_fetch_array($result));

else
{
echo "<p>Информация по запросу не может быть извлечена в таблице нет записей.</p>";
exit();
}


?>

Запостил: Ildar Ildar, (Updated )

Комментарии (14) RSS

  • оригинальный подход =)
    !preg_match("|^[\d]+$|", $cat)

    кагбэ
    is_number($cat)
    Ответить
      • 1) не is_number(), а is_numeric()
        2) смысл? преобразуйте $_GET['cat'] в число intval() и работайте с нормальным целым

        p.s. хотя бы как-нибудь разделите логику и вывод данных, ну очень уж некрасиво выглядит код. что вы будете делать, если поменяется верстка?
        Ответить
  • Да уж... Копипаста никогда не умрет.
    И еще, в чем религиозный смысл юзать printf, когда можно воспользоваться обычной конкатенацией строк?
    Ответить
  • Тут почти каждую строку можно выводить в отдельную цитату. Особо порадовала гениальная конструкция шаблона вывода новости.
    Ответить
    • а меня всегда умиляли товарищи, ставящие (exit|die) при любой ошибке
      ну прям как в книжках по программированию!
      Ответить
  • Еще строку $result = mysql_query("SELECT id,cat,title,news,view,data,author FROM wc_news WHERE cat='$cat'");
    можно заменить на $result = mysql_query("SELECT * FROM wc_news WHERE cat='$cat'");
    запрос кстати выполнен будет быстрее
    Ответить
    • а я думал, что повсеместное применение * - плохой стиль.
      Ответить
  • кошмар какой-то
    аффтар не знал о ctype_digit()
    Ответить

Добавить комментарий

Я, guest, находясь в здравом уме и твердой памяти, торжественно заявляю:

    А не использовать ли нам bbcode?


    8