За последние 24 часа нас посетили 18712 программистов и 1607 роботов. Сейчас ищут 911 программистов ...

Форма и скрипт для поиска записей в БД

Тема в разделе "PHP и базы данных", создана пользователем rodion4657, 27 фев 2012.

  1. rodion4657

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

    С нами с:
    24 янв 2012
    Сообщения:
    135
    Симпатии:
    0
    Добрые люди, подскажите почему не осуществляется поиск по заданному критерию
    Код (Text):
    1. function get_search_item_form ()
    2.    {
    3.    
    4.   echo '<form name="searchform" action="'.$_SERVER['PHP_SELF'].'?action=search" method="POST">';
    5.        echo 'Критерий<br>';
    6.  echo '<input type="text" name="date" size="60" value="">';
    7.        echo '<input type="submit" name="submit" value="Искать">' ;
    8.   echo '<input type="reset" name="reset" value="Очистить">';
    9.   echo '</form>';
    10.     }
    11.    function search_item ()
    12.    {
    13.     $name = mysql_escape_string( $_POST['name'] );
    14.    $old = mysql_escape_string( $_POST['old'] );
    15.    $ves = mysql_escape_string( $_POST['ves'] );
    16.     $date = mysql_escape_string( $_POST['date'] );
    17.    
    18.    $query = "SELECT * FROM t WHERE UPPER(date) LIKE '%".strtoupper($_POST['name'])."%'";
    19.    $res = mysql_query( $query ) or die("Запрос ошибочный");
    20.  
    21.    header( 'Location: '.$_SERVER['PHP_SELF'] );
    22.    die();
    23.  
    24.    
    25.    }
    ну и вывод самой базы....
    Код (Text):
    1. // Функция выводит список всех записей в таблице БД
    2. function show_list()
    3. {
    4. echo '<form action="search.php" method="post">';
    5. echo 'Критерий<br>';
    6. echo '<input type="text" name="date" size="60" value="">';
    7. echo '<input type="submit" name="submit" value="Искать">';
    8. echo '<input type="reset" name="reset" value="Очистить">';
    9. echo '</form>';
    10.                                  
    11. $query = "SELECT * FROM t WHERE UPPER(date) LIKE '%".strtoupper($_POST['name'])."%'";
    12.   $res = mysql_query( $query ) or die("Запрос ошибочный");
    13.  
    14.    echo '<h2>База</h2>';
    15.    echo '<table border="1" cellpadding="2" cellspacing="0">';
    16.   echo '<tr><th>ID</th><th>Имя</th><th>Возраст</th><th>Вес</th><th>Дата</th><th>Ред.</th><th>Удл.</th></tr>';
    17.    while ( $item = mysql_fetch_array( $res ) )
    18.    {
    19.      echo '<tr>';
    20.      echo '<td>'.$item['id'].'</td>';
    21.      echo '<td>'.$item['name'].'</td>';
    22.      echo '<td>'.$item['old'].'</td>';
    23.      echo '<td>'.$item['ves'].'</td>';
    24.       echo '<td>'.$item['date'].'</td>';  
    25.      echo '<td><a href="'.$_SERVER['PHP_SELF'].'?action=editform&id='.$item['id'].'">Ред.</a></td>';
    26.      echo '<td><a href="'.$_SERVER['PHP_SELF'].'?action=delete&id='.$item['id'].'">Удл.</a></td>';
    27.      echo '</tr>';
    28.    }
    29.    echo '</table>';
    30.    
    31.    echo '<p><a href="'.$_SERVER['PHP_SELF'].'?action=addform">Добавить</a></p>';
    32.    echo '<p><a href="'.$_SERVER['PHP_SELF'].'?action=searchform">Поиск</a></p>';  
    33.  
    34. }
    подскажите где ошибки....
     
  2. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    А $_POST['name'] имеет значение?

    Добавлено спустя 1 минуту 23 секунды:
    Зачем ты очищаешь $name = mysql_escape_string( $_POST['name'] );
    а в запрос ставишь strtoupper($_POST['name'])
     
  3. rodion4657

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

    С нами с:
    24 янв 2012
    Сообщения:
    135
    Симпатии:
    0
    Код (Text):
    1.  $query = "SELECT * FROM t WHERE UPPER(date) LIKE '%".strtoupper($_POST['date'])."%'";
    2.  echo '<input type="text" name="date" size="60" value="">';
    вот так...

    Добавлено спустя 1 минуту 35 секунд:
    то есть
    Код (Text):
    1. mysql_escape_string
    не использовать?
     
  4. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Использовать!
    В твоем запросе ты подставляешь как раз не очищенные данные, хотя до этого ты очистил.

    Да используй $_POST['date']
     
  5. rodion4657

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

    С нами с:
    24 янв 2012
    Сообщения:
    135
    Симпатии:
    0
    Спасибо)))