За последние 24 часа нас посетили 56824 программиста и 1682 робота. Сейчас ищут 1216 программистов ...

Присваивание при условии

Тема в разделе "PHP для новичков", создана пользователем Xpery, 26 окт 2017.

  1. Xpery

    Xpery Новичок

    С нами с:
    24 окт 2017
    Сообщения:
    4
    Симпатии:
    0
    Есть форма на сайте, куда человек вводит данные (калькулятор расчета доставки) рисунок1.PNG .
    Сейчас в расчетах ВЫСОТА, ДЛИНА И ШИРИНА не участвуют - участвуют только МАССА, АДРЕС ОТПРАВЛЕНИЯ и АДРЕС ДОСТАВКИ. То есть человек вводит массу, адрес отправления и адрес доставки и программа ищет цену для такой совокупности данных в базе данных.
    Необходимо внести условие в код: "Если вычисление ((ВЫСОТА*ДЛИНА*ШИРИНА)/5000) > МАССА, то МАССЕ присваивается новое значение, а именно МАССА = ((ВЫСОТА*ДЛИНА*ШИРИНА)/5000)".
    ПРИМЕР
    Высота (СМ): 30
    Длина (СМ): 50
    Ширина (СМ): 10
    Масса (КГ): 2
    Отправить из: Красноярск
    Отправить в: Санкт-Петербург

    ((ВЫСОТА*ДЛИНА*ШИРИНА)/5000) = (30*50*10)/5000=3, МАССА = 2 < 3, следовательно теперь МАССА = 3 и программа ищет в базе данных совокупность данных не для Красноярск - Санкт-Петербург 2 КГ, а для Красноярск - Санкт-Петербург 3 КГ

    Один человек сказал мне, что нельзя таким образом присвоить новое значение переменной, но вот простейшая реализация:
    PHP:
    1. <?php
    2.     $a = 5;
    3.     $b = 6;
    4. if ($a < $b) {
    5.     $a = $b;}
    6. echo ($a);
    Как выглядит код на сайте:
    PHP:
    1.     public static function calculate_cost( $atts ){
    2.         global $product;
    3.         $item_price = '';
    4.         if(isset($_POST['calculate-cost-submit'])){
    5.             $weight = $_POST['calculate-weight'];
    6.             $country = $_POST['calculate-location-from'];
    7.             $country2 = $_POST['calculate-location2-from'];
    8.            
    9.             $get_options = ot_get_option('calculate_cost');
    10.             if(!empty($get_options)){
    11.                 foreach( $get_options as $value ){
    12.                     $country_value = $value['calculate_country'];
    13.                     $country2_value = $value['calculate_country2'];
    14.                     if($country == $country_value && $country2 == $country2_value){
    15.                         $max_weight_value = $value['max_weight'];
    16.                         $min_weight_value = $value['min_weight'];
    17.                         if( ($weight <= $max_weight_value) && ($weight >= $min_weight_value) ) {
    18.                             $item_price = $value['item_price'];
    19.                             $item_price = '<div class="button form-control">'.esc_html__('total cost:','gocourier').'<span>'.get_woocommerce_currency_symbol().''.$item_price.'</span></div>';
    20.                         }              
    21.                     }
    22.                 }
    23.             }
    24.         }
    25.              // $res = ( $value_width * $value_height * $value_depth )/5000;
    26.                 //if ( $res > $weight ) {
    27.                 //    var_dump( $newRES = $weight * $res );
    28.  
    29.         // Attributes
    30.         $atts = shortcode_atts(
    31.             array(
    32.                 'form_style'            => 'default',
    33.             ), $atts, 'calculate_cost' );
    34.  
    35.         $html = '<div id="calculateform" class="ts-form-calculate form-'.$atts['form_style'].'">';
    36.            
    37.             $html .='<form class="ts-calculate-form" action="#calculateform" method="post">
    38.                <p><label for="calculate-height">Высота (СМ: </label>';
    39.                 if(isset($_POST['calculate-height'])){ $value_height = $_POST['calculate-height'];} else {$value_height = '';}
    40.                 $html .='<input type="text" name="calculate-height" value="'.$value_height.'" class="form-control" /></p>
    41.                <p><label for="calculate-widht">Ширина (СМ): </label>';
    42.                
    43.                 if(isset($_POST['calculate-width'])){ $value_width = $_POST['calculate-width'];} else {$value_width = '';}
    44.                 $html .='<input type="text" name="calculate-width" value="'.$value_width.'" class="form-control" /></p>
    45.                <p><label for="calculate-depth">Длина (СМ): </label>';
    46.                
    47.                 if(isset($_POST['calculate-depth'])){ $value_depth = $_POST['calculate-depth'];} else {$value_depth = '';}
    48.                 $html .='<input type="text" name="calculate-depth" value="'.$value_depth.'" class="form-control" /></p>
    49.                <p><label for="calculate-weight">Масса (КГ): </label>';
    50.                
    51.                 if(isset($_POST['calculate-weight'])){ $value_weight = $_POST['calculate-weight'];} else {$value_weight = '';}
    52.                 $html .='<input type="text" name="calculate-weight" value="'.$value_weight.'" class="form-control" /></p>
    53.                <p><label for="calculate-location-from">Отправление из: </label>';
    54.                
    55.                 if(isset($_POST['calculate-location-from']) && $_POST['calculate-location-from'] == 'AF'){$selected = 'selected="selected"';}else{$selected = '';}
    56.                 $html .='<select name="calculate-location-from" class="form-control">
    57.                    <option value="AF" '.$selected.'>Красноярск</option>';
    58.                    
    59.                     if(isset($_POST['calculate-location-from']) && $_POST['calculate-location-from'] == 'AL'){$selected = 'selected="selected"';}else{$selected = '';}
    60.                     $html .='<option value="AL" '.$selected.'>Санкт-Петербург</option>';
    61.                    
    62.                     if(isset($_POST['calculate-location-from']) && $_POST['calculate-location-from'] == 'DZ'){$selected = 'selected="selected"';}else{$selected = '';}
    63.                     $html .='<option value="DZ" '.$selected.'>Москва</option>';
    64.                    
    65.                     if(isset($_POST['calculate-location-from']) && $_POST['calculate-location-from'] == 'AS'){$selected = 'selected="selected"';}else{$selected = '';}
    66.                     $html .='<option value="AS" '.$selected.'>Новосибирск</option>';
    67.                 </select></p>
    68.                 <p><label for="calculate-location2-from">Доставка в: </label>';
    69.              
    70.                if(isset($_POST['calculate-location2-from']) && $_POST['calculate-location2-from'] == 'AF'){$selected = 'selected="selected"';}else{$selected = '';}
    71.                $html .='<select name="calculate-location2-from" class="form-control">
    72.                     <option value="AF" '.$selected.'>Красноярск</option>';
    73.                  
    74.                    if(isset($_POST['calculate-location2-from']) && $_POST['calculate-location2-from'] == 'AL'){$selected = 'selected="selected"';}else{$selected = '';}
    75.                    $html .='<option value="AL" '.$selected.'>Санкт-Петербург</option>';
    76.                  
    77.                    if(isset($_POST['calculate-location2-from']) && $_POST['calculate-location2-from'] == 'DZ'){$selected = 'selected="selected"';}else{$selected = '';}
    78.                    $html .='<option value="DZ" '.$selected.'>Москва</option>
    79.                 </select></p>';
    80.  
    81.                $html .='<p>
    82.                 <label for="calculate-submit"> &nbsp;</label>
    83.                 <input type="submit" class="button form-control" value="'.esc_html__('calculate cost', 'gocourier').'" name="calculate-cost-submit" /></p>';
    84.                if(isset($_POST['calculate-cost-submit'])) {
    85.                    if($item_price != ''){
    86.                        $html .= $item_price;
    87.                    } else {
    88.                        $html .= '<div class="button form-control">'.esc_html__('price not set for this query','gocourier').'</div>';
    89.                    }
    90.                  
    91.                }
    92.            $html .='</form>
    93.         </div>';
    94.        return $html;
    95.    }
    Подскажите, куда именно и в какой форме нужно вставить этот небольшой код. Задача вроде и простая, но все не могу додуматься...

    Это вторая тема, в первой я не очень понятно сформулировал задачу и там мне никто не ответил (https://php.ru/forum/threads/perenaznachenie-peremennoj-v-kalkuljatore-rascheta-dostavki.66725/).
     
  2. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.866
    Симпатии:
    753
    Адрес:
    Татарстан
    нда.... а если пунктов назначения 100 будет? что 100 сравнений писать будете?
     
  3. Xpery

    Xpery Новичок

    С нами с:
    24 окт 2017
    Сообщения:
    4
    Симпатии:
    0
    А как по другому можно решить эту задачу? Через цикл?
    У меня только эти пункты сравниваются и все, других никаких не будет
     
  4. Sail

    Sail Старожил

    С нами с:
    1 ноя 2016
    Сообщения:
    1.593
    Симпатии:
    362
    @Xpery, в 5-й строке определяется введенный в форме вес. В 11-й строке начинается проверка заданных опций. В 17-й строке идет проверка на вхождение в интервал [минимально допустимый вес .. максимально допустимый вес] для конкретного набора опций.
    Следовательно, если вы хотите установить абсолютный минимум по весу в 3 кг, можно, например, до 11-й строки и после 5-й выполнить проверку и переприсвоить значение. (if($weight < 3) { $weight = 3;}).
    Но лучше этот "абсолютный минимум" сделать отдельной опцией... и использовать не константу 3, а значение опции..
     
    Xpery нравится это.
  5. Xpery

    Xpery Новичок

    С нами с:
    24 окт 2017
    Сообщения:
    4
    Симпатии:
    0
    Там не то, чтобы абсолютный минимум по весу, там главное, чтобы "Если вычисление ((ВЫСОТА*ДЛИНА*ШИРИНА)/5000) > МАССА, то МАССЕ присваивается новое значение, а именно МАССА = ((ВЫСОТА*ДЛИНА*ШИРИНА)/5000)
    Вообще я уже решил, но у меня все именно так, как вы сказали :)
    PHP:
    1. public static function calculate_cost( $atts ){
    2.         global $product;
    3.         $item_price = '';
    4.         if(isset($_POST['calculate-cost-submit'])){
    5.             $weight = $_POST['calculate-weight'];
    6.            
    7.             if(isset($_POST['calculate-height'])){ $value_height = $_POST['calculate-height'];} else {$value_height = '';}
    8.             if(isset($_POST['calculate-width'])){ $value_width = $_POST['calculate-width'];} else {$value_width = '';}
    9.             if(isset($_POST['calculate-depth'])){ $value_depth = $_POST['calculate-depth'];} else {$value_depth = '';}
    10.            
    11.             if ( $weight <  ($value_width * $value_height * $value_depth )/5000) {
    12.                 $weight = ceil(($value_width * $value_height * $value_depth )/5000);
    13.                 }
    14.            
    15.             $country = $_POST['calculate-location-from'];
    16.             $country2 = $_POST['calculate-location2-from'];
    17.            
    18.             $get_options = ot_get_option('calculate_cost');
    19.             if(!empty($get_options)){
    20.                 foreach( $get_options as $value ){
    21.                     $country_value = $value['calculate_country'];
    22.                     $country2_value = $value['calculate_country2'];
    23.                     if($country == $country_value && $country2 == $country2_value){
    24.                         $max_weight_value = $value['max_weight'];
    25.                         $min_weight_value = $value['min_weight'];
    26.                         if( ($weight <= $max_weight_value) && ($weight >= $min_weight_value) ) {
    27.                             $item_price = $value['item_price'];
    28.                             $item_price = '<div class="button form-control">'.esc_html__('total cost:','gocourier').'<span>'.get_woocommerce_currency_symbol().''.$item_price.'</span></div>';
    29.                         }              
    30.                     }
    31.                 }
    32.             }
    33.         }
    34.  
    35.         // Attributes
    36.         $atts = shortcode_atts(
    37.             array(
    38.                 'form_style'            => 'default',
    39.             ), $atts, 'calculate_cost' );
    40.  
    41.         $html = '<div id="calculateform" class="ts-form-calculate form-'.$atts['form_style'].'">';
    42.            
    43.             $html .='<form class="ts-calculate-form" action="#calculateform" method="post">
    44.                <p><label for="calculate-height">Высота (СМ: </label>';
    45.                 $html .='<input type="text" name="calculate-height" value="'.$value_height.'" class="form-control" /></p>
    46.                <p><label for="calculate-widht">Ширина (СМ): </label>';
    47.            
    48.                 $html .='<input type="text" name="calculate-width" value="'.$value_width.'" class="form-control" /></p>
    49.                <p><label for="calculate-depth">Длина (СМ): </label>';
    50.                
    51.                 $html .='<input type="text" name="calculate-depth" value="'.$value_depth.'" class="form-control" /></p>
    52.                <p><label for="calculate-weight">Масса (КГ): </label>';
    53.                
    54.                 if(isset($_POST['calculate-weight'])){ $value_weight = $_POST['calculate-weight'];} else {$value_weight = '';}
    55.                 $html .='<input type="text" name="calculate-weight" value="'.$value_weight.'" class="form-control" /></p>
    56.                <p><label for="calculate-location-from">Отправление из: </label>';
    57.                
    58.                 if(isset($_POST['calculate-location-from']) && $_POST['calculate-location-from'] == 'AF'){$selected = 'selected="selected"';}else{$selected = '';}
    59.                 $html .='<select name="calculate-location-from" class="form-control">
    60.                   <option value="AF" '.$selected.'>Красноярск</option>';
    61.                  
    62.                     if(isset($_POST['calculate-location-from']) && $_POST['calculate-location-from'] == 'AL'){$selected = 'selected="selected"';}else{$selected = '';}
    63.                     $html .='<option value="AL" '.$selected.'>Санкт-Петербург</option>';
    64.                  
    65.                     if(isset($_POST['calculate-location-from']) && $_POST['calculate-location-from'] == 'DZ'){$selected = 'selected="selected"';}else{$selected = '';}
    66.                     $html .='<option value="DZ" '.$selected.'>Москва</option>';
    67.                  
    68.                     if(isset($_POST['calculate-location-from']) && $_POST['calculate-location-from'] == 'AS'){$selected = 'selected="selected"';}else{$selected = '';}
    69.                     $html .='<option value="AS" '.$selected.'>Новосибирск</option>';
    70.                 </select></p>
    71.                 <p><label for="calculate-location2-from">Доставка в: </label>';
    72.            
    73.               if(isset($_POST['calculate-location2-from']) && $_POST['calculate-location2-from'] == 'AF'){$selected = 'selected="selected"';}else{$selected = '';}
    74.               $html .='<select name="calculate-location2-from" class="form-control">
    75.                     <option value="AF" '.$selected.'>Красноярск</option>';
    76.                
    77.                   if(isset($_POST['calculate-location2-from']) && $_POST['calculate-location2-from'] == 'AL'){$selected = 'selected="selected"';}else{$selected = '';}
    78.                   $html .='<option value="AL" '.$selected.'>Санкт-Петербург</option>';
    79.                
    80.                   if(isset($_POST['calculate-location2-from']) && $_POST['calculate-location2-from'] == 'DZ'){$selected = 'selected="selected"';}else{$selected = '';}
    81.                   $html .='<option value="DZ" '.$selected.'>Москва</option>
    82.                 </select></p>';
    83.               $html .='<p>
    84.                 <label for="calculate-submit"> &nbsp;</label>
    85.                 <input type="submit" class="button form-control" value="'.esc_html__('calculate cost', 'gocourier').'" name="calculate-cost-submit" /></p>';
    86.               if(isset($_POST['calculate-cost-submit'])) {
    87.                   if($item_price != ''){
    88.                       $html .= $item_price;
    89.                   } else {
    90.                       $html .= '<div class="button form-control">'.esc_html__('price not set for this query','gocourier').'</div>';
    91.                   }
    92.                
    93.               }
    94.           $html .='</form>
    95.         </div>';
    96.       return $html;
    97.   }