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]   

> Без описания
VasyaCV
Отправлено: 17 Июня, 2011 - 15:54:06
Post Id


Новичок


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


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




Здравствуйте!
Я новичок в php. Есть задание. Надо сделать поиск по выпадающему списку. При выборе значения из списка делается запрос в базу данных.
Моя форма:
CODE (htmlphp):
скопировать код в буфер обмена
  1. <form action="search.php" method="post" name="f1" onsubmit="javascript: if ((txtSearch1.value=='')||(txtSearch1.value=='Поиск...')) { return false; } else { return true; }">
  2.          
  3.             <select name=txtFields1 size=1 method="post">
  4.             <option value="ZERO" selected>-- виберiть поле --</option>
  5.             <option value="tit">название</option>
  6.             <option value="aut">автор</option>
  7.             <option value="ed">редактор</option>
  8.             </select>
  9.          <input type="text" name="txtSearch1" size="50" value="" onfocus="">
  10.          <input type="submit" name="submit" value="поиск">
  11.          <input type="reset" name="reset" value="удалить">
  12.             <


код поиска что писал:
CODE (htmlphp):
скопировать код в буфер обмена
  1. <?php
  2. /* Соединение, выбор БД */
  3. $link = mysql_connect("localhost", "root", "") or die("Не соединилось!!!");
  4. mysql_select_db("lb") or die("Не найдена БД");
  5. $query = "SELECT * FROM book WHERE UPPER(title) LIKE '%".strtoupper($_POST['txtSearch1'])."%'";
  6. $result = mysql_query($query) or die("Запрос ошибочный");
  7. $k=mysql_num_rows($result); //количество строк в результате запроса*/
  8. if ($k==0) {print "<h3 align=center>По ващому запиту нічого не знайдено. Повторіть пошук";}
  9. else{
  10. /* Печать результатов в HTML */
  11. print "Записів знайдено: <b>$k</b>";
  12. print "<table class=\"forumline\" border=\"0\" cellpadding=\"2\" cellspacing=\"1\" width=\"100%\">
  13. <tr></tr> \n";
  14. }
  15. while ($line = mysql_fetch_array($result, MYSQL_NUM)) {
  16. print "\t<tr>\n";
  17. for ($i=1;$i<=12;$i++){print "\t\t<td class=\"row1\" align=\"center\" valign=\"middle\" height=\"50\" width=\"16%\">$line[$i]</td>\n";}
  18. print "\t</tr>\n";
  19. }
  20. print "</table>\n";
  21. /* Освобождение памяти, занятой результатом запроса */
  22. /* Закрытие соединения */
  23. mysql_close($link);
  24. ?>
  25.  

(Отредактировано автором: 17 Июня, 2011 - 16:11:42)

 
 Top
OrmaJever
Отправлено: 17 Июня, 2011 - 16:09:01
Post Id



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


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


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




так вам точно не помгут... потому что непонятно чем Хм


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
VasyaCV
Отправлено: 17 Июня, 2011 - 16:17:24
Post Id


Новичок


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


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




У меня есть база данных. Мне нужно по форме которую я написал выше делать поиск в базе. Например я выбираю из выпадающего списка автор и надо искать в базе по полю автор. Или я выбираю название и искать надо по полю название в таблице базы. Я не могу не как разобраться с выпадающим списком. Ищет только по одному значению, несмотря на то что в форме выбираю разные значения.
 
 Top
LIME
Отправлено: 17 Июня, 2011 - 18:54:21
Post Id


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


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


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




VasyaCV могу предположить что выборка получается только по названию .
Да?
(Добавление)
в 5ой строке PHP поменяйте поле title на переменную которую перед этим инициализируйте в зависимости от txtFields1.
Или лучше выставте значения select как соответствующие поля в базе. Тогда :

PHP:
скопировать код в буфер обмена
  1.  
  2. $query = "SELECT * FROM book WHERE UPPER($_POST['txtFields1']) LIKE '%".strtoupper($_POST['txtSearch1'])."%'";
  3.  


наверное так
(Добавление)
и кстати хорошобы както проверить обе переменные на вшивость сначала если безопасность важна.
негоже их явно в запрос пихать . Подмигивание
 
 Top
VasyaCV
Отправлено: 18 Июня, 2011 - 09:32:56
Post Id


Новичок


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


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




а как это сделать?
 
 Top
LIME
Отправлено: 18 Июня, 2011 - 10:37:09
Post Id


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


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


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




http://php.su/functions/?strip-tags для начала

ихорошобы убрать пробелы в начале и конце ...их случайно лепят все подряд а потом ищут где ошибка -
http://php.su/functions/?trim


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

пы сы : А код-то заработал?
(Добавление)
если ввести в поиске к примеру -

?> <h1>VasyaCV ламер<h1><?php

то это подставится в ваш код вместо переменной $_POST['txtSearch1']
догадались что получится в итоге? )))

(Отредактировано автором: 18 Июня, 2011 - 10:37:50)

 
 Top
VasyaCV
Отправлено: 18 Июня, 2011 - 14:10:30
Post Id


Новичок


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


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




код заработал только не много в другом варианте.
При таком запросе:
PHP:
скопировать код в буфер обмена
  1.  
  2. $search = mysql_real_escape_string($_POST['txtSearch1']);
  3. $query = "SELECT * from book where ".mysql_escape_string($_POST['txtFields1'])." like '%".$search."%'";

всё работает на ура)

(Отредактировано автором: 18 Июня, 2011 - 14:28:26)

 
 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