Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Помогите продвинутся дальше!

 PHP.SU

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


 Страниц (1): [1]   

> Описание: Укажите хоть направление!
pastevgen
Отправлено: 27 Августа, 2010 - 01:51:10
Post Id



Новичок


Покинул форум
Сообщений всего: 42
Дата рег-ции: Июль 2010  


Помог: 0 раз(а)




Написал такой код но когда дошло до автоматизации тут то все идеи и закончились!
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. <?php
  3. if (isset($_GET['cat'])) {$cat = $_GET['cat'];}
  4. $ext = $cat;
  5. $zapyatyh = substr_count($ext, ",");
  6. $proverka = substr(strrchr($ext, ","),0,1);
  7. if ($proverka==',')
  8. {
  9. $cat_posled = substr(strrchr($ext, ","),1);
  10.  
  11. $cat1 = substr($ext, 0, -strlen(strstr ($ext, ",")));
  12.  
  13. $ext =  substr($ext,1+strlen($cat1));
  14. $cat2 = substr($ext, 0, -strlen(strstr ($ext, ",")));
  15.  
  16. $ext =  substr($ext,1+strlen($cat2));
  17. $cat3 = substr($ext, 0, -strlen(strstr ($ext, ",")));
  18.  
  19. if ($zapyatyh > 0){$zapros="cat IN ('$cat1','$cat2','$cat3','$cat_posled')";}
  20. }
  21. else {$zapros = "cat='$cat'";}
  22.  
  23. $baza = mysql_query ("SELECT * FROM zametki WHERE $zapros",$db);
  24. ?>
  25.  


Если кому интересно рад буду любой Вашей помощи!
Да и количество cat может быть любым, тут то и хотелось сделать автоматизацию!

(Отредактировано автором: 27 Августа, 2010 - 17:28:01)

 
 Top
Саныч
Отправлено: 27 Августа, 2010 - 12:45:16
Post Id



Участник


Покинул форум
Сообщений всего: 1365
Дата рег-ции: Июль 2010  
Откуда: Украина, Запорожье


Помог: 62 раз(а)




1) Зачем переменной $cat присваивать значение $_GET['cat'], а потом $ext значение $cat?
2) Если $_GET['cat'] не существует, то $cat не будет объявлена и уже вот эта стока $ext = $cat; вызовет ошибку...
3) Зачем этот геморой $zapros="cat='$cat1' OR cat='$cat2' OR cat='$cat3' OR cat='$cat_posled'";? Лучше так $zapros="cat IN ('$cat1','$cat2','$cat3')";


-----
Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
 
 Top
garvey
Отправлено: 27 Августа, 2010 - 12:59:20
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 528
Дата рег-ции: Май 2010  
Откуда: Minsk


Помог: 3 раз(а)




Cогласен, Саныч. Только пункт 2 не вызовет ошибки. Просто переменная $ext будет NULL.
 
 Top
biperch
Отправлено: 27 Августа, 2010 - 13:06:44
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 588
Дата рег-ции: Окт. 2009  
Откуда: Днепропетровск


Помог: 8 раз(а)




Как то не чувствуется что толком входит и чего вы хотите добится толком
 
 Top
Саныч
Отправлено: 27 Августа, 2010 - 13:13:45
Post Id



Участник


Покинул форум
Сообщений всего: 1365
Дата рег-ции: Июль 2010  
Откуда: Украина, Запорожье


Помог: 62 раз(а)




garvey пишет:
Просто переменная $ext будет NULL.

Разве??? Хм... Мне казалось, если переменная не определена, то это вызывает ошибку... Только что специально проверил и действительно вылазит только Notice: Undefined variable: cat in... Теперь буду знать Улыбка Спасибо


-----
Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
 
 Top
garvey
Отправлено: 27 Августа, 2010 - 13:16:30
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 528
Дата рег-ции: Май 2010  
Откуда: Minsk


Помог: 3 раз(а)




В PHP нет срогого определения переменных и их типов. Пожалуйста.
 
 Top
pastevgen
Отправлено: 27 Августа, 2010 - 17:16:56
Post Id



Новичок


Покинул форум
Сообщений всего: 42
Дата рег-ции: Июль 2010  


Помог: 0 раз(а)




Лучше так $zapros="cat IN ('$cat1','$cat2','$cat3')";
Спасибо исправил!

Суть в том что приходит cat из ссылки в разном значении, к примеру так cat=5,8,3,4 или так cat=7,9,6,4,3,2,1,55. И каждый раз количество разное, вот и хотелось бы это автоматизировать! Улыбка
 
 Top
Мелкий Супермодератор
Отправлено: 27 Августа, 2010 - 17:38:43
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




pastevgen пишет:
И каждый раз количество разное, вот и хотелось бы это автоматизировать!

А если поэлегантнее немного сделать, в одну строку:
PHP:
скопировать код в буфер обмена
  1. $zapros = "cat IN ('".implode("','",explode(",",$_GET['cat']))."')";

Хотя скорее, конечно, так:
PHP:
скопировать код в буфер обмена
  1. $zapros = "cat IN ('".str_replace(",","','",$_GET['cat']),"')";

(Отредактировано автором: 27 Августа, 2010 - 17:42:39)



-----
PostgreSQL DBA
 
 Top
pastevgen
Отправлено: 28 Августа, 2010 - 04:51:39
Post Id



Новичок


Покинул форум
Сообщений всего: 42
Дата рег-ции: Июль 2010  


Помог: 0 раз(а)




Долго смеялся и понял что одна голова хорошо, а умная лучше! Радость
Отдельное и большое спасибо Саныч и Мелкий

И вот оказывается решение!
Исправил опечатку

PHP:
скопировать код в буфер обмена
  1.  
  2. $zapros = "cat IN ('".str_replace(",","','",$_GET['cat'])."')";
  3.  


Ещё б напоследок хотелось услышать что нибудь о безопасности этого кода!
И можно тему закрывать!
 
 Top
Саныч
Отправлено: 28 Августа, 2010 - 11:38:19
Post Id



Участник


Покинул форум
Сообщений всего: 1365
Дата рег-ции: Июль 2010  
Откуда: Украина, Запорожье


Помог: 62 раз(а)




pastevgen пишет:
Ещё б напоследок хотелось услышать что нибудь о безопасности этого кода!

Ну дла начала можно и вот так
PHP:
скопировать код в буфер обмена
  1. $zapros = "cat IN ('".str_replace(",","','",mysql_escape_string($_GET['cat']))."')";


-----
Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
 
 Top
pastevgen
Отправлено: 29 Августа, 2010 - 05:59:34
Post Id



Новичок


Покинул форум
Сообщений всего: 42
Дата рег-ции: Июль 2010  


Помог: 0 раз(а)




Мне тут пришла вот такая идея. Как Вы думаете не сильно бредово получится!?
Или я обратно усложняю!?

PHP:
скопировать код в буфер обмена
  1.  
  2. $proverka = str_replace(",","",$_GET['cat']);
  3.         if(!preg_match("|^[\d]+$|",$proverka) && !empty($proverka)) exit("<p>Неверный формат запроса! Проверьте URL!</p>");
  4. $zapros = "cat IN ('".str_replace(",","','",mysql_escape_string($_GET['cat']))."')";
  5.  
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB