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]   

> Без описания
Andrey5555
Отправлено: 17 Января, 2008 - 19:43:53
Post Id


Частый гость


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


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




Надо сделать поиск. Все есть, вот только не знаю как сделать так что бы можно было выбрать все (в даном случае разделы).

Вот форма:
PHP:
<form id="form1" name="form1" method="post" action="search.php">
<table width="1011" border="0" cellspacing="0" cellpadding="0">
<tr>
<th width="472" scope="col"><?php
include ("mysql.php");
$query = mysql_query ("SELECT id, title FROM sections ORDER BY title");
echo "<select name='section' id='section'>";
while (list ($section_id, $title) = mysql_fetch_array ($query))
echo "<option value=$section_id>$title</option>";
echo "</select>";
?> </th>
<th width="140" scope="col"> <select name="type" id="type">
<option>Предложение</option>
<option>Спрос</option>
<option>Обмен</option>
<option>Сдам</option>
<option>Сниму</option>
<option>Разное</option>
</select></th>
<th width="332" scope="col"><label>
<input name="search" type="text" id="search" size="50" />
</label></th>
<th width="67" scope="col"><label>
<input type="submit" name="Submit" value="Искать" />
</label></th>
</tr>
</table>
</form>


Нужно что бы можно было выбрать все разделы (типы).
Заранее спасибо.
Надеюсь на скорую помощь.
(Добавление)
Вот скрипт который обрабатывает форму:
PHP:
<?php
include ("mysql.php");
$search = $_POST ['search'];
$query = mysql_query ("SELECT id, section, type, text, name, email, date FROM announcements WHERE section = '$section', type = '$type' text LIKE '%$search%'");
while (list ($id, $section, $type, $text, $name, $email, $date) = mysql_fetch_array ($query))
{
echo "<table width='300' border ='1' >";
echo "<tr>";
echo "<td width='150'>$type</td><td><div align='right'>$date</div></td>";
echo "</tr>";
echo "</table>";
echo "<table width='300' border ='1'>";
echo "<tr>";
echo "<td>$text</td>";
echo "</tr>";
echo "</table>";
echo "<table width='300' border ='1'>";
echo "<tr>";
echo "<td width='150'>$name</td><td><div align='right'><a href='mailto:$email'>$email</div></td>";
echo "</table>";
echo "<br>";
}
?>
 
 Top
EuGen Администратор
Отправлено: 17 Января, 2008 - 19:47:41
Post Id


Профессионал


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


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




Проблема в том, чтобы добавить в select еще пункт "Все разделы"? или в том, как сформировать запрос, чтобы он охватывал все разделы? Или в чем-то еще? Что-то не до конца ясно пока что.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Andrey5555
Отправлено: 17 Января, 2008 - 19:55:32
Post Id


Частый гость


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


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




Сформировать запрос.
 
 Top
EuGen Администратор
Отправлено: 17 Января, 2008 - 20:03:22
Post Id


Профессионал


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


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




ОК,
Так, как Вы сейчас это делаете - не совсем правильно, потому что в Вашем запросе нет гибкости. Как я обычно делаю в таких случаях:
CODE (text):
скопировать код в буфер обмена
  1.  
  2. $section=$_POST['section'];
  3. $search=$_POST['search'];
  4. $type=$_POST['type'];
  5. $rgWheres=array();
  6. if($section)
  7.    $rgWheres[]="section='".addslashes($section)."'";
  8. if($type)
  9.    $rgWheres[]="type='".addslashes($type)."'";
  10. if($search)
  11.    $rgWheres[]="`text` LIKE '%".addslashes($search)."%'";
  12. $strWhere=join("&&", $rgWheres);
  13. if ($strWhere)
  14.    $strWhere="WHERE ".$strWhere;
  15. if($search)
  16. {
  17.    $query = mysql_query ("SELECT id, section, type, text, name, email, date FROM announcements $strWhere");
  18. }
  19.  

(Отредактировано автором: 17 Января, 2008 - 20:08:04)



-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Andrey5555
Отправлено: 17 Января, 2008 - 20:10:51
Post Id


Частый гость


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


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




А есть ли вариант попроще? Без использования масива. Так что бы было как дважды два? Я не совсем понимаю как можно осуществить выбор всего? Как в переменную получить все значения типов (разделов)?
(Добавление)
А есть ли вариант попроще? Без использования масива. Так что бы было как дважды два? Я не совсем понимаю как можно осуществить выбор всего? Как в переменную получить все значения типов (разделов)? Или это делаеться как то по другому? Лучше обьяните как это осуществляеться, может я сам смогу реализовать.
Спасибо
 
 Top
EuGen Администратор
Отправлено: 17 Января, 2008 - 20:13:45
Post Id


Профессионал


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


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




Вот как это работает:
предположим, $_POST['section'] пусто. (Кстати, Вам нужно сделать в Вашем select выбор такого вида: <option value=''>Все категории</option>).
тогда в массив $rgWheres не попадет строка "section='$section'", и, соответственно, в строку $strWhere тоже не попадет это условие.
Тогда и в запросе у Вас его не будет, и, стало быть, будет сделана выборка по всем section.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Andrey5555
Отправлено: 18 Января, 2008 - 16:00:35
Post Id


Частый гость


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


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




А можно ли как то без использования масива?
 
 Top
Andrey5555
Отправлено: 27 Января, 2008 - 13:12:02
Post Id


Частый гость


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


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




Вот появилась еще одна проблема. При поиске мне надо разбить результаты на страницы. Вот весь скрипт: PHP:
PHP:
скопировать код в буфер обмена
  1.  
  2.  <?PHP
  3.  include ("mysql.php");
  4.  $search = $_POST ['search'];
  5.  $s_section = $_POST ['section'];
  6.  $s_type = $_POST ['type'];
  7.  $query1 = mysql_query ("SELECT section, type, text, name, email, date FROM announcements WHERE section = '$s_section' and type = '$s_type' and text LIKE '%$search%'");
  8.  $allnum = mysql_num_rows ($query1);
  9.  if(!isset($_GET['page']))
  10.  $page = 1;
  11.  else
  12.  $page = ($_GET['page']);
  13.  $on_page = 1;
  14.  $begin = ($page - 1) * $on_page;
  15.  $num_pages = ceil ($allnum / $on_page);
  16.  $query = mysql_query ("SELECT section, type, text, name, email, date FROM announcements WHERE section = '$s_section' and type = '$s_type' and text LIKE '%$search%' LIMIT $begin, $on_page");
  17.      while (list ($section, $type, $text, $name, $email, $date) = mysql_fetch_array ($query))
  18.      {
  19.      echo "<table width='300' border ='1' >";
  20.      echo "<tr>";
  21.      echo "<td width='150'>$type</td><td><div align='right'>$date</div></td>";
  22.      echo "</tr>";
  23.      echo "</table>";
  24.      echo "<table width='300' border ='1'>";
  25.      echo "<tr>";
  26.      echo "<td>$text</td>";
  27.      echo "</tr>";
  28.      echo "</table>";
  29.      echo "<table width='300' border ='1'>";
  30.      echo "<tr>";
  31.      echo "<td width='150'>$name</td><td><div align='right'><a href='mailto:$email'>$email</div></td>";
  32.      echo "</tr>";
  33.      echo "</table>";
  34.      echo "<br>";
  35.      }
  36.  for($i=0;$i<$num_pages;$i++)
  37.  {
  38.  $pages = $i+1;
  39.  echo "<a href=?page=$pages>$pages</a> ";
  40.  }
  41.  ?>




Ссылки на страницы выводит. Но при перехлде на любую страницу результат уже не отображаеться. В чем проблема и что мне делать? Спасибо.


Отредактировано модератором: Dastar, 01 Февраля, 2008 - 18:01:09
Используй теги [ php ] и [/ php ] для оформления кода.
 
 Top
Andrey5555
Отправлено: 01 Февраля, 2008 - 17:33:38
Post Id


Частый гость


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


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




Так как все таки сделать выборку ВСЕГО попроще?

Вот новый скрипт:
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. include ("mysql.php");
  4. if (isset($_GET['search']))
  5. $search = $_GET['search'];
  6. $s_section = $_GET ['section'];
  7. $s_type = $_GET ['type'];
  8. $query1 = mysql_query ("SELECT section, type, text, name, email, date FROM announcements WHERE section = '$s_section' and type = '$s_type' and text LIKE '%$search%'");
  9. $allnum = mysql_num_rows ($query1);
  10. if(!isset($_GET['page']))
  11. $page = 1;
  12. else
  13. $page = ($_GET['page']);
  14. $on_page = 10;
  15. $begin = ($page - 1) * $on_page;
  16. $num_pages = ceil ($allnum / $on_page);
  17. $query = mysql_query ("SELECT section, type, text, name, email, date FROM announcements WHERE section = '$s_section' and type = '$s_type' and text LIKE '%$search%' LIMIT $begin, $on_page");
  18.      while (list ($section, $type, $text, $name, $email, $date) = mysql_fetch_array ($query))
  19.      {
  20.      echo "<table width='300' border ='1' >";
  21.      echo "<tr>";
  22.      echo "<td width='150'>$type</td><td><div align='right'>$date</div></td>";
  23.      echo "</tr>";
  24.      echo "</table>";
  25.      echo "<table width='300' border ='1'>";
  26.      echo "<tr>";
  27.      echo "<td>$text</td>";
  28.      echo "</tr>";
  29.      echo "</table>";
  30.      echo "<table width='300' border ='1'>";
  31.      echo "<tr>";
  32.      echo "<td width='150'>$name</td><td><div align='right'><a href='mailto:$email'>$email</div></td>";
  33.      echo "</tr>";
  34.      echo "</table>";
  35.      echo "<br>";
  36.      }
  37. for($i=0;$i<$num_pages;$i++)
  38. {
  39. $pages = $i+1;
  40. echo "<a href=?page=$pages&section=$s_section&type=$s_type&search=".urlencode($search).">$pages</a> ";
  41. }
  42. ?>
  43.  
 
 Top
valenok Модератор
Отправлено: 01 Февраля, 2008 - 19:20:56
Post Id



Здесь могла бы быть ваша реклама


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


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




Вникать в тему не буду, но вопрос который мне не даёт спать ..
Вы действительно считаете что вся эта html фигня - облегчает нам вашу помощь?
Зачем 15 строк кода из котороых 10 html ?
Дело в формировании правильного запроса, а тут страницы кода ( и в ширину ).
Зачем это надо?

Ну мы что, не понимаем что вы будете делать с данными?
Выводить их циклом. Зачем вы нам цикл в коде оставили? Он нам нужен?
Постраничная навигация.. Какое отношению к заголовку вопроса она имеет??

Зачем вы присваиваете отдельным перемнным значения из массива?
Кроме того ещё дублируя его.
Да уже не говоря о эффективности программы, зачем вы лишнюю работу делаете?
О стиле программирования я ничего не говорю. Хотите писать вместо двух строк четыре - пожалуйста.

А теперь для того чтобы я мог помочь вам составить запрос,
скажите пожалуйста что же я должен для этого знать.

Ну и самое главное
какое ваш код имеет отношение к простому вопросу:
Так как все таки сделать выборку ВСЕГО попроще?

Если вы придумали гениальный метод реализации решения вашей задачи,
то спрашивайте конкретный вопрос.
Если вы не знаете как бы решить ту или иную задачу - так и спросите.

Эту тему я вам предлагаю либо отредактировать, либо попросить у супермодератора
её отредактировать, либо забыть про неё и начать новую.

--
Если у вас попросили дать полный код, приношу извинения заранее.
Я такие темы не читаю. Вместо того чтобы вам помочь, вы загружаете меня работой.


-----
Truly yours, Sasha.
 
My status
 Top
EuGen Администратор
Отправлено: 01 Февраля, 2008 - 20:32:45
Post Id


Профессионал


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


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




Спокойствие, только спокойствие.
Человек скоро, я думаю, сам поймет, в чем он не прав и почему ответов маловато. И тогда уже будут приводиться более разумные объяснения и примеры.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
valenok Модератор
Отправлено: 01 Февраля, 2008 - 22:42:40
Post Id



Здесь могла бы быть ваша реклама


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


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




Да я просто выпалил. Накопилось.
Я каждую третюю тему открываю и вообще не читаю ..


-----
Truly yours, Sasha.
 
My status
 Top
evgenijj
Отправлено: 02 Февраля, 2008 - 11:45:30
Post Id



Участник


Покинул форум
Сообщений всего: 1212
Дата рег-ции: Авг. 2006  
Откуда: Москва


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




valenok пишет:
Я такие темы не читаю. Вместо того чтобы вам помочь, вы загружаете меня работой.

+1
 
 Top
Dastar
Отправлено: 02 Февраля, 2008 - 16:47:39
Post Id



Частый гость


Покинул форум
Сообщений всего: 199
Дата рег-ции: Янв. 2008  
Откуда: Израиль


Помог: -6 раз(а)




Адрей, твой вопрос вынеc в отдельную тему.
Тема закрыта!


-----
Не знаешь - молчи.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB