Как оптимизировать MySQL запрос и возврат списка товаров - PullRequest
0 голосов
/ 17 июня 2020

Я пытаюсь научиться программированию и в настоящее время работаю над очень простой корзиной продуктов. С кодом ниже:

      $r_id = '1';
  $r_site_id = 'AHLIM';
  $r_order_id = '167';  

 ////////////CHECK FOR EACH TYPE OF PRODUCT IN ORDER//////////////
 $query01 = "SELECT * FROM ra_ordered_products WHERE extras='0' AND product_type IN (1,2,3,4,5,6,7,8,9) AND order_id='$r_order_id' AND site_id='$r_site_id' GROUP BY product_type ORDER BY product_type ASC";
 $result01 = mysql_query($query01);

 while($r01 = mysql_fetch_array($result01)) {

 $g_product_type = $r01['product_type'];

////////////LIST PRODUCTS WITH THE TYPE GIVEN ABOVE/////////////////////////
 $query03 = "SELECT * FROM ra_ordered_products WHERE product_type IN ($g_product_type) AND order_id='$r_order_id' AND site_id='$r_site_id' GROUP BY product_id ORDER BY id ASC";
 $result03 = mysql_query($query03);

 while($r03 = mysql_fetch_array($result03)) {

 $p_id = $r03['id'];
 $p_product_id = $r03['product_id'];
 $p_product_type = $r03['product_type'];
 $p_product_extras = $r03['extras'];
 $p_product_comment = $r03['comment'];

 //////////////PRINT PRODUCT DETAILS FOR THE PRODUCT GIVEM///////////////
  $query04 = "SELECT * FROM ra_products WHERE id='$p_product_id'";
  $result04 = mysql_query($query04);
  $r04 = mysql_fetch_array($result04);

  $t_product_id = $r04['id'];
  $t_product_price = $r04['price'];
  $t_product_promo_price = $r04['promo_price'];
  $t_product_title = $r04['title'];

    //////////////////GIVE A COUNT OF THE PRODUCTS PER PRODUCT////////////////////////
    $counter03 = mysql_query("SELECT COUNT( * ) AS total_p_number FROM ra_ordered_products WHERE product_type NOT IN (999) AND extras='$p_product_extras' AND order_id='$r_order_id' AND product_id='$t_product_id' AND site_id='$r_site_id'"); 
    $num03 = mysql_fetch_assoc($counter03);
    $count03 = $num03['total_p_number'];


  $t_product_price=number_format((float)$t_product_price, 2, '.', '');
  $t_product_promo_price=number_format((float)$t_product_promo_price, 2, '.', '');

      if($p_product_type=='4') { $voucher_postfix='(Voucher)'; } else { $voucher_postfix=''; }  
 ///////////////CHECK FOR EXTRAS ADDED TO THIS PRODUCT//////////////////
    $query11 = "SELECT * FROM ra_ordered_products WHERE extras!='0' AND product_id='$t_product_id' AND order_id='$r_order_id' AND site_id='$r_site_id' GROUP BY extras ORDER BY date ASC";
     $result11 = mysql_query($query11);

     while($r11 = mysql_fetch_array($result11)) {

     $ep_id = $r11['id'];
     $ep_product_id = $r11['extras'];
//////////////////PRINT EXTRAS//////////////
      $query07 = "SELECT * FROM ra_products_extrass WHERE id='$ep_product_id'";     
      $result07 = mysql_query($query07);
      $r07 = mysql_fetch_array($result07);

      $e_name = $r07['extrass_name'];
      $e_price = $r07['extrass_price'];

        if($e_price!='') { $print_extras="Extras: $e_name - $e_price<br />"; } else { $print_extras=""; }

      } 

      if($p_product_type=='3' && $p_product_extras!='0')    { $t_product_price=$e_price; }      
         echo"$t_product_id - $t_product_title $voucher_postfix - $count03 - $t_product_price - $t_product_promo_price<br />$print_extras";

 }

 }
 echo"<br />";

Теперь это дает мне результат:

168 - 55 Minute Full Body Swedish Massage - 1 - 83.00 - 0.00 170 - Ultimate Full Body Swedish Massage - 1 - 112.00 - 0.00 81 - Fish Finger Roll - 1 - 12.00 - 0.00 83 - Sirloin Steak - 1 - 13.05 - 12.95 96 - Burger - 2 - 14.00 - 0.00 Extras: Smoked Bacon - 1.50 8 - 34. Pinot Grigio, Italy - 1 - 8.70 - 0.00 Extras: Large - 8.70 11 - 54. Merlot, Chile - 1 - 26.00 - 0.00 Extras: Large - 8.70 24 - Cranberry - 1 - 2.25 - 0.00 Extras: Large - 8.70 50 - Absolut Raspberry - 1 - 6.75 - 0.00 Extras: Large - 8.70 26 - J2O - 1 - 3.50 - 0.00 Extras: Large - 8.70 10 - 31. Sauvignon Blanc, NZ - 1 - 9.00 - 0.00 Extras: Small - 9.00 223 - Thank You (Voucher) - 1 - 25.00 - 0.00 Extras: Small - 9.00

и здесь пара вопросов, может ли кто-нибудь показать мне пример того, как минимизировать / оптимизируйте этот код, а также, как вы можете видеть, дополнительные элементы извлекаются из любого элемента, даже если они не связаны с ним. 1014 * и Pinot Grigio должны иметь цену, взятую из дополнительных услуг, но дополнительные не должны быть перечислены.

Я знаю, что это может быть не блестящее кодирование, и я надеюсь выучить его лучше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...