|
|
|
| Помогите разобраться с фильтрацией данных. Скрипт должен выводить информацию взятую с базы данных. В базе по мимо прочего есть два столбца date и datep, дата и дата подачи. Необходимо реализовать механизм фильтрации по этим двум типам даты. Таким образом что бы отсортировать или по дате или по дате подачи.
Вот мой скрипт:
<?
$submit_batton_value2="Çàñëàòü";
$days="";$months="";$years="";
$form_values=array();
$selected=" SELECTED";
for($i=0;$i<60;$i++){
if($i>0 && $i<=31){
$opt_days.='<option value="'.$i.'"'.(($days==$i)?$selected:"").'>'.(($i<10)?"0".$i:$i).'</option>';
if($i<=12){
$opt_months.='<option value="'.$i.'"'.(($months==$i)?$selected:"").'>'.(($i<10)?"0".$i:$i).'</option>';
}
}
}
for($i=date("Y");$i<=date("Y")+1;$i++){
$opt_year.='<option value="'.$i.'"'.(($year==$i)?$selected:"").'>'.$i.'</option>';
}
echo <<<END
<td colspan="3" align="center"><br />
<form action="konkurs_sort.php" method="post">
<table align="center" cellspacing="2" cellpadding="2" border="1">
<caption><b> Ôîðìà
ñîðòèðî
âêè äàíí
ûõ î ïðî
âåäåííû
õ êîíêóð
ñíûõ ìåð
îïðèÿòè
ÿõ. </b></caption>
<td>
<table align="center" cellspacing="2" cellpadding="2" border="0" bordercolor="#606060">
<tr>
<td colspan="5" align="center"><b>Ñîðò
èðîâêà ï
î äàòå â
íåñåíèÿ
</td></td>
</tr>
<tr>
<td><td name="datep">
<select
name="days">$opt_days</select>.
<select
name="months">$opt_months</select>.
<select
name="year">$opt_year</select></td>
<td align="right"><input type="Submit"
name=boot value="$submit_batton_value2"></td>
</tr>
</table>
<td>
<table align="center" cellspacing="2" cellpadding="2" border="0">
<tr>
<td colspan="5" align="center"><b>Ñîðò
èðîâêà ï
î äàòå ï
îäà÷è</td></td>
</tr>
<tr>
<td><td name="datep">
<select
name="dayss">$opt_days</select>.
<select
name="monthss">$opt_months</select>.
<select
name="years">$opt_year</select></td>
<td align="right"><input type="Submit"
name=boot value="$submit_batton_value2"></td>
</tr>
</table>
</table>
</td>
</table>
</form>
END;
?>
<br><br><br><br>
<?
print "<table align=center border=1>";
$db = pg_query("SELECT * FROM konkurs
ORDER BY date ASC
WHERE date = '" . $year . "-" . $months . "-" . $days . "'");
print "<tr align=center>";
print "<td>";
print "<b> ¹ ï\ï ";
print "</td>";
print "<td>";
print "<b> Äàòà â
íåñåíèÿ
";
print "</td>";
print "<td>";
print "<b> Êëèåíò ";
print "</td>";
print "<td>";
print "<b> Òèï êî
íêóðñà ";
print "</td>";
print "<td>";
print "<b> Ññûëê
à ";
print "</td>";
print "<td>";
print "<b> Îïèñà
íèå ";
print "</td>";
print "<td>";
print "<b> Äàòà ï
îäà÷è ";
print "</td>";
print "<td>";
print "<b> Îòâåò
ñòâåííû
é ";
print "</td>";
print "<td>";
print "<b> Ðåçóë
üòàò ";
print "</td>";
print "</tr>";
$a=0;
while ($rez = pg_fetch_array($db)){
print "<tr align=center>";
{
$a++;
print "<td>" .$a. "<br></td>";
print "<td>".$rez['date']."<br></td>";
print "<td>".$rez['clients']."<br></td>";
print "<td>".$rez['tipe']."<br></td>";
print "<td>".$rez['links']."<br></td>";
print "<td>".$rez['op']."<br></td>";
print "<td>".$rez['datep']."<br></td>";
print "<td>".$rez['otv']."<br></td>";
print "<td>".$rez['rez']."<br></td>";
}
print "</tr>";
}
print "</table>";
?>
|
Должна происходить фильтрация по переменным: $year $months $days, т.е. если я хочу получить все записи из базы за определенню дату я выбираю в меню эту дату и мне выводятся все записи за эту дату. Еще хотелось бы что бы можно было увидеть записи как за определенный день, так и замесяц и за год. Как это реализовать? | |
|
|
|
|
|
|
|
для: karlo
(17.09.2007 в 11:10)
| | В SQL-запросе пишем ...ORDER BY `date` или ...ORDER BY `datep` - в чем проблема то? | |
|
|
|
|
|
|
|
для: mihdan
(17.09.2007 в 13:34)
| | Мне нужна не сортировка а фильтрация, что б на экране оставались только нужные мне записи, отобранные по определенному критерию, в данном случае по дате, например все записи за август 2007 года. | |
|
|
|
|
|
|
|
для: karlo
(17.09.2007 в 13:39)
| |
SELECT * FROM konkurs WHERE `date` >= '" . $year . "-" . $months . "-" . $days."' AND `date` <= '" . $year1 . "-" . $months1 . "-" . $days1."' ORDER BY date ASC
|
| |
|
|
|
|
|
|
|
для: karlo
(17.09.2007 в 11:10)
| | Во первых у вас ошибка синтаксиса
SELECT * FROM konkurs ORDER BY date ASC WHERE date = '" . $year . "-" . $months . "-" . $days
| Условие сортировки должно идти после условия WHERE, также date зарезирвированное слово в Mysql и имя этого поля надо брать в обратные кавычки
SELECT * FROM konkurs WHERE `date` = '" . $year . "-" . $months . "-" . $days."' ORDER BY date ASC
|
| |
|
|
|
|
|
|
|
для: Faraon
(17.09.2007 в 15:24)
| | Спасибо! =) Но че то не выходит, давайте разберемся?
Начнем с момента выбора критерия фильтрации:
<?
$db = pg_query($con, "SELECT * FROM konkurs WHERE `date` = '" . $year . "-" . $months . "-" . $days."' ORDER BY date ASC "); /// запрос к бд
$submit_batton_value="Îê"; //надпись на кнопке
$days="";$months="";$years=""; //обьявление переменных
$form_values=array();
$selected=" SELECTED";
////////////////////////////////////////////////////////////создание чисел для меню (31 день, 12 месяцев, год увеличивается с каждим годом на 1 )
for($i=0;$i<60;$i++){
if($i>0 && $i<=31){
$opt_days.='<option value="'.$i.'"'.(($days==$i)?$selected:"").'>'.(($i<10)?"0".$i:$i).'</option>';
if($i<=12){
$opt_months.='<option value="'.$i.'"'.(($months==$i)?$selected:"").'>'.(($i<10)?"0".$i:$i).'</option>';
}
}
}
for($i=date("Y");$i<=date("Y")+1;$i++){
$opt_year.='<option value="'.$i.'"'.(($year==$i)?$selected:"").'>'.$i.'</option>';
}
echo <<<END
///////////////////////////////////////////////////////////рисуем табличку и формы выбора
<td colspan="3" align="center"><br />
<form action="konkurs_sort2.php" method="post"> /////////////// отправка данных форм методом POST
<table align="center" cellspacing="0" cellpadding="0" border="0">
<caption><b> Ôîðìà. </b></caption>
<td>
<table align="center" cellspacing="0" cellpadding="0" border="1">
<tr>
<td><td name="date"> ////формы выбора даты
<select name="days">$opt_days</select>.
<select name="months">$opt_months</select>.
<select name="year">$opt_year</select></td>
<td align="right"><input type="Submit" name=boot value="$submit_batton_value"></td> /// кнопка "отправить"
</tr>
</table>
</td>
</table>
</form>
END;
?>
|
Делее табличка в которой выводятся данные из базы
<?
echo '<table cellpadding="3" cellspacing="0" class="events">';
echo '<tr align=center><td class="events" align="center" bgcolor="#EEEEEE"><p class="news_header">¹ Ï/Ï</td>';
echo '<td class="events" align="center" bgcolor="#EEEEEE"><p class="news_header">Äàòà âíåñåíèÿ</td>';
echo '<td class="events" align="center" bgcolor="#EEEEEE"><p class="news_header">Êëèåíò</td>';
echo '<td class="events" align="center" bgcolor="#EEEEEE"><p class="news_header">Òèï êîíêóðñà</td>';
echo '<td class="events" align="center" bgcolor="#EEEEEE"><p class="news_header">Ññûëêà</td>';
echo '<td class="events" align="center" bgcolor="#EEEEEE"><p class="news_header">Îïèñàíèå</td>';
echo '<td class="events" align="center" bgcolor="#EEEEEE"><p class="news_header">Äàòà ïîäà÷è</td>';
echo '<td class="events" align="center" bgcolor="#EEEEEE"><p class="news_header">Îòâåòñòâåííûé</td>';
echo '<td class="events" align="center" bgcolor="#EEEEEE"><p class="news_header">Ðåçóëüòàò</td></tr>';
////////нижняя часть таблици взята в цикл для того чтобы отобразить все строки базы и увеличить значение номера столбца на 1
$a=0;
while ($rez = pg_fetch_array($db)){
echo "<tr align=center>";
{
$a++;
echo '<td class="events"><p class="text">' .$a. '<br></td>';
echo '<td class="events"><p class="text">' .$rez['date'].'<br></td>';
echo '<td class="events"><p class="text">' .$rez['clients'].'<br></td>';
echo '<td class="events"><p class="text">' .$rez['tipe'].'<br></td>';
echo '<td class="events"><p class="text">' .$rez['links'].'<br></td>';
echo '<td class="events"><p class="text">' .$rez['op'].'<br></td>';
echo '<td class="events"><p class="text">' .$rez['datep'].'<br></td>';
echo '<td class="events"><p class="text">' .$rez['otv'].'<br></td>';
echo '<td class="events"><p class="text">' .$rez['rez'].'<br></td>';
}
echo '</tr>';
}
echo '</table>';
?>
|
что я делаю не так, табличка перестала отображать вообще какие либо данные. | |
|
|
|
|
|
|
|
для: karlo
(17.09.2007 в 16:17)
| | Сразу спрошу тип поля date какой?
И зачем в данном случае нужна сортировка? | |
|
|
|
|
|
|
|
для: Faraon
(17.09.2007 в 16:22)
| | Тип поля date date;
Ну как зачем, чтоб удобней было воспринимать информацию.
и поля datep, тоже date. | |
|
|
|
|
|
|
|
для: karlo
(17.09.2007 в 16:52)
| | А почему у вас запрос к БД стоит раньше чем объявляются переменные?
И проверьте после отправки
print $year .$month .$days;
отображаются или нет | |
|
|
|
|
|
|
|
для: Faraon
(17.09.2007 в 17:16)
| | Запрос стоит ниже, просто я поставил его наверх для наглядности. | |
|
|
|
|
|
|
|
для: karlo
(17.09.2007 в 17:21)
| | Круто!
Ничего здесь не забыли?
<select name="days">$opt_days</select>.
<select name="months">$opt_months</select>.
<select name="year">$opt_year</select></td>
Как же у вас здесь переменные отобразятся то ?
Я думаю надо наверное <? print $opt_days; ?> и тд | |
|
|
|
|
|
|
|
для: Faraon
(17.09.2007 в 17:34)
| | Че то я не понял! В выпадающих менюшках все отлично отображается, отлично присваивается переменным и записывается в базу, это делает похожий скрипт! Роль этого, только вывести информацию из базы и при необходимости отфильтровать по дате. | |
|
|
|