Есть форма на сайте, куда человек вводит данные (калькулятор расчета доставки) . Сейчас в расчетах ВЫСОТА, ДЛИНА И ШИРИНА не участвуют - участвуют только МАССА, АДРЕС ОТПРАВЛЕНИЯ и АДРЕС ДОСТАВКИ. То есть человек вводит массу, адрес отправления и адрес доставки и программа ищет цену для такой совокупности данных в базе данных. Необходимо внести условие в код: "Если вычисление ((ВЫСОТА*ДЛИНА*ШИРИНА)/5000) > МАССА, то МАССЕ присваивается новое значение, а именно МАССА = ((ВЫСОТА*ДЛИНА*ШИРИНА)/5000)". ПРИМЕР Высота (СМ): 30 Длина (СМ): 50 Ширина (СМ): 10 Масса (КГ): 2 Отправить из: Красноярск Отправить в: Санкт-Петербург ((ВЫСОТА*ДЛИНА*ШИРИНА)/5000) = (30*50*10)/5000=3, МАССА = 2 < 3, следовательно теперь МАССА = 3 и программа ищет в базе данных совокупность данных не для Красноярск - Санкт-Петербург 2 КГ, а для Красноярск - Санкт-Петербург 3 КГ Один человек сказал мне, что нельзя таким образом присвоить новое значение переменной, но вот простейшая реализация: PHP: <?php $a = 5; $b = 6; if ($a < $b) { $a = $b;} echo ($a); Как выглядит код на сайте: PHP: public static function calculate_cost( $atts ){ global $product; $item_price = ''; if(isset($_POST['calculate-cost-submit'])){ $weight = $_POST['calculate-weight']; $country = $_POST['calculate-location-from']; $country2 = $_POST['calculate-location2-from']; $get_options = ot_get_option('calculate_cost'); if(!empty($get_options)){ foreach( $get_options as $value ){ $country_value = $value['calculate_country']; $country2_value = $value['calculate_country2']; if($country == $country_value && $country2 == $country2_value){ $max_weight_value = $value['max_weight']; $min_weight_value = $value['min_weight']; if( ($weight <= $max_weight_value) && ($weight >= $min_weight_value) ) { $item_price = $value['item_price']; $item_price = '<div class="button form-control">'.esc_html__('total cost:','gocourier').'<span>'.get_woocommerce_currency_symbol().''.$item_price.'</span></div>'; } } } } } // $res = ( $value_width * $value_height * $value_depth )/5000; //if ( $res > $weight ) { // var_dump( $newRES = $weight * $res ); // Attributes $atts = shortcode_atts( array( 'form_style' => 'default', ), $atts, 'calculate_cost' ); $html = '<div id="calculateform" class="ts-form-calculate form-'.$atts['form_style'].'">'; $html .='<form class="ts-calculate-form" action="#calculateform" method="post"> <p><label for="calculate-height">Высота (СМ: </label>'; if(isset($_POST['calculate-height'])){ $value_height = $_POST['calculate-height'];} else {$value_height = '';} $html .='<input type="text" name="calculate-height" value="'.$value_height.'" class="form-control" /></p> <p><label for="calculate-widht">Ширина (СМ): </label>'; if(isset($_POST['calculate-width'])){ $value_width = $_POST['calculate-width'];} else {$value_width = '';} $html .='<input type="text" name="calculate-width" value="'.$value_width.'" class="form-control" /></p> <p><label for="calculate-depth">Длина (СМ): </label>'; if(isset($_POST['calculate-depth'])){ $value_depth = $_POST['calculate-depth'];} else {$value_depth = '';} $html .='<input type="text" name="calculate-depth" value="'.$value_depth.'" class="form-control" /></p> <p><label for="calculate-weight">Масса (КГ): </label>'; if(isset($_POST['calculate-weight'])){ $value_weight = $_POST['calculate-weight'];} else {$value_weight = '';} $html .='<input type="text" name="calculate-weight" value="'.$value_weight.'" class="form-control" /></p> <p><label for="calculate-location-from">Отправление из: </label>'; if(isset($_POST['calculate-location-from']) && $_POST['calculate-location-from'] == 'AF'){$selected = 'selected="selected"';}else{$selected = '';} $html .='<select name="calculate-location-from" class="form-control"> <option value="AF" '.$selected.'>Красноярск</option>'; if(isset($_POST['calculate-location-from']) && $_POST['calculate-location-from'] == 'AL'){$selected = 'selected="selected"';}else{$selected = '';} $html .='<option value="AL" '.$selected.'>Санкт-Петербург</option>'; if(isset($_POST['calculate-location-from']) && $_POST['calculate-location-from'] == 'DZ'){$selected = 'selected="selected"';}else{$selected = '';} $html .='<option value="DZ" '.$selected.'>Москва</option>'; if(isset($_POST['calculate-location-from']) && $_POST['calculate-location-from'] == 'AS'){$selected = 'selected="selected"';}else{$selected = '';} $html .='<option value="AS" '.$selected.'>Новосибирск</option>'; </select></p> <p><label for="calculate-location2-from">Доставка в: </label>'; if(isset($_POST['calculate-location2-from']) && $_POST['calculate-location2-from'] == 'AF'){$selected = 'selected="selected"';}else{$selected = '';} $html .='<select name="calculate-location2-from" class="form-control"> <option value="AF" '.$selected.'>Красноярск</option>'; if(isset($_POST['calculate-location2-from']) && $_POST['calculate-location2-from'] == 'AL'){$selected = 'selected="selected"';}else{$selected = '';} $html .='<option value="AL" '.$selected.'>Санкт-Петербург</option>'; if(isset($_POST['calculate-location2-from']) && $_POST['calculate-location2-from'] == 'DZ'){$selected = 'selected="selected"';}else{$selected = '';} $html .='<option value="DZ" '.$selected.'>Москва</option> </select></p>'; $html .='<p> <label for="calculate-submit"> </label> <input type="submit" class="button form-control" value="'.esc_html__('calculate cost', 'gocourier').'" name="calculate-cost-submit" /></p>'; if(isset($_POST['calculate-cost-submit'])) { if($item_price != ''){ $html .= $item_price; } else { $html .= '<div class="button form-control">'.esc_html__('price not set for this query','gocourier').'</div>'; } } $html .='</form> </div>'; return $html; } Подскажите, куда именно и в какой форме нужно вставить этот небольшой код. Задача вроде и простая, но все не могу додуматься... Это вторая тема, в первой я не очень понятно сформулировал задачу и там мне никто не ответил (https://php.ru/forum/threads/perenaznachenie-peremennoj-v-kalkuljatore-rascheta-dostavki.66725/).
А как по другому можно решить эту задачу? Через цикл? У меня только эти пункты сравниваются и все, других никаких не будет
@Xpery, в 5-й строке определяется введенный в форме вес. В 11-й строке начинается проверка заданных опций. В 17-й строке идет проверка на вхождение в интервал [минимально допустимый вес .. максимально допустимый вес] для конкретного набора опций. Следовательно, если вы хотите установить абсолютный минимум по весу в 3 кг, можно, например, до 11-й строки и после 5-й выполнить проверку и переприсвоить значение. (if($weight < 3) { $weight = 3;}). Но лучше этот "абсолютный минимум" сделать отдельной опцией... и использовать не константу 3, а значение опции..
Там не то, чтобы абсолютный минимум по весу, там главное, чтобы "Если вычисление ((ВЫСОТА*ДЛИНА*ШИРИНА)/5000) > МАССА, то МАССЕ присваивается новое значение, а именно МАССА = ((ВЫСОТА*ДЛИНА*ШИРИНА)/5000) Вообще я уже решил, но у меня все именно так, как вы сказали PHP: public static function calculate_cost( $atts ){ global $product; $item_price = ''; if(isset($_POST['calculate-cost-submit'])){ $weight = $_POST['calculate-weight']; if(isset($_POST['calculate-height'])){ $value_height = $_POST['calculate-height'];} else {$value_height = '';} if(isset($_POST['calculate-width'])){ $value_width = $_POST['calculate-width'];} else {$value_width = '';} if(isset($_POST['calculate-depth'])){ $value_depth = $_POST['calculate-depth'];} else {$value_depth = '';} if ( $weight < ($value_width * $value_height * $value_depth )/5000) { $weight = ceil(($value_width * $value_height * $value_depth )/5000); } $country = $_POST['calculate-location-from']; $country2 = $_POST['calculate-location2-from']; $get_options = ot_get_option('calculate_cost'); if(!empty($get_options)){ foreach( $get_options as $value ){ $country_value = $value['calculate_country']; $country2_value = $value['calculate_country2']; if($country == $country_value && $country2 == $country2_value){ $max_weight_value = $value['max_weight']; $min_weight_value = $value['min_weight']; if( ($weight <= $max_weight_value) && ($weight >= $min_weight_value) ) { $item_price = $value['item_price']; $item_price = '<div class="button form-control">'.esc_html__('total cost:','gocourier').'<span>'.get_woocommerce_currency_symbol().''.$item_price.'</span></div>'; } } } } } // Attributes $atts = shortcode_atts( array( 'form_style' => 'default', ), $atts, 'calculate_cost' ); $html = '<div id="calculateform" class="ts-form-calculate form-'.$atts['form_style'].'">'; $html .='<form class="ts-calculate-form" action="#calculateform" method="post"> <p><label for="calculate-height">Высота (СМ: </label>'; $html .='<input type="text" name="calculate-height" value="'.$value_height.'" class="form-control" /></p> <p><label for="calculate-widht">Ширина (СМ): </label>'; $html .='<input type="text" name="calculate-width" value="'.$value_width.'" class="form-control" /></p> <p><label for="calculate-depth">Длина (СМ): </label>'; $html .='<input type="text" name="calculate-depth" value="'.$value_depth.'" class="form-control" /></p> <p><label for="calculate-weight">Масса (КГ): </label>'; if(isset($_POST['calculate-weight'])){ $value_weight = $_POST['calculate-weight'];} else {$value_weight = '';} $html .='<input type="text" name="calculate-weight" value="'.$value_weight.'" class="form-control" /></p> <p><label for="calculate-location-from">Отправление из: </label>'; if(isset($_POST['calculate-location-from']) && $_POST['calculate-location-from'] == 'AF'){$selected = 'selected="selected"';}else{$selected = '';} $html .='<select name="calculate-location-from" class="form-control"> <option value="AF" '.$selected.'>Красноярск</option>'; if(isset($_POST['calculate-location-from']) && $_POST['calculate-location-from'] == 'AL'){$selected = 'selected="selected"';}else{$selected = '';} $html .='<option value="AL" '.$selected.'>Санкт-Петербург</option>'; if(isset($_POST['calculate-location-from']) && $_POST['calculate-location-from'] == 'DZ'){$selected = 'selected="selected"';}else{$selected = '';} $html .='<option value="DZ" '.$selected.'>Москва</option>'; if(isset($_POST['calculate-location-from']) && $_POST['calculate-location-from'] == 'AS'){$selected = 'selected="selected"';}else{$selected = '';} $html .='<option value="AS" '.$selected.'>Новосибирск</option>'; </select></p> <p><label for="calculate-location2-from">Доставка в: </label>'; if(isset($_POST['calculate-location2-from']) && $_POST['calculate-location2-from'] == 'AF'){$selected = 'selected="selected"';}else{$selected = '';} $html .='<select name="calculate-location2-from" class="form-control"> <option value="AF" '.$selected.'>Красноярск</option>'; if(isset($_POST['calculate-location2-from']) && $_POST['calculate-location2-from'] == 'AL'){$selected = 'selected="selected"';}else{$selected = '';} $html .='<option value="AL" '.$selected.'>Санкт-Петербург</option>'; if(isset($_POST['calculate-location2-from']) && $_POST['calculate-location2-from'] == 'DZ'){$selected = 'selected="selected"';}else{$selected = '';} $html .='<option value="DZ" '.$selected.'>Москва</option> </select></p>'; $html .='<p> <label for="calculate-submit"> </label> <input type="submit" class="button form-control" value="'.esc_html__('calculate cost', 'gocourier').'" name="calculate-cost-submit" /></p>'; if(isset($_POST['calculate-cost-submit'])) { if($item_price != ''){ $html .= $item_price; } else { $html .= '<div class="button form-control">'.esc_html__('price not set for this query','gocourier').'</div>'; } } $html .='</form> </div>'; return $html; }