Говнокод отечественного производства на PHP

Итак, прошу оценить код До-После
ДО
PHP:
 function ransmes () {
      
      $r1 = rand (742, 872);
      return "$r1";
  }
  function ranacces () {
      
      $r1 = rand (1, 230);
      return "$r1";
  }
  function ranpencil () {
      
      $r1 = rand (426, 644);
      return "$r1";
  }
 
  function ranwash () {
      
      $r1 = rand (657, 715);
      return "$r1";
  }

$Query3 = mysqli_query($CONNECT, 'SELECT `id`, `name`, `namecate`, `priceflo`, `namephoto` FROM `products` WHERE `id` = '.$ransmes1.' AND `namecate` = "smes" ORDER BY `id` DESC LIMIT 1');
while ($Row = mysqli_fetch_assoc($Query3)) $Hit1 .= '<a href="/product2/material/id/'.$ransmes1.'"><div class="rg1cart"><span>'.$Row['name'].'</span>
<img src="/catalog/product/smes/img/1/'.$Row['namephoto'].'.jpg" title="'.$Row['name'].'" alt="'.$Row['id'].'" width="211" height="211">

<div class="rg1text1">Цена: <font color="#4f4f4f">'.ceil (KursRub($Row['priceflo'])).'</font> руб.</div>
<div class="BuybuttonHome">'.BUY ($Row['id']).'</div>
</div></a>';

$ranacces1 = ranacces();

$Query4 = mysqli_query($CONNECT, 'SELECT `id`, `name`, `namecate`, `priceflo` FROM `products` WHERE `id` = '.$ranacces1.' AND `namecate` = "accessories" ORDER BY `id` DESC LIMIT 1');
while ($Row = mysqli_fetch_assoc($Query4)) $Hit1 .= '<a href="/accessories/material/id/'.$ranacces1.'"><div class="rg1cart"><span>'.$Row['name'].'</span>
<img src="/catalog/product/accessories/img/1/'.$ranacces1.'.jpg" title="'.$Row['name'].'" alt="'.$Row['id'].'" width="211" height="211">

<div class="rg1text1">Цена: <font color="#4f4f4f">'.ceil (KursRub($Row['priceflo'])).'</font> руб.</div>
<div class="BuybuttonHome">'.BUY ($Row['id']).'</div>
</div></a>';

$ranpencil1 = ranpencil();

$Query5 = mysqli_query($CONNECT, 'SELECT `id`, `name`, `namecate`, `price`, `namephoto` FROM `products` WHERE `id` = '.$ranpencil1.' AND `namecate` = "pencilcase" ORDER BY `id` DESC LIMIT 1');
while ($Row = mysqli_fetch_assoc($Query5)) $Hit1 .= '<a href="/pencilcase/material/id/'.$ranpencil1.'"><div class="rg1cart"><span>'.$Row['name'].'</span>
<img src="/catalog/product/pencilcase/img/1/'.$Row['namephoto'].'.jpg" title="'.$Row['name'].'" alt="'.$Row['id'].'" width="211" height="211">

<div class="rg1text1">Цена: <font color="#4f4f4f">'.$Row['price'].'</font> руб.</div>
<div class="BuybuttonHome">'.BUY ($Row['id']).'</div>
</div></a>';

$ranwash1 = ranwash();

$Query6 = mysqli_query($CONNECT, 'SELECT `id`, `name`, `namecate`, `priceflo`, `namephoto` FROM `products` WHERE `id` = '.$ranwash1.' AND `namecate` = "shower" ORDER BY `id` DESC LIMIT 1');
while ($Row = mysqli_fetch_assoc($Query6)) $Hit1 .= '<a href="/shower/material/id/'.$ranwash1.'"><div class="rg1cart"><span>'.$Row['name'].'</span>
<img src="/catalog/product/shower/img/1/'.$Row['namephoto'].'.jpg" title="'.$Row['name'].'" alt="'.$Row['id'].'" width="211" height="211">

<div class="rg1text1">Цена: <font color="#4f4f4f">'.ceil (KursRub($Row['priceflo'])).'</font> руб.</div>
<div class="BuybuttonHome">'.BUY ($Row['id']).'</div>
</div></a>';

После

PHP:
$db = getPDOconnect (); // Подключение к БД
$id=array((rand(1, 230)),(rand(426, 644)),(rand(657, 715)),(rand(742, 872)));
$in= str_repeat('?,', count($id) - 1) . '?';
$query = "SELECT * FROM products WHERE `id` IN ($in)";
$stm = $db->prepare($query);
$stm->execute($id);
$echo_result=array();
foreach ($stm as $row)
{
   $price_rub = $row['price'] + ceil(KursRub($row['priceflo']));
     $echo_result = '<a href="/'.Refresh_Url_Product2($row['namecate']).'/material/id/'.$row['id'].'"><div class="rg1cart"><span>'.$row['name'].'</span>
        
         <img src="/catalog/product/'.Way_Product2($row['namecate']).'/img/1/'.$row['namephoto'].''.JPG_PNG2($row['namecate']).'" alt="'.$row['id'].'" width="211" height="211">
         <div class="rg1text1">Цена: <font color="#4f4f4f">'.$price_rub.' </font> руб.
         <div class="BuybuttonHome">'.BUY ($row['id']).'</div></div>
         </div></a>';
         echo $echo_result;
    
}

Насколько понимаете, работает одинаково.
 

    Nolanson

    Баллов: 1
    так держать

    Andragor

    Баллов: 4
    Это лучше, чем спиваться :DDD

    Forcecat

    Баллов: 20
    Добавлю

Низ, первый говнокод, но логика до и после разная...


Да и это тупой рефакторинг. Твой код выглядит красевее, но все так же можно использовать в это теме как пример как не надо.
 
Низ, только один вопрос. Зачем?
Объявлять переменную echo_result как массив
Код:
$echo_result=array();
а потом преобразовывать в строку
Код:
$echo_result = '<a ...
 
òbi, забыл убрать эту часть. До этого думал использовать
$echo_result вне цикла, однако этого не потребовалось. Мне правда все-равно кажется, что это все очень еще плохо и далеко от идеала. Однако все-равно спасибо вам за оценку.
 
Низ, вот пример
Код:
    switch ($_SESSION['Ul_params']) {
        case 0: return '`id` ASC';
        case 1: return '`name` ASC';
        case 2: return '`name` DESC';
        case 3: return '`priceflo` ASC';
        case 4: return '`priceflo` DESC';
        case 5: return '`id` DESC';
        //default: unregistered param!
    }

Как минимум, нужно еще добавить проверку if(isset($_SESSION[....]) { .... }
 
Итак, прошу оценить код До-После
ДО
PHP:
 function ransmes () {
    
      $r1 = rand (742, 872);
      return "$r1";
  }
  function ranacces () {
    
      $r1 = rand (1, 230);
      return "$r1";
  }
  function ranpencil () {
    
      $r1 = rand (426, 644);
      return "$r1";
  }

  function ranwash () {
    
      $r1 = rand (657, 715);
      return "$r1";
  }

$Query3 = mysqli_query($CONNECT, 'SELECT `id`, `name`, `namecate`, `priceflo`, `namephoto` FROM `products` WHERE `id` = '.$ransmes1.' AND `namecate` = "smes" ORDER BY `id` DESC LIMIT 1');
while ($Row = mysqli_fetch_assoc($Query3)) $Hit1 .= '<a href="/product2/material/id/'.$ransmes1.'"><div class="rg1cart"><span>'.$Row['name'].'</span>
<img src="/catalog/product/smes/img/1/'.$Row['namephoto'].'.jpg" title="'.$Row['name'].'" alt="'.$Row['id'].'" width="211" height="211">

<div class="rg1text1">Цена: <font color="#4f4f4f">'.ceil (KursRub($Row['priceflo'])).'</font> руб.</div>
<div class="BuybuttonHome">'.BUY ($Row['id']).'</div>
</div></a>';

$ranacces1 = ranacces();

$Query4 = mysqli_query($CONNECT, 'SELECT `id`, `name`, `namecate`, `priceflo` FROM `products` WHERE `id` = '.$ranacces1.' AND `namecate` = "accessories" ORDER BY `id` DESC LIMIT 1');
while ($Row = mysqli_fetch_assoc($Query4)) $Hit1 .= '<a href="/accessories/material/id/'.$ranacces1.'"><div class="rg1cart"><span>'.$Row['name'].'</span>
<img src="/catalog/product/accessories/img/1/'.$ranacces1.'.jpg" title="'.$Row['name'].'" alt="'.$Row['id'].'" width="211" height="211">

<div class="rg1text1">Цена: <font color="#4f4f4f">'.ceil (KursRub($Row['priceflo'])).'</font> руб.</div>
<div class="BuybuttonHome">'.BUY ($Row['id']).'</div>
</div></a>';

$ranpencil1 = ranpencil();

$Query5 = mysqli_query($CONNECT, 'SELECT `id`, `name`, `namecate`, `price`, `namephoto` FROM `products` WHERE `id` = '.$ranpencil1.' AND `namecate` = "pencilcase" ORDER BY `id` DESC LIMIT 1');
while ($Row = mysqli_fetch_assoc($Query5)) $Hit1 .= '<a href="/pencilcase/material/id/'.$ranpencil1.'"><div class="rg1cart"><span>'.$Row['name'].'</span>
<img src="/catalog/product/pencilcase/img/1/'.$Row['namephoto'].'.jpg" title="'.$Row['name'].'" alt="'.$Row['id'].'" width="211" height="211">

<div class="rg1text1">Цена: <font color="#4f4f4f">'.$Row['price'].'</font> руб.</div>
<div class="BuybuttonHome">'.BUY ($Row['id']).'</div>
</div></a>';

$ranwash1 = ranwash();

$Query6 = mysqli_query($CONNECT, 'SELECT `id`, `name`, `namecate`, `priceflo`, `namephoto` FROM `products` WHERE `id` = '.$ranwash1.' AND `namecate` = "shower" ORDER BY `id` DESC LIMIT 1');
while ($Row = mysqli_fetch_assoc($Query6)) $Hit1 .= '<a href="/shower/material/id/'.$ranwash1.'"><div class="rg1cart"><span>'.$Row['name'].'</span>
<img src="/catalog/product/shower/img/1/'.$Row['namephoto'].'.jpg" title="'.$Row['name'].'" alt="'.$Row['id'].'" width="211" height="211">

<div class="rg1text1">Цена: <font color="#4f4f4f">'.ceil (KursRub($Row['priceflo'])).'</font> руб.</div>
<div class="BuybuttonHome">'.BUY ($Row['id']).'</div>
</div></a>';

После

PHP:
$db = getPDOconnect (); // Подключение к БД
$id=array((rand(1, 230)),(rand(426, 644)),(rand(657, 715)),(rand(742, 872)));
$in= str_repeat('?,', count($id) - 1) . '?';
$query = "SELECT * FROM products WHERE `id` IN ($in)";
$stm = $db->prepare($query);
$stm->execute($id);
$echo_result=array();
foreach ($stm as $row)
{
   $price_rub = $row['price'] + ceil(KursRub($row['priceflo']));
     $echo_result = '<a href="/'.Refresh_Url_Product2($row['namecate']).'/material/id/'.$row['id'].'"><div class="rg1cart"><span>'.$row['name'].'</span>
      
         <img src="/catalog/product/'.Way_Product2($row['namecate']).'/img/1/'.$row['namephoto'].''.JPG_PNG2($row['namecate']).'" alt="'.$row['id'].'" width="211" height="211">
         <div class="rg1text1">Цена: <font color="#4f4f4f">'.$price_rub.' </font> руб.
         <div class="BuybuttonHome">'.BUY ($row['id']).'</div></div>
         </div></a>';
         echo $echo_result;
  
}

Насколько понимаете, работает одинаково.

Совет.. откажитесь от внедрения HTML кода в PHP... это ужасно, как минимум - потом трудно будет вносить изменения.. Используйте готовые шаблонизатора, например twig, smarty.. (доки по приведенным шаблонизаторам в интернете - полно)
 
mr.s4z, я посмотрю, что это такое. Впервые слышу про это если честно
 
mr.s4z, я посмотрю, что это такое. Впервые слышу про это если честно

Если приходилось использовать CMS, например DLE, StressWeb - любой человек, который имеет минимальные знания по HTML, сможет без труда поменять шаблон.. Папка template, которая содержит в себе .tpl файлы. Тот же титул можно будет вывести не как:
Код:
echo "<title> $title </title>"
а по человечески
Код:
<title> {{ title }}</title>
 
$echo_result = '<a href="/'.Refresh_Url_Product2($row['namecate']).'/material/id/'.$row['id'].'"><div class="rg1cart"><span>'.$row['name'].'</span> <img src="/catalog/product/'.Way_Product2($row['namecate']).'/img/1/'.$row['namephoto'].''.JPG_PNG2($row['namecate']).'" alt="'.$row['id'].'" width="211" height="211"> <div class="rg1text1">Цена: <font color="#4f4f4f">'.$price_rub.' </font> руб. <div class="BuybuttonHome">'.BUY ($row['id']).'</div></div> </div></a>';
Мало кто знает, но в PHP есть разница между двойными и одинарными кавычками, и они предназначаются для разных целей применения.
Если ты проведешь тест, ты увидишь, что твой код где будет использоваться с одинарные кавычки (как в данном случае) будет медленнее (в некоторых случаях в СОТНЮ раз), чем если бы ты использовал двойные.
Дело в том, что одинарные кавычки используются чисто для строк, они первично не предназначены что там будет ожидаться переменная, парсер PHP не ищет там переменную изначально, а конкатенация строк требует дополнительного времени и ресурсов.
По этой причине, если в строке будет переменная, используй двойные кавычки.
Вообще это всё есть на официальном сайте и более развернуто, где-то в разделе о строках.

function ransmes () { $r1 = rand (742, 872); return "$r1"; } function ranacces () { $r1 = rand (1, 230); return "$r1"; } function ranpencil () { $r1 = rand (426, 644); return "$r1"; } function ranwash () { $r1 = rand (657, 715); return "$r1"; }
Зачем так много функций, если можно всё сделать в одной?
PHP:
function ransmes ($rnd1 = 1, $rnd2 = 999) : int {
    return rand($rnd1, $rnd2);
}
 
Logan22, крутые комменты. Про ковычки не знал. Спасибо
 
Обратите внимание, что данный пользователь заблокирован! Не совершайте с ним никаких сделок! Перейдите в его профиль, чтобы узнать причину блокировки.
Мало кто знает, но в PHP есть разница между двойными и одинарными кавычками, и они предназначаются для разных целей применения.
Если ты проведешь тест, ты увидишь, что твой код где будет использоваться с одинарные кавычки (как в данном случае) будет медленнее (в некоторых случаях в СОТНЮ раз), чем если бы ты использовал двойные.
Дело в том, что одинарные кавычки используются чисто для строк, они первично не предназначены что там будет ожидаться переменная, парсер PHP не ищет там переменную изначально, а конкатенация строк требует дополнительного времени и ресурсов.
По этой причине, если в строке будет переменная, используй двойные кавычки.
Вообще это всё есть на официальном сайте и более развернуто, где-то в разделе о строках.


Зачем так много функций, если можно всё сделать в одной?
PHP:
function ransmes ($rnd1 = 1, $rnd2 = 999) : int {
    return rand($rnd1, $rnd2);
}
Зачем вообще нужно объявлять функцию если можно просто rand() использовать сразу...

JavaScript:
{
    name: 'add',
    path: '/addserver', component: ()=> import('./components/Nahui.vue') }

у себя нашёл
 
Последнее редактирование модератором:
Назад
Сверху Снизу