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]   

> Описание: Кто поможет додуматься
Rus88
Отправлено: 05 Ноября, 2009 - 06:37:55
Post Id



Гость


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


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

[+]


Воопщем проблема в том что я не могу подточить значение <option value="0" selected>Любой</option> которые стоят в обоих селектах, ранее предложенную версию насчет запроса в поиске по значению ноль предлогали
PHP:
скопировать код в буфер обмена
  1.  
  2.    1.
  3.       if ($_POST['razdel'] == 0) {
  4.    2.
  5.       $where = ' WHERE `razdel_id` = '.$razdel;
  6.    3.
  7.       } else {
  8.    4.
  9.       $where = ' WHERE `razdel_id` = '.$razdel.' AND `podrazdel_id` = '.$podrazdel;
  10.    5.
  11.       }
  12.    6.$sql="SELECT obyavlenie,telephone FROM index_block".$where;
  13.  


Задача в том что мне надо когда выбирается значени 0 то есть Любой, выводились все сообщения с базы а не по значению ноль, ну и естественно если юзер выбирает в первом селекте выбирает к примеру бла-бла раздел, а во втором остается значение ноль то есть Любой то также выполняется поиск по этому разделу и выносятся все объявления которые относятся к этому разделу, кстати забыл сказать 2 селекта работают на аяксе, то есть второй селект от выбора в первом селекте=))

сама форма для двух селектов:
PHP:
скопировать код в буфер обмена
  1.  
  2. <form action="search.php" method="POST">
  3. Раздел:<br><select name="razdel" id="razdels" onchange="get_podrazdels()">
  4. <option value="0" selected>Любой</option>
  5. <?
  6. $sql = "SELECT id,name FROM razdel";
  7. $result = mysql_query($sql) or die (mysql_error());
  8. while($row = mysql_fetch_array($result)){
  9. echo '<option value='.$row[0].'>'.$row[1].'</option>';
  10. }?>
  11. </select><br><br>
  12. <div id="podrazdels"><br>
  13. Подраздел:<br><select name="podrazdel">
  14. <option value="0" selected>Любой</option>
  15. </select><br><br>
  16. </div><br>
  17. <input type="submit" value="Найти">
  18. </form>
  19.  


скрипт поиска:
PHP:
скопировать код в буфер обмена
  1.  
  2. include "config.php";
  3. $razdel = (isset($_POST['razdel'])) ? mysql_real_escape_string($_POST['razdel']) : NULL;
  4. $podrazdel = (isset($_POST['podrazdel'])) ? mysql_real_escape_string($_POST['podrazdel']) : NULL;
  5. $sql = "SELECT obyavlenie,telephone FROM index_block WHERE razdel_id = '$razdel' and podrazdel_id = '$podrazdel'";}
  6. $result = mysql_query($sql) or die(mysql_error());
  7. while($row = mysql_fetch_array($result)){
  8. echo $row[0].$row[1]."<br>";
  9. }
  10.  


Таблица где будут хранится все объявления:

CODE (text):
скопировать код в буфер обмена
  1.  
  2. CREATE TABLE `index_block` (
  3.   `id` int(5) NOT NULL auto_increment,
  4.   `razdel_id` int(5) NOT NULL,
  5.   `podrazdel_id` int(5) NOT NULL,
  6.   `obyavlenie` text NOT NULL,
  7.   `telephone` varchar(255) NOT NULL,
  8.   `date` varchar(255) NOT NULL,
  9.   `time` varchar(255) NOT NULL,
  10.   PRIMARY KEY  (`id`)
  11. ) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=1 ;
  12.  
  13.  
 
 Top
Djin_dj
Отправлено: 05 Ноября, 2009 - 08:18:36
Post Id



Частый гость


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


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




Хоть убей не пойму, если у тя оптион валуе равно 0, то ты такого раздела не найдешь, мне кажется в первой опции тебе надо поставить value='' и проверять если option value = '', то $where = '' иначе уже применять и идэшник раздела и идэшник подраздела в селекте
 
 Top
JROUD
Отправлено: 05 Ноября, 2009 - 09:06:43
Post Id


Гость


Покинул форум
Сообщений всего: 78
Дата рег-ции: Нояб. 2009  


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




Rus88, я конечно сам новичок в php, но мне кажется что нужно так:
PHP:
скопировать код в буфер обмена
  1.  
  2. if ($_POST['razdel'] == 0)
  3. {
  4.         $query=mysql_query('SELECT * FROM razdel_id');
  5.         $where= 'WHERE `razdel_id` = ';
  6.         for ($i=1; $i<=mysql_num_rows($query); $i++)
  7.         {
  8.                 $where=$where.mysql_result($query, $i).',';
  9.         }
  10. }
  11. else
  12. {
  13.         $where = ' WHERE `razdel_id` = '.$razdel.' AND `podrazdel_id` = '.$podrazdel;
  14. }
  15.  
 
 Top
Djin_dj
Отправлено: 05 Ноября, 2009 - 09:09:12
Post Id



Частый гость


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


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




JROUD пишет:
Rus88, я конечно сам новичок в php, но мне кажется что нужно так:
PHP:
скопировать код в буфер обмена
  1.  
  2. if ($_POST['razdel'] == 0)
  3. {
  4.         $query=mysql_query('SELECT * FROM razdel_id');
  5.         $where= 'WHERE `razdel_id` = ';
  6.         for ($i=1; $i<=mysql_num_rows($query); $i++)
  7.         {
  8.                 $where=$where.mysql_result($query, $i).',';
  9.         }
  10. }
  11. else
  12. {
  13.         $where = ' WHERE `razdel_id` = '.$razdel.' AND `podrazdel_id` = '.$podrazdel;
  14. }
  15.  

Господа вы, чего Однако SELECT * FROM razdel_id - это ты то из поля таблицы выборку делаешь? в топку сразу
(Добавление)
конспектируй
CODE (text):
скопировать код в буфер обмена
  1.  
  2. if (isset($_POST['razdel']) && $_POST['razdel'] == '')
  3. {
  4.    if(preg_match('/^[0-9]*$/',$_POST['razdel']))
  5.    {
  6.       $where = "";
  7.    }
  8. }
  9. else
  10. {
  11.    if(isset($_POST['razdel']) && $_POST['razdel'] != '' && isset($_POST['podrazdel']) && $_POST['podrazdel'] == '')
  12.    {
  13.    if(preg_match('/^[0-9]*$/',$_POST['razdel']))
  14.    {
  15.      $where = " WHERE razdel_id = \"".$_POST['razdel']."\"";
  16.    }
  17.    }
  18.    elseif(isset($_POST['razdel']) && $_POST['razdel'] != '' && isset($_POST['podrazdel']) && $_POST['podrazdel'] != '')
  19.    {
  20.    if(preg_match('/^[0-9]*$/',$_POST['razdel']) && preg_match('/^[0-9]*$/',$_POST['podrazdel']))
  21.    {
  22.      $where = " WHERE razdel_id = \"".$_POST['razdel']."\" AND podrazdel_id = \"".$_POST['podrazdel']."\"";
  23.    }
  24.    }
  25. }
  26.     $sql="SELECT obyavlenie,telephone FROM index_block".$where;
  27.  
 
 Top
JROUD
Отправлено: 05 Ноября, 2009 - 09:46:05
Post Id


Гость


Покинул форум
Сообщений всего: 78
Дата рег-ции: Нояб. 2009  


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




Ну я же предупреждал Закатив глазки
 
 Top
Djin_dj
Отправлено: 05 Ноября, 2009 - 10:00:29
Post Id



Частый гость


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


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




JROUD пишет:
Ну я же предупреждал Закатив глазки


Сразу вас ограничил от того чтобы не проверялись идэшники не цифры и при отсутствии глобальных переменных и совет, не используйте такой эквивалент
if($_POST['variable'])
{
$x = $variable;
}
так как при выключенных register_globals=off у вас скрипт не будет работать
А включение оного создает брешь в безопасности.
Так что лучше всегда проверяйте существование передаваемых переменных через isset(), а также если переменная имеет известный тип то проверяйте его preg_match - регулярные выражения на то и созданы, чтобы не пользоваться перебором
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Напишите за меня, пожалуйста »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB