За последние 24 часа нас посетил 20131 программист и 1572 робота. Сейчас ищут 1928 программистов ...

Выборка из бд по форме

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

  1. xdoc

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

    С нами с:
    17 авг 2010
    Сообщения:
    1
    Симпатии:
    0
    Здрасти, есть некая таблица kino_all из которой нужно сделать выборку(сортировку) строк по жанру и год как написано в форме. То есть заполняю я форму с выпадающим списком нажимаю "показать" и он выводит мне все строки из таблицы, которые совпадают с выбраными мною даными. К примеру Жанр - боевик, Год-2010 и он выводит мне все строки из таблицы где есть такие совпадения.
    Проблема заключается в том, что я незнаю как правильно оформить вот этот файл view.php, который служит обработчиком в форме. Нужно что бы он обрабавал форму, перезагружал страницу и выводил новые строки.

    Постарался объяснить более подробно, помогите пожалуйста.
    HTML:
    1.  
    2. <FORM action="view.php" method=post>
    3. <b> Выбрать жанр</b>
    4. <select name = "genre">
    5. <option value = "">выбрать</option>
    6. <option value = "1">боевик</option>
    7. <option value = "2">комедия</option>
    8. <option value = "3">триллер</option>
    9. <option value = "4">фантастика</option>
    10. <option value = "5">мелодрамма</option>
    11. <b> Выбрать год</b>
    12. <select name = "year">
    13. <option value = "">выбрать</option>
    14. <option value = "1">2010</option>
    15. <option value = "2">2011</option>
    16. <option value = "3">2010</option>
    17. <option value = "4">2012</option>
    18. <option value = "5">2011</option>
    19. <INPUT  type=submit name="показать" value=" показть ">
    20. </FORM>
    21.  
    Вот таблица которая выводит строки в цикле.
    PHP:
    1.  
    2. <?php
    3. $result = mysql_query ("SELECT * FROM kino_all ORDER BY id DESC", $db);        
    4. $myrow = mysql_fetch_array ($result);    
    5.  
    6. do {    
    7. ("<tbody>
    8.   <tr style='height:26px;'>
    9.    <td style='padding:4px;' ><a href='viewt_kino.php?id=%s'><strong>%s</strong></a></td>
    10.    <td style='padding:4px;'>%s</td>
    11.        <td style='padding:4px;'>%s</td>
    12.    <td style='padding:4px;'>%s</td>
    13.    <td style='padding:4px;'>%s</td>
    14.        <td style='padding:4px;'>%s</td>
    15.  </tr>
    16. </tbody> ",
    17.        
    18.         $myrow["id"], $myrow["title"], $myrow["genre"], $myrow["year"], $myrow["perevod"], $myrow["date_release"], $myrow["date_insert"]);
    19.  
    20. }
    21. while ($myrow = mysql_fetch_array ($result)) ;
    22.    
    23. ?>        
    24.  
    [sql]
    # phpMyAdmin SQL Dump
    # version 2.5.6
    # http://www.phpmyadmin.net
    #
    # Хост: localhost
    # Время создания: Авг 17 2010 г., 12:30
    # Версия сервера: 3.23.53
    # Версия PHP: 4.3.6
    #
    # БД : `enjoybox`
    #

    # --------------------------------------------------------

    #
    # Структура таблицы `kino_all`
    #

    CREATE TABLE `kino_all` (
    `id` int(10) NOT NULL AUTO_INCREMENT,
    `meta_d` varchar(255) NOT NULL DEFAULT '',
    `meta_k` varchar(255) NOT NULL DEFAULT '',
    `title` text NOT NULL,
    `genre` varchar(255) NOT NULL DEFAULT '',
    `year` varchar(255) NOT NULL DEFAULT '',
    `perevod` varchar(255) NOT NULL DEFAULT '',
    `date_release` varchar(255) NOT NULL DEFAULT '',
    `date_insert` varchar(255) NOT NULL DEFAULT '',
    PRIMARY KEY (`id`)
    ) TYPE=MyISAM AUTO_INCREMENT=13 ;

    #
    # Дамп данных таблицы `kino_all`
    #

    INSERT INTO `kino_all` VALUES (1, '', '', '2012', 'боевик', '2010', 'Русский', '20.04.2006', '14.08.2010');
    INSERT INTO `kino_all` VALUES (2, '', '', 'Солт', 'комедия', '2011', 'Английский', '10.12.2004', '14.08.2011');
    INSERT INTO `kino_all` VALUES (3, '', '', 'Начало', 'фантастика', '2010', 'русский', '10.10.2010', '12.10.2013');
    INSERT INTO `kino_all` VALUES (4, '', '', 'Первый фильм', 'фантастика', '2012', 'английсий', '12.10.2013', '12.10.2013');
    INSERT INTO `kino_all` VALUES (5, '', '', 'Второй фильм', 'боевик', '2010', 'русский', '4.11.2013', '5.10.2013');
    INSERT INTO `kino_all` VALUES (6, '', '', 'Третий фильм', 'триллер', '2010', 'русский', '9.10.2011', '12.10.2013');
    INSERT INTO `kino_all` VALUES (7, '', '', 'Четвёртый фильм', 'меложрамма', '2010', 'анлийский', '12.10.2010', '12.10.2013');
    INSERT INTO `kino_all` VALUES (8, '', '', 'Пятый фильм', 'комедия', '2011', 'русский', '12.4.2015', '12.10.2013');
    INSERT INTO `kino_all` VALUES (9, '', '', 'Шестой фильм', 'боевик', '2013', 'анлийский', '3.10.2011', '12.10.2013');
    INSERT INTO `kino_all` VALUES (10, '', '', 'Седьмой фильм', 'триллер', '2010', 'русский', '12.10.2013', '12.10.2013');
    INSERT INTO `kino_all` VALUES (11, '', '', 'Восьмой фильм', 'фантастика', '2012', 'анлийский', '12.4.2014', '12.10.2013');
    INSERT INTO `kino_all` VALUES (12, '', '', 'Девятый фильм', 'комедия', '2010', 'анлийский', '6.11.2012', '12.10.2013');
    [/sql]
     
  2. runner

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

    С нами с:
    16 апр 2010
    Сообщения:
    343
    Симпатии:
    1
    Адрес:
    Ташкент
    Сначала такое замечание
    Чтобы избежать преобразований года, в форме нужно изменить поле ввода года
    <b> Выбрать год</b>
    <select name = "year">
    <option value = "">выбрать</option>
    <option value = "2010">2010</option>
    <option value = "2011">2011</option>
    <option value = "2012">2012</option>
    </select>

    можно сделать так:
    1) проверить - нажата ли кнопка
    -если нажата, то установить параметры выборки записей
    -если нет- то параметров нет
    2)получить записи и вывести их
    3) вывести форму
    PHP:
    1.  
    2. <?php
    3. // пункт 1
    4. if(isset($_POST['показать']))
    5. {
    6.       $out=array();
    7.       if($_POST['genre']!='')
    8.       {
    9.             $out[]=" (genre='{$_POST['genre']}' )";
    10.       }
    11.       if($_POST['year']!='')
    12.       {
    13.             $out[]=" (year='{$_POST['year']}') ";
    14.       }
    15.       if(sizeof($out)>0)
    16.       {
    17.              $where=implode(' and ',$out);
    18.              $query="SELECT * FROM kino_all where $where ORDER BY id DESC";
    19.       }
    20.       else
    21.       {
    22.              $query="SELECT * FROM kino_all ORDER BY id DESC";
    23.       }    
    24. }
    25. else
    26. {
    27.       $query="SELECT * FROM kino_all ORDER BY id DESC";
    28. }
    29. // подсоединяетесь к своей базе данных
    30. .....
    31. //пункт 2
    32. $result = mysql_query ("SELECT * FROM kino_all ORDER BY id DESC", $db);      
    33. $myrow = mysql_fetch_array ($result);    
    34. //выводите записи
    35. ....
    36. // пункт 3-выводите форму
    37. ....
    38.