Добрый день , имею код такого типа PHP: if(isset($_POST['save'])) { $pole102 = strip_tags(trim($_POST['pole102'])); $pole103 = strip_tags(trim($_POST['pole103'])); $pole104 = strip_tags(trim($_POST['pole104'])); $pole105 = strip_tags(trim($_POST['pole105'])); $pole106 = strip_tags(trim($_POST['pole106'])); $pole107 = strip_tags(trim($_POST['pole107'])); $pole108 = strip_tags(trim($_POST['pole108'])); $pole109 = strip_tags(trim($_POST['pole109'])); $pole121 = strip_tags(trim($_POST['pole121'])); $pole122 = strip_tags(trim($_POST['pole122'])); ....... if ( $pole324 == 0 && $pole324 == NULL ){ mysql_query("DELETE FROM `oc_customer_group_price` WHERE `oc_customer_group_price`.`customer_group_id` ='$checked' AND `category_id`='$value'"); } else { mysql_query("replace INTO `oc_customer_group_price` (`customer_group_id`, `category_id`, `price`, `type`,`customer_id`) VALUES ('$checked','324' ,'$pole324','1',$Id)"); } if ( $pole333 == 0 && $pole333 == NULL ){ mysql_query("DELETE FROM `oc_customer_group_price` WHERE `oc_customer_group_price`.`customer_group_id` ='$checked' AND `category_id`='$value'"); } else { mysql_query("replace INTO `oc_customer_group_price` (`customer_group_id`, `category_id`, `price`, `type`,`customer_id`) VALUES ('$checked','333' ,'$pole333','1',$Id)"); } if ( $pole342 == 0 && $pole342 == NULL ){ mysql_query("DELETE FROM `oc_customer_group_price` WHERE `oc_customer_group_price`.`customer_group_id` ='$checked' AND `category_id`='$value'"); } else { mysql_query("replace INTO `oc_customer_group_price` (`customer_group_id`, `category_id`, `price`, `type`,`customer_id`) VALUES ('$checked','342' ,'$pole342','1',$Id)"); } ........ } Можно ли его как то сократить через цикл ? Спасибо
нужно изучить возможности SQL чтобы делать это одним запросом, а еще про SQL-injection почитать, ващи Strip_tags(trim)) как мертвому припарки
вообще сдается мне какой там неправильных подход вообще... когда 200-300 переменных передается но если надо... то лучше: 1) сформировать в цикле строку/массив с ид которые нужно удалить 2) сделать запрос вида delete from t where id IN(1,444,5,4,33) - то что в скобках - сформировано в п 1 3) аналогично сформировать в цикле строку/массив с значениями и ид обновляемых элементов - так же выполнить запрос
Вы часом не индус? PHP: $arrayFields = []; foreach($_POST as $key => $val) { if(strstr($key, 'pole')) $arrayFields[$key] = $val; } foreach($arrayFields as $field) { if($field === 0 && is_null($field)) { //db query } }
Да не просто руки крюки . мыслей много а реализовать получается только кустарным методом , но вот в этот код как вставить запрос ?
$arrayFields = [102,103,104,105.......и так дале ]; foreach($_POST as $key => $val) { if(strstr($key, 'pole')) $arrayFields[$key] = $val; } Я правильно понял ?
Неа, массив будет заполнен после цикла.Типа: PHP: $arrayFields = ['pole1' => 'text', 'pole2' => 'text'...] Про strstr - http://www.php.net/strstr
ниче не понял читаю про вот эти циклы фроач , понимаю как его использовать при такой конструкции а тут ниче не пойму ( ладно --- Добавлено --- <?php $arr = array("pole" => "102", "pole" => "103", "pole" => "104"); ?> <?php foreach($arr as $key => $value) { if ( $key == 0 && $key == NULL ){ mysql_query("DELETE FROM `oc_customer_group_price` WHERE `oc_customer_group_price`.`customer_group_id` ='$checked' AND `category_id`='$value'"); } else { mysql_query("replace INTO `oc_customer_group_price` (`customer_group_id`, `category_id`, `price`, `type`,`customer_id`) VALUES ('$checked','$value' ,'$key','1',$Id)"); } } ?> я предполагал чтото такого типа но почему то тянет только $value а кей нет или наоборот
PHP: $arr = ["pole102"=>102]; foreach ($arr as $key=>$elem) { mysql_query("replace INTO `oc_customer_group_price` (`customer_group_id`, `category_id`, `price`, `type`,`customer_id`) VALUES ('$checked','$elem' ,'".$_POST[$key]."','1',$Id)"); } Вас всеравно не понял , но сделал вот так и все заработало на ура. может кому пригодиться
@slipsteel, на плохих примерах. Расширения mysql уже нету в php современных версий. Значения в запрос поставляются как есть, т.е. здравствуй sql-инъекция (хотя и в старом расширении можно было защититься). https://www.ozon.ru/context/detail/id/139127353/ - вот, купи (скачай) и учись.
Спасибо , прочитаю обязательно , но проблему уже решил с помощью указаний форумчанина , исходя из этого на данном форуме нужно быть либо знать все и ошибаться либо как я незнать ничего и будут обсуждать то как ты пишешь.))