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

Форум PHP

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

 

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

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

тема: Как мне прикрутить календарные месяцы?
 
 автор: TrEK   (05.02.2011 в 16:38)   письмо автору
 
 

Имеется страничка, на которой выводтися учет фильмов за месяц. Но одна проблемка, у меня работает так - вычисляется системная дата, - месяц.
И соответственно по этому месяцу формирует запрос в БД, но я бы хотел чтоб на той же страничке был либо список месяцев текущего года...(и не только текущего), либо стрелочки, нажатие на которые позволило бы дать запрос в БД за прошлые месяца и годы.

Я никак не могу найти подходящего варианта? Возможно здесь кто-то подскажет? Заранее спасибо.

Вот мой код:
<?php
$q
[]="";
$q[]="Січня";
$q[]="Лютого";
$q[]="Березеня";
$q[]="Квітня";
$q[]="Травня";
$q[]="Червня";
$q[]="Липня";
$q[]="Серпня";
$q[]="Вересня";
$q[]="Жовтня";
$q[]="Листопада";
$q[]="Грудня";
//-- DEN TUZHNYA
$e[0]="Неділя";
$e[1]="Понеділок";
$e[2]="Вівторок";
$e[3]="Середа";
$e[4]="Четвер";
$e[5]="П'ятниця";
$e[6]="Субота";
// ---- 
$m=date('m');
if (
$m=="01"$m=1;
if (
$m=="02"$m=2;
if (
$m=="03"$m=3;
if (
$m=="04"$m=4;
if (
$m=="05"$m=5;
if (
$m=="06"$m=6;
if (
$m=="07"$m=7;
if (
$m=="08"$m=8;
if (
$m=="09"$m=9;
// ---- 
$we=date('w');
// ---- 
$chislo=date('d');
// 
$den_nedeli $e[$we];
// 
$mesyac $q[$m];

$curr_month = `date +%B`;
$curr_year = `date +%Y`;
echo 
'<table border=0 width=700 height=20>
<tr>
<td>
<center><font size=4><b>  Звітність по фільмам в інтервал "один місяць".</b></font></center>
<hr>
<table width=690 border=0><tr><td align=left>Сьогодні : '
.$chislo.' <b>'.$mesyac.'</b>, '.$den_nedeli.'.</td><td align=right>'.$curr_month.' - '.$curr_year.' </td></tr></table>
<hr>
</td>
</tr>
</table>'
;
?>

<center>
<?php 
        $hostname 
"хост"
        
$dbusername "юзер"
        
$dbpassword "пасс";  
        
$dbname "дб"
        
$dbcon = @mysql_connect($hostname,$dbusername,$dbpassword);
        
mysql_query('set names cp1251'); # TrEK dobavuv
        
mysql_query('SET character_set_database = cp1251'); #TrEK dobavuv
        
if (!$dbcon) exit("<p>Error! couldn't connect to Server MySQL!</p>");
        if (!@
mysql_select_db($dbname,$dbcon)) exit("<p>MySQL DB is not available now!</p>");
echo 
'
<table bgcolor=lightgrey border=1 cellpadding=1 width=225 height=30><tr><td width=110>
<form action="zvit_films.php" method="post">
<input type="checkbox" name="tt"'
.(isset($_POST['tt']) ? 'checked="checked"' '').' /><font size=1 text-align=center>Суто наші <wbr> фільми</font></left>
<td><center><input type="submit" value="Звіт" width=30></center></td>
</form>
</td></tr></table>'
;

function 
checkbox_verify($_name)
{
$curr_month=`date +%B`;
$curr_y=date('Y');
$curr_m=date('m');
$a=`date`;
    if (isset(
$_REQUEST[$_name]))
    { if (
$_REQUEST[$_name]=='on'
   { 
$sql="SELECT id, title, title_en, dateadd, downloads, prev, count, relizer FROM film WHERE relizer='tt' AND dateadd >= '2011-$curr_m-01' AND dateadd <= '2011-$curr_m-31' ORDER BY dateadd";
    
$result mysql_query($sql);
    
$num_rows mysql_num_rows($result);
    echo 
"Суто <b>НАШІ</b> фільми, добавлені за вибраний період! <i>$curr_month $curr_y</i> - <font color=red><b>$num_rows</b></font> фільмів.<br><hr>";
    echo 
'<table width=700 height="20" align="left" border="1" cellpadding="1" cellspacing="0" bgcolor="lightgrey">
    <tr>
    <td width=80 align=center height=50><u>Дата</u></td>
    <td width=40 align=center bgcolor=silver><u>id</u></td>
    <td width=30 align=center alt="DOWNLOAD"><u>Ска<wbr>ча<wbr>но</u></td>
    <td width=30 align=center alt="Pereglyanyto" bgcolor=silver><u>Пе<wbr>ре<wbr>гля<wbr>ну<wbr>то</u></td>
    <td width=30 align=center><u>Ві<wbr>зи<wbr>ти</u></td>
    <td width=30 align=center bgcolor=silver><u>Хто заки<wbr>нув</u></td>
    <td width=200 align=center><u>Назва_EN</u></td>
    <td align=center><u>Назва</u></td>
    </tr>
    </table>'
;
    while(list(
$id$title$title_en$dateadd$downloads$prev$count$relizer) = mysql_fetch_array($result))
    {
        if (
$relizer "tt") {$relizer substr_replace("tt","МИ",$relizer);} else {$relizer="<b>НЕ<wbr>МИ</b>";}
    echo 
'<table width=700 height="20" align="left" border="1" cellpadding="1" cellspacing="0" bgcolor="lightgrey">
    <tr>'
;
    echo 
'<td width=80>'.$dateadd.'</td>
    <td width=40 align=center bgcolor=silver>'
.$id.'</td>
    <td width=30 align=center>'
.$downloads.'</td>
    <td width=30 align=center bgcolor=silver>'
.$prev.'</td>
    <td width=30 align=center>'
.$count.'</td>
    <td width=30 align=center bgcolor=silver>'
.$relizer.'</td>
    <td width=200><i>'
.$title_en.'</i></td>
    <td><b>'
.$title.'</b></td>
    </tr></table>'
;
    }
    
$ostalos=100$num_rows;
    
$perelimit=$num_rows 100;
    if(
$num_rows >= 100)  {echo "Достатньо! Фільмів і так вже $num_rows. На $perelimit більше від плану. :) ";} else { echo "Закинули тільки <b>$num_rows</b> фільмів. Залишилося добавити ще <b>$ostalos</b>!   <font color=brown>ВпийодЪ таваищи, впийодъ! :)</font>";}
    }
}
else 
    {
$sql="SELECT id, title, title_en, dateadd, downloads, prev, count, relizer FROM film WHERE dateadd >= '2011-$curr_m-01' AND dateadd <= '2011-$curr_m-31' ORDER BY dateadd";
    
$result mysql_query($sql);
    
$num_rows mysql_num_rows($result);
    echo 
"<b>ВСІ</b> фільми, що були добавлені на сайт за вибраний період!  <i>$curr_month $curr_y</i> - <font color=red><b>$num_rows</b></font> фільмів.<br><hr>";
        echo 
'<table width=700 height="20" align="left" border="1" cellpadding="1" cellspacing="0" bgcolor="lightgrey">
        <tr>
    <td width=80 align=center height=50><u>Дата</u></td>
    <td width=40 align=center bgcolor=silver><u>id</u></td>
    <td width=30 align=center alt="DOWNLOAD"><u>Ска<wbr>ча<wbr>но</u></td>
    <td width=30 align=center alt="Pereglyanyto" bgcolor=silver><u>Пе<wbr>ре<wbr>гля<wbr>ну<wbr>то</u></td>
    <td width=30 align=center><u>Ві<wbr>зи<wbr>ти</u></td>
    <td width=30 align=center bgcolor=silver><u>Хто заки<wbr>нув</u></td>
    <td width=200 align=center><u>Назва_EN</u></td>
    <td align=center><u>Назва</u></td>
        </tr>
        </table>'
;    
    while(list(
$id$title$title_en$dateadd$downloads$prev$count$relizer) = mysql_fetch_array($result))
    {
        if (
$relizer != "tt") {$relizer substr_replace("","<font color=darkblue size=1 style=background-color:lightsilver;>НЕ МИ</font>",$relizer);} else {$relizer "<font color=brown>МИ</font>";}
    echo 
'<table width=700 height="20" align="left" border="1" cellpadding="1" cellspacing="0" bgcolor="lightgray">
    <tr>'
;
    echo 
'<td width=80>'.$dateadd.'</td>
    <td width=40 align=center bgcolor=silver>'
.$id.'</td>
    <td width=30 align=center>'
.$downloads.'</td>
    <td width=30 align=center bgcolor=silver>'
.$prev.'</td>
    <td width=30 align=center>'
.$count.'</td>
    <td width=30 align=center bgcolor=silver>'
.$relizer.'</td>
    <td width=200><i>'
.$title_en.'</i></td>
    <td><b>'
.$title.'</b></td>
    </tr></table>'
;
    }
        
$ostalos=100$num_rows;
        
$perelimit=$num_rows 100;
        if(
$num_rows >= 100) {echo "Загальна кількість добавлених за вибраний період фільмів : <b>$num_rows</b>.  Буде що дивитись :)";} else { echo "За вибраний період на сайт добавили тільки <b>$num_rows</b> фільмів. Залишилось ще <b>$ostalos</b>! ";}
    } 
}      
echo 
'<Hr size="2">';
echo 
checkbox_verify('tt');
echo 
'<Hr size="2"><br>';
mysql_close($dbcon);
?>    


И я так предпологаю что сам код можно было бы упростить... так как при выделенном чек-боксе у меня дублируется выполнение задачи... и запрос , и вывод.
А в условие можно было бы загнать только запрос $sql=, а после выполнения условия уже один вывод для двух вариантов... так как он и в одном и другом случае идентичен.
 echo '<table width=700

  Ответить  
 
 автор: cheops   (05.02.2011 в 16:45)   письмо автору
 
   для: TrEK   (05.02.2011 в 16:38)
 

Как-то пока не очень понятно, в чем проблема и в чем затруднение...

Фильмы хранятся в таблице film? И нужно вывести список месяцев, подсветив те из них для которых есть записи с датой в этом месяце, причем ссылка должна вести на страницу со списком за этот месяц?

  Ответить  
 
 автор: TrEK   (05.02.2011 в 17:11)   письмо автору
 
   для: cheops   (05.02.2011 в 16:45)
 

Да , в таблице film.
Смотрите, если я захожу на страничку, то мне сразу открывается список фильмов добавленных в текуцщем месяце. Соответственно я вижу сколько еще осталось для выполнения нормы.
Для удобства на страничке я разместил еще ЧЕК-БОКС: если он выбран - отображает только добавленые мной фильмы за текущий месяц (если мои фильмы в поле relizer ставлю tt), если не выбран и нажать кнопку - тогда выведется список всех добавленых фильмов за текущий месяц. (и тех там где в поле relizer вписано tt, и тех, там где в данном поле пусто).

Так вот, я ломаю голову над тем, что можно было увидеть список добавленных фильмов не только за текущий месяц, но и за предыдущие месяцы. (или кнопочкой которая от $curr_m=date('m'); отнимает еденицу... либо списком всех месяцев текущего года... ну и чтоб список 5 последних лет был)

dateadd - поле даты добавления фильма

Пока что у меня реализируется так запрос:
{$sql="SELECT id, title, title_en, dateadd, downloads, prev, count, relizer FROM film WHERE dateadd >= '2011-$curr_m-01' AND dateadd <= '2011-$curr_m-31' ORDER BY dateadd"; 


где $curr_m=date('m');

Точное колличество дней в месяце можно упустить и взять для всех одинаково - 31, так как если даже в феврале будет 28 дней, то запрос
 WHERE dateadd >= '2011-$curr_m-01' AND dateadd <= '2011-$curr_m-31' 

и так даст результат фильмов, добавленных с 2011-02-01 по 2011-02-28.

  Ответить  
 
 автор: cheops   (05.02.2011 в 17:21)   письмо автору
 
   для: TrEK   (05.02.2011 в 17:11)
 

Можно проще поступить, заменить условие
WHERE dateadd >= '2011-$curr_m-01' AND dateadd <= '2011-$curr_m-31'

на
WHERE dateadd LIKE '2011-$curr_m%'

Тогда вам не нужно будет заботиться о количестве дней в месяце. Просто передавайте по ссылке через GET-параметр номер месяца, проверяйте является ли этот GET-параметр числом и подставляйте в SQL-запрос.

  Ответить  
 
 автор: TrEK   (05.02.2011 в 17:51)   письмо автору
 
   для: cheops   (05.02.2011 в 17:21)
 

WHERE dateadd LIKE '2011-$curr_m%'

А и действильно :) Как я раньше до этого не додумался :)


>Просто передавайте по ссылке через GET-параметр номер месяца, проверяйте является ли этот GET-параметр числом и подставляйте в SQL-запрос.

Ну я бы хотел чтоб не вбивать номе рмесяца а был выпадающий список со всеми месяцами...
Попробую поискать что-то подобное.

  Ответить  
 
 автор: TrEK   (05.02.2011 в 18:17)   письмо автору
 
   для: TrEK   (05.02.2011 в 17:51)
 

<form action="">
   Месяц:
<select name="month_pr" size="1" id="month_pr">
                        <option value="" selected>- -</option>
                        <option value="Январь">Январь</option>
                        <option value="Февраль">Февраль</option>
                        <option value="Март">Март</option>
                        <option value="Апрель">Апрель</option>
                        <option value="Май">Май</option>
                        <option value="Июнь">Июнь</option>
                        <option value="Июль">Июль</option>
                        <option value="Август">Август</option>
                        <option value="Сентябрь">Сентябрь</option>
                        <option value="Октябрь">Октябрь</option>
                        <option value="Ноябрь">Ноябрь</option>
                        <option value="Декабрь">Декабрь</option>
   Год:
<select name="god_pr" size="1" id="god_pr">
                        <option value="" selected>- -</option>
                        <option value="2009">2009</option>
                        <option value="2010">2010</option>
                        <option value="2011">2011</option>
 </select><br>


Как-то так... ?

  Ответить  
 
 автор: cheops   (05.02.2011 в 18:31)   письмо автору
 
   для: TrEK   (05.02.2011 в 18:17)
 

Хм... может в value сразу номер месяца вставить? Не нужно будет лишнее преобразование делать, только проверить является ли $_GET['month_pr'] числом?

  Ответить  
 
 автор: TrEK   (05.02.2011 в 18:54)   письмо автору
 
   для: cheops   (05.02.2011 в 18:31)
 

<table bgcolor=lightgrey border=1 cellpadding=1 width=300 height=30>
<tr>
<td width=250>
<form action="films.php" method="post">
<center>
Month:
<select name="month" size="1" id="month">
                        <option value="" selected>- -</option>
                        <option value="01">Январь</option>
                        <option value="02">Февраль</option>
                        <option value="03">Март</option>
                        <option value="04">Апрель</option>
                        <option value="05">Май</option>
                        <option value="06">Июнь</option>
                        <option value="07">Июль</option>
                        <option value="08">Август</option>
                        <option value="09">Сентябрь</option>
                        <option value="10">Октябрь</option>
                        <option value="11">Ноябрь</option>
                        <option value="12">Декабрь</option> 
</select>
Year:
<select name="year" size="1" id="year">
                        <option value="" selected></option>
                        <option value="2008">2008</option>
                        <option value="2009">2009</option>
                        <option value="2010">2010</option>
                        <option value="2011">2011</option>
</select><br>
</center>
<input type="checkbox" name="tt"'.(isset($_POST['tt']) ? 'checked="checked"' : '').' />
<font size=2 text-align=center>Искл. МОИ фильмы</font>
<td>
<center>
<input type="submit" value="ОТЧЕТ" width=30>
</center>
</td>
</form>
</td>
</tr>
</table>


Ну вот накатал такую телегу, а дальше как... .? как передать выбраный месяц и год в запрос БД?

  Ответить  
 
 автор: cheops   (05.02.2011 в 19:06)   письмо автору
 
   для: TrEK   (05.02.2011 в 18:54)
 

Эта форма где расположена на странице films.php или films.php - это независимая страница?

PS В любом случае, чтобы было проще ориентироваться, выведите на время разработки скрипта дамп массива $_POST, где будут находиться ваши параметры.
<?php
  
echo "<pre>";
  
print_r($_POST);
  echo 
"<pre>";
?>

Так вы сможете быстрее ориентироваться, где в каких POST-параметрах находятся нужные вам значения.

  Ответить  
 
 автор: sim5   (05.02.2011 в 19:21)   письмо автору
 
   для: TrEK   (05.02.2011 в 18:54)
 

<select name="year" size="1" id="year">
<option value="" selected></option>

Не надо так, пишите уж тогда предожение о выборе:

<select name="year" size="1" id="year">
<option value="" selected>Выберите год</option>

А чтобы этот опшен не путался перед глазами после выбора, удалить можно его:

<select name="year" size="1" id="year" onchange="if(!this.options[0].value) this.options.remove(0)">
<option value="" selected>Выберите год</option>

  Ответить  
 
 автор: TrEK   (05.02.2011 в 19:30)   письмо автору
 
   для: sim5   (05.02.2011 в 19:21)
 

Ну я вначале написал "Выбире ГОД" , "Выбирете месяц", но потом подумал что зарпос тоже можна будет сформировать с этими словами.. потом и подумал что лучше пусть запрос будет с пустым полем. Но теперь понял суть своей ошибки и заблуждения

А еще лучше чтоб в выпадающих списках при обновлении странички появлался текущий месяц и год.

  Ответить  
 
 автор: sim5   (05.02.2011 в 19:32)   письмо автору
 
   для: TrEK   (05.02.2011 в 19:30)
 

Можно и так, но не пустой.

  Ответить  
 
 автор: TrEK   (05.02.2011 в 19:39)   письмо автору
 
   для: sim5   (05.02.2011 в 19:32)
 

Добавил тот код, который должен при открытии списка удалять нулевую опцию... но оно не удаляет... открывается список годов, и там самый первый "Выберете Год" :(

а код:
<?php
  
echo "<pre>";
  
print_r($_POST);
  echo 
"<pre>";
?> 


выводит мне на страничку:
Array
(
[month] =>
[year] =>
)

  Ответить  
 
 автор: TrEK   (05.02.2011 в 19:44)   письмо автору
 
   для: TrEK   (05.02.2011 в 19:39)
 

Ой, теперь вижу формирование запроса POST:


Array ( [month] => 02 [year] => 2009 [tt] => on )

Убрал echo "<pre>";

<?php
#echo "<pre>";
print_r($_POST);
#echo "<pre>";
?>


Но как его передать дальше ?? В тело кода? Чтоб выбраные опции подставлялись в SQL-запрос?

  Ответить  
 
 автор: sim5   (05.02.2011 в 19:57)   письмо автору
 
   для: TrEK   (05.02.2011 в 19:44)
 

intval($_POST['month']) вместо $cur_m (ну или ей присвоить). Соттветственно и год.

А под каким браузером не работает удаление нулевого опшена?

  Ответить  
 
 автор: TrEK   (05.02.2011 в 20:08)   письмо автору
 
   для: sim5   (05.02.2011 в 19:57)
 

Удаление не работает в : МФ, ИЕ, Хром, Опера.
Но мне уже не надо , я так подумал, удалять нулдевую опцию.. а подставить туда текущие месяц-год.

  Ответить  
 
 автор: sim5   (05.02.2011 в 20:46)   письмо автору
 
   для: TrEK   (05.02.2011 в 20:08)
 

Ну уж неправда, это будет работать и в IE, и в Опера, и т.д.. Вот если бы удаление было так:
options[0].remove(), то это бы работало только в IE.

PS. В методе options надо удалить, вот так должно быть:

onchange="if(!this.options[0].value) this.remove(0)"

копированием писал, а не удалил, но в IE, должен был работать и при этом.

  Ответить  
 
 автор: cheops   (05.02.2011 в 19:59)   письмо автору
 
   для: TrEK   (05.02.2011 в 19:44)
 

Преобразуйте их теперь в целое число
<?php
  $_POST
['month'] = intval($_POST['month']);
  
$_POST['year'] = intval($_POST['year']);
?>

и подставляйте в запрос
<?php
$sql
="SELECT id, title, title_en, dateadd, downloads, prev, count, relizer
FROM film
WHERE dateadd LIKE '
{$_POST['year']}-{_POST['month']}%'
ORDER BY dateadd"
;
?>

  Ответить  
 
 автор: Trianon   (05.02.2011 в 20:02)   письмо автору
 
   для: cheops   (05.02.2011 в 19:59)
 

даже если $ перед _POST['month'] поставить - ничего хорошего не выйдет.
Лидирующий ноль из значения уйдет и LIKE вернет ложь.

  Ответить  
 
 автор: sim5   (05.02.2011 в 20:04)   письмо автору
 
   для: Trianon   (05.02.2011 в 20:02)
 

А да, когда JS пример писал, хотел о них напомнить, но... )

  Ответить  
 
 автор: cheops   (05.02.2011 в 20:07)   письмо автору
 
   для: Trianon   (05.02.2011 в 20:02)
 

Да, пожалуй, лучше исправить на
<?php
$sql
="SELECT id, title, title_en, dateadd, downloads, prev, count, relizer 
FROM film 
WHERE dateadd LIKE '"
.sprintf("%04d-%02d"$_POST['year'], $_POST['month'])."%' 
ORDER BY dateadd"

?>

  Ответить  
 
 автор: TrEK   (05.02.2011 в 20:14)   письмо автору
 
   для: cheops   (05.02.2011 в 20:07)
 

КРУТО!!! Вышло, спасибо!
А что означает ".sprintf("%04d-%02d", , дальше я понял что подставляется год и месяц и %

  Ответить  
 
 автор: cheops   (05.02.2011 в 20:20)   письмо автору
 
   для: TrEK   (05.02.2011 в 20:14)
 

Это функция форматирования строки (очень старая - впервые в C использовалась, оттуда её создатели PHP и взяли). Здесь создается строка из двух последующих параметров - целое число из 4-х цифр ("%04d), затем тире, и целое число из двух цифр (%02d). Если любое из чисел содержит меньше чем 4 и 2 цифры - добавляются ведущие нули.

  Ответить  
 
 автор: TrEK   (05.02.2011 в 20:29)   письмо автору
 
   для: cheops   (05.02.2011 в 20:20)
 

Более-менее понял, но так как у меня всегда год будет в 4-значном формате, а месяц в 2-значном :) Значит нули у меня не будут добавляться :)

  Ответить  
 
 автор: cheops   (05.02.2011 в 20:34)   письмо автору
 
   для: TrEK   (05.02.2011 в 20:29)
 

Злоумышленик может поправить значение POST-параметра (поместив туда строку с фрагментом SQL-запроса), для того, чтобы изменить поведение вашего SQL-запроса. Например, если у вас где-нибудь имеется таблица с паролями (или их хэшами), он при помощи SQL-инъекции может попытаться вывести их на страницу вместо других значений. Но это лучше в отдельной тем обсуждать - это уже слишком длинная.

  Ответить  
 
 автор: TrEK   (06.02.2011 в 00:42)   письмо автору
 
   для: cheops   (05.02.2011 в 20:34)
 

хм... тоесть вывести код пшп странички ?

  Ответить  
 
 автор: cheops   (06.02.2011 в 11:26)   письмо автору
 
   для: TrEK   (06.02.2011 в 00:42)
 

Нет, содержимое таблиц (причем произвольных) базы данных, которые, возможно, вы не собирались выводить.

  Ответить  
 
 автор: TrEK   (06.02.2011 в 11:53)   письмо автору
 
   для: cheops   (05.02.2011 в 20:07)
 

Хотел бы узнать еще один момент, если перейти на страничку отчета по ссылке... она делает запрос Array ( ) в БД, так как кнопка ОТЧЕТ еще не была нажата...
B cjjndtncdntyyj dsdjlbn cgbcjr abkmvjd? lfnf lj,fdktybz rjnjhs[ 0000-00-00.
Я бы хотел чтобы в таком случае открывалась статитсика за текущий месяц.

Возможно как-то это поправить? Что-бы уже при нажатии выводилось
$_POST['month'];
и
$_POST['year'];
, а при пустом POST, чтоб запрос был
 curr_m=date('m');
и
curr_y=date('y');
?

Мне так думается, что перед $sql надщо сделать проверку на пустоту POST ?
if ($_POST['year']="0") $_POST['year']=$curr_y;

  Ответить  
 
 автор: cheops   (06.02.2011 в 11:59)   письмо автору
 
   для: TrEK   (06.02.2011 в 11:53)
 

Да, для этого удобно использовать функцию empty()
<?php
  
if(!empty($_POST))
  {
    
$sql "...";
  }
?>

PS Только под новые вопросы, лучше заводить новые темы, а то тема уже разрослась - в ней не очень удобно работать (да и ответов в новой теме всегда больше чем в старой :).

  Ответить  
 
 автор: TrEK   (06.02.2011 в 12:01)   письмо автору
 
   для: cheops   (06.02.2011 в 11:59)
 


<?php
if ($_POST['year']="0"
 {
$_POST['year']=$curr_y;}
else
 {
$_POST['year']=$_POST_['year'];}
?>


Вот что хотел написать перед Вашим ответом :)
Хорошо, по новым вопросам буду открывать новый топ.
Спасибо.

  Ответить  
 
 автор: TrEK   (05.02.2011 в 20:04)   письмо автору
 
   для: TrEK   (05.02.2011 в 19:44)
 

Ах да, и в Селектед Опшин я думаю надо передать текущий месяц и год, вот только подскажите как?



$curr_m = date('m');
$curr_y = date('Y')'
echo '<table bgcolor=lightgrey border=1 cellpadding=1 width=300 height=30>
...
...
<option value="$curr_m" selected>Текущий месяц</option>
..
..
<option value="$curr_y" selected>Текущий год</option>
..
..
</table>';

Это на тот случай, если ничего не выбрать и нажать кнопку ОТЧЕТ, чтоб выводило из БД результаты добьавленных фильмов за текуцщий месяц-год.

Но правда у меня почему-то не подставляет переменную $curr_m, тоесть ее значение а подставляет именно "$curr_m".
Подскажите пожалуйста , как правильно сделать?

  Ответить  
 
 автор: cheops   (05.02.2011 в 20:10)   письмо автору
 
   для: TrEK   (05.02.2011 в 20:04)
 

В одиночных кавычках значения переменных не подставляются, нужно либо использовать двойные кавычки либо писать так
<?php
$curr_m 
date('m');
$curr_y date('Y');
echo 
'<table bgcolor=lightgrey border=1 cellpadding=1 width=300 height=30> 
...
...
<option value="'
.$curr_m.'" selected>Текущий месяц</option> 
..
..
<option value="'
.$curr_y.'" selected>Текущий год</option> 
..
..
</table>'
;
?>

  Ответить  
 
 автор: TrEK   (05.02.2011 в 20:27)   письмо автору
 
   для: cheops   (05.02.2011 в 20:10)
 

Спасибо.

  Ответить  
 
 автор: sim5   (05.02.2011 в 20:14)   письмо автору
 
   для: TrEK   (05.02.2011 в 20:04)
 

Ну как, список формируйте циклом, и в нем проверяйте, если текущий год/месяц равен той дате что помещается в опшен, значит опшену атрибут selected. Проверку делайте с помощью strtotime, если вы дату из базы получаете, то есть полную ее запись (2011-02-12, например). Я даже не вникал откуда вы эти даты берете. )

  Ответить  
 
 автор: TrEK   (05.02.2011 в 20:15)   письмо автору
 
   для: TrEK   (05.02.2011 в 20:04)
 

Ах ну да.. .я ж подставлял пшп-шные переменные в ШТМЛ....

'.$chto_to.'

Спасибо!

  Ответить  
 
 автор: TrEK   (05.02.2011 в 20:27)   письмо автору
 
   для: TrEK   (05.02.2011 в 20:15)
 

Да, сам с самим :)


(это я как бы дал правильный ответ на мой же вопрос, после того как мне подсказали правильное решение) :)

Самое главное , что всё работает, спасибо вам всем за помощь!

  Ответить  
Rambler's Top100
вверх

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