PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (7): [1] 2 3 4 5 6 7 »

> Найдено сообщений: 105
Морозов Семен Отправлено: 07 Декабря, 2015 - 16:49:08 • Тема: Как выбрать массив(диапазон) из большего массива? • Форум: Вопросы новичков

Ответов: 2
Просмотров: 214
SAD пишет:


Спасибо огромное!

А я тем временем изобрел велосипед: Радость
PHP:
скопировать код в буфер обмена
  1. function range_array($array,$start_key,$limit) {
  2.         $last = $start_key + $limit;
  3.         while ($start_key < $last){
  4.                 $array_2[] = $array[$start_key];
  5.                 $start_key++;
  6.         }
  7.         return $array_2;
  8. }
Морозов Семен Отправлено: 07 Декабря, 2015 - 16:28:56 • Тема: Как выбрать массив(диапазон) из большего массива? • Форум: Вопросы новичков

Ответов: 2
Просмотров: 214
Имеется массив
PHP:
скопировать код в буфер обмена
  1. $array[0] = "var1";
  2. $array[1] = "var2";
  3. $array[2] = "var3";
  4. $array[3] = "text1";
  5. $array[4] = "1";
  6. $array[5] = "apple";
  7. $array[6] = "tomatos";
  8. $array[7] = "text";
  9. $array[8] = "id1";
  10. $array[9] = "2";
  11.  


Как выбрать диапазон данного массива и записать его в другой массив, например:
PHP:
скопировать код в буфер обмена
  1. $array_2[0] = $array[3];
  2. $array_2[1] = $array[4];
  3. $array_2[2] = $array[5];
  4. $array_2[3] = $array[6];


PHP:
скопировать код в буфер обмена
  1. $array2 = range_array($array, 3, 4);
  2. function range_array($array,$start_key,$limit) {...}
  3.  


Как написать данную функцию или может быть есть готовое решение, а я изобретаю велосипед?
Морозов Семен Отправлено: 01 Декабря, 2015 - 17:32:48 • Тема: Помогите с рефакторингом • Форум: Вопросы новичков

Ответов: 4
Просмотров: 203
Мелкий пишет:
Осталось только выкинуть извращение с ручной обработкой параметров в пользу нативных parse_str, array_merge и последующего http_build_query


Мелкий, Огромное спасибо за наставление! Сейчас попробую сделать!
Морозов Семен Отправлено: 01 Декабря, 2015 - 17:16:09 • Тема: Помогите с рефакторингом • Форум: Вопросы новичков

Ответов: 4
Просмотров: 203
Faraon-san пишет:
в переменных url у вас не правильно get параметры определены, он определяется после знака вопроса.


В данном случае первая строка ЧПУ: "?q=catalog" заменено на catalog

add
Faraon-san, Интересное решение задачи Вы предложили!
Морозов Семен Отправлено: 01 Декабря, 2015 - 16:33:16 • Тема: Помогите с рефакторингом • Форум: Вопросы новичков

Ответов: 4
Просмотров: 203
Написал код по добавлению параметра _GET в адрес страницы
Как провести грамотный рефакторинг не нарушая функциональности данного кода?

PHP:
скопировать код в буфер обмена
  1. $old_url = 'http://site.ru/catalog&page=1&color=red';
  2. $old_url2 = 'http://site.ru/catalog&color=red';
  3. $old_url3 = 'http://site.ru/catalog&color=red&page=1';
  4. $parametr = '&page=2';
  5.  
  6. $two_parts_parametr = explode("=", $parametr);
  7. $name_parametr = $two_parts_parametr[0];
  8. $value_parametr = $two_parts_parametr[1];
  9. if (preg_match('/'.$name_parametr.'/',$old_url) == true) {
  10.         if (preg_match('/'.$name_parametr.'=.*&/',$old_url) == true)
  11.                 $new_url = preg_replace('/'.$name_parametr.'=.*&/',$parametr.'&',$old_url);
  12.         else $new_url = preg_replace('/'.$name_parametr.'=.*/',$parametr,$old_url);
  13. }
  14. else $new_url = $old_url.$parametr;
  15.  
  16. echo $new_url;
Морозов Семен Отправлено: 25 Ноября, 2015 - 14:05:50 • Тема: Как перемешать массив? • Форум: Вопросы новичков

Ответов: 3
Просмотров: 259
Мелкий пишет:

Вы уверены, что это нужно и нужно именно последним шагом?


При нечетном кол-ве элементов массива, последний элемент продублирован. Эта строчка кода исправляет. В данном случае повторений не будет это id товаров (уникальный)

Данный скрипт нужен для перемешивания цен товаров.

Сначала сортировка по ценам в mysql -> массив id товаров -> перемешивание id

Протестировал при четном и нечетном, всё ок.
(Добавление)
Sail пишет:
Морозов Семен, вот другой вариант:
Спойлер (Отобразить)


Тоже интересный способ
Морозов Семен Отправлено: 25 Ноября, 2015 - 11:40:08 • Тема: Как перемешать массив? • Форум: Вопросы новичков

Ответов: 3
Просмотров: 259
Доброго времени суток, Уважаемые форумчане!

Подскажите пожалуйста хорошее решение перемешать массив, предположим из этого:
PHP:
скопировать код в буфер обмена
  1.  
  2. $array = array(
  3.     "1" => "text 1",
  4.     "2" => "text 2",
  5.     "3" => "text 3",
  6.     "4" => "text 4",
  7.     "5" => "text 5",
  8.     "6" => "text 6",
  9.     "7" => "text 7",
  10.     "8" => "text 8"
  11. );
  12.  


Сделать вот это:
PHP:
скопировать код в буфер обмена
  1.  
  2. $array = array(
  3.     "1" => "text 1",
  4.     "2" => "text 8",
  5.     "3" => "text 2",
  6.     "4" => "text 7",
  7.     "5" => "text 3",
  8.     "6" => "text 6",
  9.     "7" => "text 4",
  10.     "8" => "text 5"
  11. );
  12.  


Либо так:
PHP:
скопировать код в буфер обмена
  1.  
  2. $array = array(
  3.     "1" => "text 1",
  4.     "2" => "text 7",
  5.     "3" => "text 2",
  6.     "4" => "text 6",
  7.     "5" => "text 3",
  8.     "6" => "text 5",
  9.     "7" => "text 4"
  10. );
  11.  


В общем след. последовательность: первый элемент, последний, 2 элемент, предпоследний (2 с конца) и т.д.
(Добавление)
Всё, разобрался, кому интересно, вот код:

PHP:
скопировать код в буфер обмена
  1.  
  2. $Mass[] = '1';
  3. $Mass[] = '2';
  4. $Mass[] = '3';
  5. $Mass[] = '4';
  6. $Mass[] = '5';
  7. $Mass[] = '6';
  8. $Mass[] = '7';
  9.  
  10. print_r (mixing_array($Mass));
  11.  
  12. function mixing_array($array){
  13.         $count = ceil(count($array)/2);
  14.         $l = count($array);
  15.         for ($i=0; $i<$count; $i++) {
  16.                 $new_array[] = $array[$i];
  17.                 $new_array[] = $array[$l-1];
  18.                 $l--;
  19.         }
  20.         return array_unique($new_array);
  21. }
  22.  
Морозов Семен Отправлено: 18 Мая, 2013 - 18:48:02 • Тема: Изменение запросов через пользовательскую функцию • Форум: Вопросы новичков

Ответов: 15
Просмотров: 579
LIME пишет:
а ты его посмотри в исходниках браузера
волосы на голове зашевелятся

Там всё нормально, а что там должно быть?
(Добавление)
LIME пишет:
а ты его посмотри в исходниках браузера
волосы на голове зашевелятся
(Добавление)
а как туда пролезет такой текст?
<><><>
я знаю а ты?


ты имеешь ввиду в базу? так для этого случая есть BB-код например [p] заменяешь на <p>
Морозов Семен Отправлено: 18 Мая, 2013 - 18:41:15 • Тема: Изменение запросов через пользовательскую функцию • Форум: Вопросы новичков

Ответов: 15
Просмотров: 579
LIME пишет:
го?
Радость Радость Радость Радость
Зато какая безопасность, это ж ни один скрипт не пролезет))))))
Текст самое главное пролазит, а он то нам как раз и нужен)))
(Добавление)
LIME пишет:
PHP:
скопировать код в буфер обмена
  1. function sanitizeString($var)
  2. {
  3.         $var = htmlspecialchars($var);//меняем все <> итд на мнемоники &lg $gt итд
  4.         $var = strip_tags($var);//вырезаем теги хотя непонятно откуда они возьмутся раз мы их уже заменили
  5.         $var = htmlentities($var, ENT_QUOTES, "utf-8");//все что осталось меняем к хренам на html-сущности!...включая мнемоники полученые в 1ой замене...УРААА!!! вперед  до победного!!!
  6.         $var = stripslashes($var);//хз откуда в этой каше возьмутся слэши(если были  то они уже давно стали html-сущностями) но меняем и их...они хитрые и коварные...могли пролезть
  7.         $var = mysql_real_escape_string($var);//есть кто еще живой после бомбежки?...выходи из сумрака!
  8.         return $var;//еле живое непонятно что куда-то возвращается...интересно есть ф-ция для реанимации етого всего?

}


Радость Радость Радость Радость
Зато какая безопасность, это ж ни один скрипт не пролезет))))))
Текст самое главное пролазит, а он то нам как раз и нужен)))
Морозов Семен Отправлено: 18 Мая, 2013 - 14:24:43 • Тема: Изменение запросов через пользовательскую функцию • Форум: Вопросы новичков

Ответов: 15
Просмотров: 579
esterio, LIME в смысле глупая?
Морозов Семен Отправлено: 18 Мая, 2013 - 12:19:43 • Тема: Как сделать выборку из нескольких таблиц • Форум: Вопросы новичков

Ответов: 2
Просмотров: 215
DeepVarvar Спасибо за информацию. Улыбка Попробую сейчас сделать, как сделаю - отпишусь о результате
(Добавление)
DeepVarvar Огромное спасибо. Всё замечательно работает Улыбка
Вот полный код:
PHP:
скопировать код в буфер обмена
  1. $arraywords = explode(" ", $search_words);
  2.                 foreach ($arraywords as $key => $value) {
  3.                         if (isset($arraywords[$key - 1]))
  4.                                 $query_search .= '**';
  5.                         $query_search .= $value;
  6.                 }
  7.  
  8. $query = "
  9.         SELECT id, name, text,
  10.         MATCH(name, text)
  11.         AGAINST('*$query_search*' IN BOOLEAN MODE)
  12.         as relev FROM articles_1
  13.         WHERE MATCH(name, text)
  14.         AGAINST('*$query_search*' IN BOOLEAN MODE) > 0
  15.        
  16.         UNION ALL
  17.        
  18.         SELECT id, name, text,
  19.         MATCH(name, text, category)
  20.         AGAINST('*$query_search*' IN BOOLEAN MODE)
  21.         as relev FROM articles_2
  22.         WHERE MATCH(name, text, category)
  23.         AGAINST('*$query_search*' IN BOOLEAN MODE) > 0
  24.        
  25.         ORDER BY relev DESC";
Морозов Семен Отправлено: 18 Мая, 2013 - 12:08:43 • Тема: как провально построить запрос на выборку из БД • Форум: Вопросы новичков

Ответов: 7
Просмотров: 206
PHP:
скопировать код в буфер обмена
  1. $query = "SELECT * FROM tovari ORDER BY price DESC";

Этот код подойдет вам, если цена сортируется сначала большая, а затем меньше.
А у Evgen то, что вам нужно
Морозов Семен Отправлено: 18 Мая, 2013 - 11:38:50 • Тема: Изменение запросов через пользовательскую функцию • Форум: Вопросы новичков

Ответов: 15
Просмотров: 579
Я использую эту функцию для защиты форм ввода в связке с другими
PHP:
скопировать код в буфер обмена
  1. function sanitizeString($var)
  2. {
  3.         $var = htmlspecialchars($var);
  4.         $var = strip_tags($var);
  5.         $var = htmlentities($var, ENT_QUOTES, "utf-8");
  6.         $var = stripslashes($var);
  7.         $var = mysql_real_escape_string($var);
  8.         return $var;
  9. }


Пример использования:
PHP:
скопировать код в буфер обмена
  1. if (isset($_GET['words']))
  2.                 {$search_words = sanitizeString($_GET['words']);}

(Добавление)
DeUM пишет:
Из этого:
CODE (SQL):
скопировать код в буфер обмена

"SELECT * FROM `table` WHERE `login` = 'admin'"


Она превращает в это:
CODE (SQL):
скопировать код в буфер обмена

"SELECT * FROM `table` WHERE `login` = \'admin\'"


Делая запрос невозможным.

При использовании mysql_real_escape_string() никогда такого не наблюдал.
Морозов Семен Отправлено: 18 Мая, 2013 - 10:26:24 • Тема: Как сделать выборку из нескольких таблиц • Форум: Вопросы новичков

Ответов: 2
Просмотров: 215
Здравствуйте, уважаемые программисты.
Делаю систему поиска на сайте. И столкнулся с проблемой выборки из двух таблиц одновременно.
Структура таблиц такова:
Имеется следующие таблицы
articles_1
id
name
text

articles_2
id
name
category
text

Использую следующий SQL запрос к первой таблице:
PHP:
скопировать код в буфер обмена
  1. $query = "SELECT *, MATCH name AGAINST ('$search_words') + MATCH text AGAINST ('$search_words') as relev FROM articles_1 WHERE MATCH name AGAINST ('$search_words') + MATCH text AGAINST ('$search_words') > 0 ORDER BY relev DESC";


Возникли следующие вопросы:
1. В искомом тексте присутствует слово "Поисковый". Почему MATCH ... AGAINST не находит текст по частям слова, а ищет по целым словам? Например, я отправляю запрос "поисковый" - оно находит. А если запрос "поиск" - то уже не находит. Как это исправить?
2. Необходимо сделать выборку из двух таблиц базы данных, и отсортировать все выбранные данные по релевантности. Подскажите пожалуйста, как это сделать?
(Добавление)
С первым вопросом я разобрался, со вторым только частично, по релевантности отсортировал.
Вот изменённый код:
PHP:
скопировать код в буфер обмена
  1. $arraywords = explode(" ", $search_words);
  2.                 foreach ($arraywords as $key => $value) {
  3.                         if (isset($arraywords[$key - 1]))
  4.                                 $query_search .= '**';
  5.                         $query_search .= $value;
  6.                 }
  7.  
  8. $query = "SELECT *,
  9.         MATCH(name, text)
  10.         AGAINST('*$query_search*' IN BOOLEAN MODE)
  11.         as relev FROM atricles_1 WHERE MATCH(name, text)
  12.         AGAINST('*$query_search*' IN BOOLEAN MODE) > 0 ORDER BY relev DESC;";


Остался только самый главный вопрос: выборка из двух таблиц одновременно, используя релевантную сортировку по всем выбранным строкам. Подскажите, как это сделать в данной ситуации?
Морозов Семен Отправлено: 18 Мая, 2013 - 09:54:44 • Тема: Регистронезависимое использование функции str_replace() • Форум: Вопросы новичков

Ответов: 7
Просмотров: 708
DeepVarvar пишет:
Морозов Семен не забудь обработать строку поиска через preg_quote()

Хорошо, DeepVarvar, спасибо за совет.

Страниц (7): [1] 2 3 4 5 6 7 »
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB