За последние 24 часа нас посетили 18215 программистов и 1596 роботов. Сейчас ищут 967 программистов ...

Запрос по параметру

Тема в разделе "PHP и базы данных", создана пользователем Fidlestick, 6 ноя 2010.

  1. Fidlestick

    Fidlestick Активный пользователь

    С нами с:
    5 ноя 2010
    Сообщения:
    9
    Симпатии:
    0
    Добрый вечер!
    Есть 2 страницы:

    1 страница- (форма для заполнения)

    PHP:
    1. <form name="form_s" method="post" action="view_searchsell.php">
    2.         <p><label>Введите название товара<br>
    3.         <input name="search" type="text" size="25" maxlength="40" /> </p>
    4. ...
    2 страница - (поиск по базе)

    PHP:
    1. <?
    2. if (isset($_POST['submit_s']))      {$submit_s = $_POST['submit_s'];}
    3. if (isset($submit_s))
    4. {
    5. $query = " SELECT * FROM datasell ";
    6.                
    7. if (isset($_POST['seller']))      
    8. {
    9.     $seller = $_POST['seller'];
    10.     $where[]= "seller = ('$seller')";
    11. }
    12. if (isset($_POST['cat']))      
    13. {
    14.     $cat = $_POST['cat'];
    15.     $where[]= "cat = ('$cat')";
    16. }
    17. if (isset($_POST['prise']))
    18. {
    19. if (isset($_POST['prise2']))
    20. {
    21.     $prise2 = $_POST['prise2'];
    22.     $where[]= "prise BETWEEN ($prise) AND ($prise2)";
    23. }
    24. }
    25. else
    26. {
    27.     $prise = $_POST['prise'];
    28.     $where[]= "prise >= ($prise)";
    29. }  
    30.  
    31.  
    32. if (isset($_POST['search']))
    33. {
    34.     $search = $_POST['search'];
    35.     $search = trim($search);
    36.     $search = stripslashes($search);
    37.     $search = htmlspecialchars($search);
    38.     $where[]= "MATCH(text) AGAINST('$search')";
    39. }
    40.  
    41.  
    42. $where_sql = '';
    43. if(sizeof($where))
    44. {
    45.     $where_sql = ' WHERE '.implode(" AND ",$where);
    46. }
    47. $result=mysql_query($query.$where_sql);
    48. }  
    49. else
    50. {
    51. exit("<p>Вы обратились к файлу без параметров.</p>");
    52. }
    53. ....
    54. ?>
    55.  
    Хочу сдлеать так чтобы выбор шел только по тем параметрам которые я указал в форме.
    Во втором коде присутствует ошибка, не могу найти какая. В результате
    PHP:
    1.  if (mysql_num_rows($result) > 0)
    всегда False, даже если все поля заполнены данными из базы. Подскажите что неправильно ?
     
  2. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    выведи на экран запрос который в базу уходит, скопируй его и выполни в phpma
     
  3. Fidlestick

    Fidlestick Активный пользователь

    С нами с:
    5 ноя 2010
    Сообщения:
    9
    Симпатии:
    0
    Если не подставлять параметры, то результатом запроса будет:

    PHP:
    1. WHERE seller = ('') AND cat = ('') AND prise BETWEEN () AND () AND MATCH(text) AGAINST('')
    Из-за того что пустые переменные и выдает ошибку. Почему не срабатывает условие:
    PHP:
    1. if (isset($_POST['переменная']))
    2. {
    3.     $where[]= "значение из таблицы = ($переменная)";
    4.  
     
  4. Gromo

    Gromo Активный пользователь

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    PHP:
    1.  
    2. <?php
    3.  
    4. ...
    5.  
    6. $query = 'SELECT * FROM table WHERE 1=1';
    7.  
    8. if(isset($_POST['seller']) && trim($_POST['seller'])!=''){
    9.   $seller = addslashes($_POST['seller']);
    10.   $query .= " AND seller='{$seller}'"
    11. }
    12.  
    13. if(isset($_POST['cat']) && trim($_POST['cat'])!=''){
    14.   $seller = addslashes($_POST['cat']);
    15.   $query .= " AND cat='{$cat}'"
    16. }
    17.  
    18. ...
    19.  
    20. ?>