Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.12.2015, 14:00   #1
Luchfan12
Пользователь
 
Регистрация: 01.03.2014
Сообщений: 37
По умолчанию Запрос на вывод данных, соответствующих полю

Есть таблица, где содержится информация о товарах, а именно название товара, его цена, год выпуска, название фирмы и так далее. У меня на странице отображается таблица товаров, сверху неё решил добавил поле select, где содержатся даты выпуска товаров соответственно базе данных phpMyAdmin. Хочу чтобы при нажатии на кнопку "Отобразить", выводились только те товары, которые соответствуют году выпуска из поля select.
PHP код:
<?php 
error_reporting
(E_ALL E_DEPRECATED);
$user 'root';
$password '';
$db 'test';
mysql_connect("localhost",$user$password) or die("Could not connect: ".mysql_error());
mysql_select_db($db) or die("Could not select database:".mysql_error());
?>
<?php
function printData($data)
{    
echo 
"<tr>";    
echo 
"<td>";
echo 
"<img src='{$data['picture']}' width='200'/>";
echo 
"</td>";
echo 
"<td>";
echo 
$data['title'];
echo 
"</td>";
echo 
"<td>";
echo 
$data['price'];
echo 
"</td>";
echo 
"</tr>";    
}
?>
<table width="100%">
<tr>
<td><img src="logo.jpg" alt="Логотип"/> </td>
<td><b style="font-size:50px;">Shop</b></td>
</tr>
<tr>
<td><a href="index.html"> На главную </a></td>
<td><a href="contact.html"> Контакты </a></td>
</tr>
</table>
<div align="center">
<?php
$result_1 
mysql_query("SELECT * FROM goods");
if (
$result_1 == true) {
echo 
"<select>";
while (
$grad mysql_fetch_array($result_1)) {
echo 
"<option>".$grad['grad_year']."</option>";    
}    
echo 
"</select>";
}
?>
<?php
echo "<input type = 'button' value = 'Отобразить' name = ".$grad['grad_year']."/>";
echo 
"</br>";
?>
<table border="1">
<?php
$result 
mysql_query('SELECT picture, title, price FROM goods where grad_year = "$grad_year"');
while (
$row mysql_fetch_array($result))
    
printData($row);
?>
</table>
</div>
Пока мои попытки не увенчались успехом, в чём может быть загвоздка?
Luchfan12 вне форума Ответить с цитированием
Старый 08.12.2015, 14:56   #2
CodeNOT
Форумчанин
 
Аватар для CodeNOT
 
Регистрация: 08.11.2010
Сообщений: 593
По умолчанию

где форма? как параметр передавать собираетесь? в запросе увидел что передаете
Код:
$grad_year
но вы как-то странно сделали все

логика такая:
1) формируем форму со списком годов выпуска в селект
2) формируем запрос к бд, смотрим, если передан год выпуска - то фильтруем по нему, если нет - то выводим список город без фильтрации
3) ...
4) profit
CodeNOT вне форума Ответить с цитированием
Старый 08.12.2015, 15:08   #3
Luchfan12
Пользователь
 
Регистрация: 01.03.2014
Сообщений: 37
По умолчанию

Я так понимаю надо инициализировать переменную $grad_year, но что лучше туда будет прописать?
Luchfan12 вне форума Ответить с цитированием
Старый 08.12.2015, 15:51   #4
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Примерно так:
PHP код:
<?php
header
("Content-type: text/html; charset=utf-8");
// PDO settings
$dsn "mysql:host=127.0.0.1;dbname=test;charset=utf8";
$opt = array(
    
PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
    
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
);
// PDO object
$pdo = new PDO($dsn'test''test'$opt);

// получаем года выпуска товаров, упорядоченные по убыванию
$goods_years $pdo->query("SELECT DISTINCT `year` FROM `goods` ORDER BY `year` DESC")->fetchAll();

// определяем, передан ли из формы год выпуска
$form_year = (!empty($_POST['form_year'])) ? (int)$_POST['form_year'] : 0;

// выводим форму выбора года выпуска товаров
if(!empty($goods_years)){
?>
<form action="" method="post">
    <select name="form_year">
        <option value="0">- Все года -</option>
    <?php
    
foreach ($goods_years as $item) {
        
// отмечаем в списке выбранный ранее год
        
$selected = ((int)$item['year'] == $form_year) ? ' selected="selected"' '';
        echo 
'<option value="' $item['year'] . '"' $selected '>' $item['year'] . '</option>';
    }
    
?>
    </select>
    <input type="submit" value="Send" style="display: inline; margin-left: 15px;" />
</form>
<?php
}

// формируем условие для выбора товаров определенного года выпуска
$condition = (!empty($form_year)) ? " WHERE `year` = '" $form_year "'" "";

// получаем список товаров
$goods $pdo->query("SELECT * FROM `goods`" $condition)->fetchAll();

// выводим таблицу с товарами
if(!empty($goods)){
?>
<table cellpadding="10" cellspacing="0" border="1">
    <thead>
        <th>Название</th>
        <th>Цена</th>
        <th>Год выпуска</th>
    </thead>
    <tbody>
    <?php
    
foreach ($goods as $item) {
        echo 
'<tr>';
        echo 
'<td>' $item['title'] . '</td>';
        echo 
'<td>' $item['price'] . ' р.</td>';
        echo 
'<td>' $item['year'] . '</td>';
        echo 
'</tr>';
    }
    
?>
    </tbody>
</table>
<?php
}
?>
Результат:
Andkorol вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запрос на вывод данных stas_kovel Помощь студентам 6 25.06.2013 16:54
Перенос данных, соответствующих уникальным. Наталья Новичок Microsoft Office Excel 3 23.07.2012 12:49
запрос к бд, и вывод данных. vladislav_m PHP 2 03.06.2011 19:43
Как создать запрос на вывод данных, указанным пользователем? Simbionix Microsoft Office Access 2 08.04.2011 00:58