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
Форумы портала PHP.SU :: Версия для печати :: Проблема с отправкой данных через $_GET
Форумы портала PHP.SU » » HTTP и PHP » Проблема с отправкой данных через $_GET

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

1. Coder1994 - 15 Июня, 2011 - 18:06:46 - перейти к сообщению
Я хочу реализовать поиск пользователей по сайту.
Вот пример формы:
PHP:
скопировать код в буфер обмена
  1. case 'search':
  2. if (count($_GET) == 1)
  3.                 {
  4.                 echo "<form action=\"/users.php?act=search\" method=\"get\">\n";
  5.                 echo "Страна (max. 24):<br />\n<input type=\"text\" name=\"country\" value=\"\" /><br />\n";
  6.                 echo "Регион (область) (max. 24):<br />\n<input type=\"text\" name=\"region\" value=\"\" /><br />\n";
  7.                 echo "Город (max. 24):<br />\n<input type=\"text\" name=\"city\" value=\"\" /><br />\n";
  8.                 echo "Имя:<br />\n<input type=\"text\" name=\"first_name\" value=\"\" /><br />\n";
  9.                 echo "Фамилия:<br />\n<input type=\"text\" name=\"primary_name\" value=\"\" /><br />\n";
  10.                 echo "<input type=\"submit\" value=\"Искать\" /><br />\n";
  11.                 echo "</form>\n";
  12.                 echo "&raquo; <a href=\"/users.php\">Пользователи</a><br />\n";
  13.                 }
  14. else
  15.                 {
  16.                 if ($_GET['country'])
  17.                         {
  18.                         $country = htmlspecialchars($db->safesql($_GET['country']));
  19.                         if (mb_strlen($country) < 4) $error.= 'Слишком маленькая длина страны.<br />';
  20.                         if (mb_strlen($country) > 24) $error.= 'Слишком большая длина страны.<br />';
  21.                         }
  22.  
  23.                 if ($_GET['region'])
  24.                         {
  25.                         $region = htmlspecialchars($db->safesql($_GET['region']));
  26.                         if (mb_strlen($region) < 4) $error.= 'Слишком маленькая длина региона (области).<br />';
  27.                         if (mb_strlen($region) > 24) $error.= 'Слишком большая длина региона (области).<br />';
  28.                         }
  29.  
  30.                 if ($_GET['city'])
  31.                         {
  32.                         $city = htmlspecialchars($db->safesql($_GET['city']));
  33.                         if (mb_strlen($city) < 3) $error.= 'Слишком маленькая длина города.<br />';
  34.                         if (mb_strlen($city) > 24) $error.= 'Слишком большая длина города.<br />';
  35.                         }

и так далее... т.е.нужно чтобы строка адреса выглядела так - ?act=search&amp;country=Россия , и т.д., а выходит ?country=Россия, как можно исправить?
2. Slavenin - 15 Июня, 2011 - 18:23:56 - перейти к сообщению
необходима строка, где формируется сам адрес, но первая ошибка уже есть:
откуда в адресной строке берется символ ";" ? о_О переменные должны разделяться символом "&" никаких точек с запятой там быть не может. если необходимо использовать спецсимволы их нужно заменить на их коды. браузер когда выводит код на страницу символы эскейп-последовательностей игнорирует. они имеют значение только при просмотре исходного кода страницы.

да и возможно так будет лучше?
PHP:
скопировать код в буфер обмена
  1. <?PHP if (count($_GET) == 1)
  2. {
  3. ?>
  4.  
    CODE (html):
    скопировать код в буфер обмена
    1.  <form action="/users.php?act=search" method="get"><br/>
    2.         Страна (max. 24):<br /><input type="text" name="country" value=""/>     Регион (область) (max. 24):<br /><input type="text" name="region" value="" />   Город (max. 24):<br /><input type="text" name="city" value="" />        Имя:<br /><input type="text" name="first_name" value="" />      Фамилия:<br /><input type="text" name="primary_name" value="" />        <input type="submit" value="Искать" />  </form>
  •  <?
  •  
  • echo "&raquo; <a href=\"/users.php\">Пользователи</a><br />\n";
  • }
  • ?>
  • 3. Coder1994 - 15 Июня, 2011 - 19:03:48 - перейти к сообщению
    Slavenin пишет:
    необходима строка, где формируется сам адрес, но первая ошибка уже есть:
    откуда в адресной строке берется символ ";" ? о_О переменные должны разделяться символом "&" никаких точек с запятой там быть не может. если необходимо использовать спецсимволы их нужно заменить на их коды. браузер когда выводит код на страницу символы эскейп-последовательностей игнорирует. они имеют значение только при просмотре исходного кода страницы.

    да и возможно так будет лучше?
    PHP:
    скопировать код в буфер обмена
    1. <?PHP if (count($_GET) == 1)
    2. {
    3. ?>
    4.  
      CODE (html):
      скопировать код в буфер обмена
      1.  <form action="/users.php?act=search" method="get"><br/>
      2.         Страна (max. 24):<br /><input type="text" name="country" value=""/>     Регион (область) (max. 24):<br /><input type="text" name="region" value="" />   Город (max. 24):<br /><input type="text" name="city" value="" />        Имя:<br /><input type="text" name="first_name" value="" />      Фамилия:<br /><input type="text" name="primary_name" value="" />        <input type="submit" value="Искать" />  </form>
  •  <?
  •  
  • echo "&raquo; <a href=\"/users.php\">Пользователи</a><br />\n";
  • }
  • ?>

  • Лучше,а не могли бы вы написать строку для формирования адреса, ибо с GET-ом я не работал.
    4. Slavenin - 15 Июня, 2011 - 19:25:31 - перейти к сообщению
    про строку с адресом это я чего-то погорячился Закатив глазки гет запрос и так предает все поля формы в адресной строке. несколько не ясен смысл (count($_GET) == 1) , что именно проверяется в этом условии, количество значений в массиве гет?

    наверно лучше будет так:

    и почему бы не слать значения методом пост?
    5. maragon - 15 Июня, 2011 - 19:33:09 - перейти к сообщению
    Регион (область) (max. 24): ? задайте максимум в форме input.
    [quote=Slavenin][/quote]
    А зачем пост форма при поиске? ИМХО, get rullez Радость
    6. Slavenin - 15 Июня, 2011 - 19:40:14 - перейти к сообщению
    maragon пишет:
    А зачем пост форма при поиске? ИМХО, get rullez

    ага, особенно при использовании стопятисот значений для поиска
    7. Coder1994 - 16 Июня, 2011 - 16:22:21 - перейти к сообщению
    Slavenin пишет:
    maragon пишет:
    А зачем пост форма при поиске? ИМХО, get rullez

    ага, особенно при использовании стопятисот значений для поиска

    У меня постр. навигация, а пост постоянно отсылать это бред, мне нужен гет.
    Да, я проверяю кол-во запросов гет.
    8. Slavenin - 16 Июня, 2011 - 16:35:10 - перейти к сообщению
    Coder1994 пишет:
    У меня постр. навигация, а пост постоянно отсылать это бред, мне нужен гет.

    не вижу связи...

    сделай в скрипте
    и посмотри что он у тебя выведет
    9. Coder1994 - 16 Июня, 2011 - 17:13:56 - перейти к сообщению
    Slavenin пишет:
    Coder1994 пишет:
    У меня постр. навигация, а пост постоянно отсылать это бред, мне нужен гет.

    не вижу связи...

    сделай в скрипте
    и посмотри что он у тебя выведет

    Ничего не вывело

     

    Powered by ExBB FM 1.0 RC1