Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Фильтрация на PHP
 
 автор: karlo   (17.09.2007 в 11:10)   письмо автору
 
 

Помогите разобраться с фильтрацией данных. Скрипт должен выводить информацию взятую с базы данных. В базе по мимо прочего есть два столбца date и datep, дата и дата подачи. Необходимо реализовать механизм фильтрации по этим двум типам даты. Таким образом что бы отсортировать или по дате или по дате подачи.
Вот мой скрипт:

<? 
$submit_batton_value2
="&#199;&#224;&#241;&#235;&#224;&#242;&#252;";

$days="";$months="";$years="";

$form_values=array();

$selected=" SELECTED";

for(
$i=0;$i<60;$i++){
    if(
$i>&& $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> &#212;&#238;&#240;&#236;&#224; 
&#241;&#238;&#240;&#242;&#232;&#240;&#238;
&#226;&#234;&#232; &#228;&#224;&#237;&#237;
&#251;&#245; &#238; &#239;&#240;&#238;
&#226;&#229;&#228;&#229;&#237;&#237;&#251;
&#245; &#234;&#238;&#237;&#234;&#243;&#240;
&#241;&#237;&#251;&#245; &#236;&#229;&#240;
&#238;&#239;&#240;&#232;&#255;&#242;&#232;
&#255;&#245;. </b></caption>
    <td>
<table align="center" cellspacing="2" cellpadding="2" border="0" bordercolor="#606060">
<tr>
    <td colspan="5" align="center"><b>&#209;&#238;&#240;&#242;
&#232;&#240;&#238;&#226;&#234;&#224; &#239;
&#238; &#228;&#224;&#242;&#229; &#226;
&#237;&#229;&#241;&#229;&#237;&#232;&#255;
</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>&#209;&#238;&#240;&#242;
&#232;&#240;&#238;&#226;&#234;&#224; &#239;
&#238; &#228;&#224;&#242;&#229; &#239;
&#238;&#228;&#224;&#247;&#232;</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> &#185; &#239;\&#239;  ";
print 
"</td>";
print 
"<td>";
print 
"<b> &#196;&#224;&#242;&#224; &#226;
&#237;&#229;&#241;&#229;&#237;&#232;&#255; 
"
;
print 
"</td>";
print 
"<td>";
print 
"<b> &#202;&#235;&#232;&#229;&#237;&#242; ";
print 
"</td>";
print 
"<td>";
print 
"<b> &#210;&#232;&#239; &#234;&#238;
&#237;&#234;&#243;&#240;&#241;&#224; "
;
print 
"</td>";
print 
"<td>";
print 
"<b> &#209;&#241;&#251;&#235;&#234;
&#224; "
;
print 
"</td>";
print 
"<td>";
print 
"<b> &#206;&#239;&#232;&#241;&#224;
&#237;&#232;&#229; "
;
print 
"</td>";
print 
"<td>";
print 
"<b> &#196;&#224;&#242;&#224; &#239;
&#238;&#228;&#224;&#247;&#232; "
;
print 
"</td>";
print 
"<td>";
print 
"<b> &#206;&#242;&#226;&#229;&#242;
&#241;&#242;&#226;&#229;&#237;&#237;&#251;
&#233; "
;
print 
"</td>";
print 
"<td>";
print 
"<b> &#208;&#229;&#231;&#243;&#235;
&#252;&#242;&#224;&#242; "
;
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, т.е. если я хочу получить все записи из базы за определенню дату я выбираю в меню эту дату и мне выводятся все записи за эту дату. Еще хотелось бы что бы можно было увидеть записи как за определенный день, так и замесяц и за год. Как это реализовать?

   
 
 автор: mihdan   (17.09.2007 в 13:34)   письмо автору
 
   для: karlo   (17.09.2007 в 11:10)
 

В SQL-запросе пишем ...ORDER BY `date` или ...ORDER BY `datep` - в чем проблема то?

   
 
 автор: karlo   (17.09.2007 в 13:39)   письмо автору
 
   для: mihdan   (17.09.2007 в 13:34)
 

Мне нужна не сортировка а фильтрация, что б на экране оставались только нужные мне записи, отобранные по определенному критерию, в данном случае по дате, например все записи за август 2007 года.

   
 
 автор: Faraon   (17.09.2007 в 15:32)   письмо автору
 
   для: karlo   (17.09.2007 в 13:39)
 


SELECT * FROM konkurs WHERE `date` >= '" . $year . "-" . $months . "-" . $days."' AND `date` <= '" . $year1 . "-" . $months1 . "-" . $days1."' ORDER BY date ASC

   
 
 автор: Faraon   (17.09.2007 в 15:24)   письмо автору
 
   для: 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 

   
 
 автор: karlo   (17.09.2007 в 16:17)   письмо автору
 
   для: 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="&#206;&#234;";                //надпись на кнопке

$days="";$months="";$years="";       //обьявление переменных

$form_values=array();

$selected=" SELECTED";

////////////////////////////////////////////////////////////создание чисел для меню (31 день, 12 месяцев, год увеличивается с каждим годом на 1 )

for($i=0;$i<60;$i++){
    if(
$i>&& $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> &#212;&#238;&#240;&#236;&#224;. </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">&#185; &#207;/&#207;</td>';
echo 
'<td class="events" align="center" bgcolor="#EEEEEE"><p class="news_header">&#196;&#224;&#242;&#224; &#226;&#237;&#229;&#241;&#229;&#237;&#232;&#255;</td>';
echo 
'<td class="events" align="center" bgcolor="#EEEEEE"><p class="news_header">&#202;&#235;&#232;&#229;&#237;&#242;</td>';
echo 
'<td class="events" align="center" bgcolor="#EEEEEE"><p class="news_header">&#210;&#232;&#239; &#234;&#238;&#237;&#234;&#243;&#240;&#241;&#224;</td>';
echo 
'<td class="events" align="center" bgcolor="#EEEEEE"><p class="news_header">&#209;&#241;&#251;&#235;&#234;&#224;</td>';
echo 
'<td class="events" align="center" bgcolor="#EEEEEE"><p class="news_header">&#206;&#239;&#232;&#241;&#224;&#237;&#232;&#229;</td>';
echo 
'<td class="events" align="center" bgcolor="#EEEEEE"><p class="news_header">&#196;&#224;&#242;&#224; &#239;&#238;&#228;&#224;&#247;&#232;</td>';
echo 
'<td class="events" align="center" bgcolor="#EEEEEE"><p class="news_header">&#206;&#242;&#226;&#229;&#242;&#241;&#242;&#226;&#229;&#237;&#237;&#251;&#233;</td>';
echo 
'<td class="events" align="center" bgcolor="#EEEEEE"><p class="news_header">&#208;&#229;&#231;&#243;&#235;&#252;&#242;&#224;&#242;</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>';
?>


что я делаю не так, табличка перестала отображать вообще какие либо данные.

   
 
 автор: Faraon   (17.09.2007 в 16:22)   письмо автору
 
   для: karlo   (17.09.2007 в 16:17)
 

Сразу спрошу тип поля date какой?
И зачем в данном случае нужна сортировка?

   
 
 автор: karlo   (17.09.2007 в 16:52)   письмо автору
 
   для: Faraon   (17.09.2007 в 16:22)
 

Тип поля date date;
Ну как зачем, чтоб удобней было воспринимать информацию.
и поля datep, тоже date.

   
 
 автор: Faraon   (17.09.2007 в 17:16)   письмо автору
 
   для: karlo   (17.09.2007 в 16:52)
 

А почему у вас запрос к БД стоит раньше чем объявляются переменные?
И проверьте после отправки
print $year .$month .$days;
отображаются или нет

   
 
 автор: karlo   (17.09.2007 в 17:21)   письмо автору
 
   для: Faraon   (17.09.2007 в 17:16)
 

Запрос стоит ниже, просто я поставил его наверх для наглядности.

   
 
 автор: Faraon   (17.09.2007 в 17:34)   письмо автору
 
   для: 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; ?> и тд

   
 
 автор: karlo   (17.09.2007 в 17:49)   письмо автору
 
   для: Faraon   (17.09.2007 в 17:34)
 

Че то я не понял! В выпадающих менюшках все отлично отображается, отлично присваивается переменным и записывается в базу, это делает похожий скрипт! Роль этого, только вывести информацию из базы и при необходимости отфильтровать по дате.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования