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

Форум PHP

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

 

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

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

тема: Кто внимательный? Я не пойму в чем дело :(
 
 автор: TetRiska   (30.11.2008 в 04:00)   письмо автору
14.2 Кб
 
 

Привожу большой код если что спрашивайте.

$query = mysql_query("SELECT YEAR(`date`) AS `year` FROM `data` GROUP BY `year` DESC",$db);
if(mysql_num_rows($query) > 0)
{
echo " <form id='form'>
    <center>Выберите год: <select name='view_year'>";
while (list($year) = mysql_fetch_row($query))
{
echo " <option>$year</option> "; 
}
echo " </select>&nbsp;<input  class='search_b' value='Применить' name='sub_y' type='submit' /></center>
  </form><br>";


if (isset($_GET['view_year'])) { $view_year = $_GET['view_year'];}
if (isset($_GET['sub_y'])) { $sub_y = $_GET['sub_y'];}

$month_names = array  
(
"01" =>'Январь',  
"02" =>'Февраль',  
"03" =>'Март',  
"04" =>'Апрель',  
"05" =>'Май',  
"06" =>'Июнь',  
"07" =>'Июль',  
"08" =>'Август',   
"09" =>'Сентябрь',  
"10" =>'Октябрь',  
"11" =>'Ноябрь',  
"12" =>'Декабрь'  
);

if(!isset($view_year) or !isset($sub_y))
{
exit();
}
else
{
$result4 = mysql_query("SELECT DISTINCT left(date,7) AS month FROM data ORDER BY month DESC",$db);
for($i=0;$i<mysql_num_rows($result4);++$i)
{
$myrow4 = mysql_fetch_row($result4);

if (substr($myrow4["0"],0,4)==$view_year)
{
    if (substr($myrow4["0"],5,7)=='12')
        {
        $a = '<a href="full_arh?view_year='.$view_year.'&sub_y='.$sub_y.'&month=12""><u>'.$month_names[12].'</u></a>|<br>';
        }

    if (substr($myrow4["0"],5,7)=='11')
        {
        $b = '<a href="full_arh?view_year='.$view_year.'&sub_y='.$sub_y.'&month=11""><u>'.$month_names[11].'</u></a>';
        }
    if (substr($myrow4["0"],5,7)=='10')
        {
        $c = '<a href="full_arh?view_year='.$view_year.'&sub_y='.$sub_y.'&month=10""><u>'.$month_names[10].'</u></a>';
        }
    if (substr($myrow4["0"],5,7)=='09')
        {
        $d = '<a href="full_arh?view_year='.$view_year.'&sub_y='.$sub_y.'&month=09""><u>'.$month_names[09].'</u></a>'; //ругается на эту строку
        //$d = "<a href=''><u>$month_names[09]</u></a>"; //если эту раскоментировать, а предыдущую закоментировать,  то будет все ок...но мне нужна именно что выше
        }
    if (substr($myrow4["0"],5,7)=='08')
        {
        $e = '<a href="full_arh?view_year='.$view_year.'&sub_y='.$sub_y.'&month=08""><u>'.$month_names[08].'</u></a>';
        }
    if (substr($myrow4["0"],5,7)=='07')
        {
        $f = '<a href="full_arh?view_year='.$view_year.'&sub_y='.$sub_y.'&month=07""><u>'.$month_names[07].'</u></a>';
        }
    if (substr($myrow4["0"],5,7)=='06')
        {
        $g = '<a href="full_arh?view_year='.$view_year.'&sub_y='.$sub_y.'&month=06""><u>'.$month_names[06].'</u></a>|<br>';
        }
    if (substr($myrow4["0"],5,7)=='05')
        {
        $k = '<a href="full_arh?view_year='.$view_year.'&sub_y='.$sub_y.'&month=05""><u>'.$month_names[05].'</u></a>';
        }

    if (substr($myrow4["0"],5,7)=='04')
        {
        $l = '<a href="full_arh?view_year='.$view_year.'&sub_y='.$sub_y.'&month=04""><u>'.$month_names[04].'</u></a>';
        }

    if (substr($myrow4["0"],5,7)=='03')
        {
        $m = '<a href="full_arh?view_year='.$view_year.'&sub_y='.$sub_y.'&month=03""><u>'.$month_names[03].'</u></a>';
        }

    if (substr($myrow4["0"],5,7)=='02')
        {
        $p = '<a href="full_arh?view_year='.$view_year.'&sub_y='.$sub_y.'&month=02""><u>'.$month_names[02].'</u></a>';
        }

    if (substr($myrow4["0"],5,7)=='01')
        {
        $o = '<a href="full_arh?view_year='.$view_year.'&sub_y='.$sub_y.'&month=01""><u>'.$month_names[01].'</u></a>';
        }    
}
}
}
    if (!isset($a))
        {
        $a = "$month_names[12]|";
        }

    if (!isset($b))
        {
        $b = "$month_names[11]";
        }
    if (!isset($c))
        {
        $c = "$month_names[10]";
        }
    if (!isset($d))
        {
        $d = "$month_names[09]";
        }
    if (!isset($e))
        {
        $e = "$month_names[08]";
        }
    if (!isset($f))
        {
        $f = "$month_names[07]";
        }
    if (!isset($g))
        {
        $g = "$month_names[06]|<br>";
        }
    if (!isset($k))
        {
        $k = "$month_names[05]";
        }
    if (!isset($l))
        {
        $l = "$month_names[04]";
        }
    if (!isset($m))
        {
        $m = "$month_names[03]";
        }
    if (!isset($p))
        {
        $p = "$month_names[02]";
        }
    if (!isset($o))
        {
        $o = "$month_names[01]";
        }
echo "<center class='pstrnav2'>| $o | $p | $m | $l | $k | $g | $f | $e | $d | $c | $b | $a </center><br><br>";

if (isset($_GET['month'])) { $month = $_GET['month'];} else { exit(); }
$date = "$view_year-$month";
$date_first = $date."-01";
$date_second = $date."-31";

$result7 = mysql_query("SELECT `data`.*, COUNT(`comments`.`post`) AS `counts` FROM `data` LEFT JOIN `comments` ON `comments`.`post` = `data`.`id` WHERE date >= '$date_first' AND date <= '$date_second'  GROUP BY `data`.`id`  ORDER BY id ",$db);
if (!$result7)

{
echo "<p>Запрос на выборку данных из базы не прошел! <br> <strong>Код ошибки:</strong></p>";
exit (mysql_error());
}

if (mysql_num_rows ($result7)>0)

{
$myrow7 = mysql_fetch_array($result7);

do

{
@$r = $myrow7["rating"]/$myrow7["q_vote"];
$r = intval($r);
printf ("<table class='post' cellspacing='0' cellpadding='0'>
            <tr>
                <td class='post' colspan='3'><h2>%s<div style='margin-bottom:12px' align='left'><span class='postinfo'>Дата добавления: %s<br>Фильм добавил: %s</span></h2></div></td>
            </tr>
            <tr>
                <td class='post' colspan='3'><img class='centerimg' src='%s'></td>
            </tr>
             <tr>
                  <td class='post' colspan='3'><div style='margin-bottom:12px' align='justify'><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;%s</p></div></td>
              </tr>
            <tr>
                <td class='post' colspan='3'>
                
                <div style='margin-bottom:12px' align='left'>
                  <span class='postinfo'><strong><u>Статистика по фильму:</u></strong><br>Отданых голосов: <b style='color:#CC9900'>%s</b> - рейтинг: <img style='margin:0px; border:0px; background:#f6f6f6; padding:0px; margin-top:0px;' src='images/%s.GIF'><br>Фильмов в прокате: <b style='color:#CC9900'>%s</b> шт.<br>Фильмов на руках: <b style='color:#CC9900'>%s</b> шт.<br>Просмотров полного описания: <b style='color:#CC9900'>%s</b> раз(а)<br>Комментариев: <b style='color:#CC9900'>%s<b></span>
                 <div style='margin-bottom:12px' align='right'>
                <span class='postinfo'><a href='view_full.php?id=%s'>Перейти к фильму</a></span>
                 </div>
                </div>
                
                </td>
            </tr>

        </table>",$myrow7["title"],$myrow7["date"],$myrow7["author"],$myrow7["mini_img"],$myrow7["description"],$myrow7["q_vote"],$r,$myrow7["v_nal"],$myrow7["n_ruk"],$myrow7["view"],$myrow7["counts"],$myrow7["id"]);

}

while ($myrow7 = mysql_fetch_array($result7));

}

else

{
echo "<span class='info'>За даный период фильмов не существует!</span>";
exit();
}


Ругается Notice: Undefined offset: 0 на
if (substr($myrow4["0"],5,7)=='09')
        {
        $d = '<a href="full_arh?view_year='.$view_year.'&sub_y='.$sub_y.'&month=09""><u>'.$month_names[09].'</u></a>'; 
        }

Почему оно считывает 09 как 0???
Кто внимательный помогите плз. Прилагаю скриншот.

  Ответить  
 
 автор: Николай2357   (30.11.2008 в 04:25)   письмо автору
 
   для: TetRiska   (30.11.2008 в 04:00)
 

ОЁЁЁЁЙ!!!!!! Ну для начала, давайте я помогу научиться правильно оформлять код здесь, на форуме.
1. Перед PHP кодом обязательно открывайте тег, тогда будет подсветка. вот так:
<?
// Вот видите - желтенький

2. Не пишите длинных строк. Даже на большом мониторе появляется горизонтальный скроллинг. Делайте переносы.
3. Если выкладываете весь свой сценарий, то лучше в аттаче, вместе с SQL, чтоб можно было поставить. А в пост только проблемный участок.

Ну а вообще все на столько не правильно, что гараздо проще написать новый, чем править этот.
Опишите полностью задачу, только четко и подробно, по пунктам. Я попробую Вам помочь, как видно это давно Вас мучает.

  Ответить  
 
 автор: TetRiska   (30.11.2008 в 05:19)   письмо автору
10.7 Кб
 
   для: Николай2357   (30.11.2008 в 04:25)
 

Очень давно мучает:) Задача решена на 99.9%, но есть один нотис.
<?
if (substr($myrow4["0"],5,7)=='09')
        {
        
$d '<a href="full_arh?view_year='.$view_year.'&sub_y='.$sub_y.'&month=09""><u>'.$month_names[09].'</u></a>';
        }
?>


В $myrow4["0"] указана дата 2008-09, функцией substr мы выбераем только месяц 09. Но почему то пишет 0, и сравнение далее не проходит . С 12-го по 10-й месяца все норм. Ниже 10-го такой прикол =\

Задача моя была в следующем:
1. Сделать выпадающий список в котором будут только года - сделал
2. При выборе года и нажатии на кнопку выведется весь список месяцев - сделал
3. Те месяца которые принадлежат этому году будут подчеркнуты - сделал
4. Подчеркнутые месяца сделать ссылками на эту же страницу где будет осуществятся выборка фильмов за этот месяц этого года - сделал на 99.9% , ругается на 09, 08 и тд месяца, функция субстринг чего то считывает не 09, а - 0.
5. Конец :)

Приложил таблицы и код, мож придется копатся в нем)))

  Ответить  
 
 автор: sim5   (30.11.2008 в 05:38)   письмо автору
 
   для: TetRiska   (30.11.2008 в 05:19)
 

$myrow4["0"] - уберите кавычки из всех индексов, они тут совсем не нужны. $month_names[09] - а это что за зверь? Вы можете строку брать как число (intval(string)) и проверять уже числа. Почитайте вы в конце концов о функциях работы с датами, массивами, строками. Потренеруйтесь на простых примерах, уясните что это такое. Вы из поста в пост одни и те же ошибки переносите, хотя вам не раз указывали на них.

  Ответить  
 
 автор: TetRiska   (30.11.2008 в 15:54)   письмо автору
 
   для: sim5   (30.11.2008 в 05:38)
 

$month_names[09] - переводит месяц 09 в Сентябрь

  Ответить  
 
 автор: Николай2357   (30.11.2008 в 16:27)   письмо автору
 
   для: TetRiska   (30.11.2008 в 15:54)
 

Так у Вас вроде ассоциативный массив, тогда надо строковое значение в качестве ключа, то есть в кавычки его. $month_names["09"] А вообще это шедевр - такой обработчик...

  Ответить  
 
 автор: TetRiska   (30.11.2008 в 17:22)   письмо автору
 
   для: Николай2357   (30.11.2008 в 16:27)
 

шедевр тоесть много мусора?) или норм? $month_names["09"] хмм и как же я не попробовал такой вариант:) все теперь работает нормалек:) благодарю....но я попробую тот вариант, что Вы мне привели, он не такой громоздкий будет:)

вот можете протестировать :) http://cinema-art.od.ua/full_arh.php

  Ответить  
 
 автор: BinLaden   (30.11.2008 в 16:42)   письмо автору
 
   для: TetRiska   (30.11.2008 в 15:54)
 

Уберите 0 перед 9

  Ответить  
 
 автор: TetRiska   (30.11.2008 в 17:25)   письмо автору
 
   для: BinLaden   (30.11.2008 в 16:42)
 

сдесь убрать 0?
if (substr($myrow4["0"],5,7)=='09')
непроканает у меня ж формате атком дата хранится 2008-09-11..вот я субстрингом указал 5,7( с какого по какой брать значение ) вот мне и должно брать 09, с 10,11,12 месяцами норм рабоатет.

  Ответить  
 
 автор: Николай2357   (30.11.2008 в 10:12)   письмо автору
 
   для: TetRiska   (30.11.2008 в 05:19)
 

Если я правильно уловил идею, Вам нужно что то типа этого?
<?
function selicted($select)
{
    if(
$select == $_GET['view_year'])
return 
"selected";
}

$query mysql_query("SELECT YEAR(`date`) AS `year` FROM `data` GROUP BY `year` DESC",$db); 
if(
mysql_num_rows($query) > 0

echo  
" <form id='form' methog='get'> 
    <center>Выберите год:<select onchange=\"document.getElementById('form').submit()\" name='view_year'>"

    while (list(
$year) = mysql_fetch_row($query)) 
    { 

    echo 
" <option ".selicted($year)." value='".$year."' >".$year."</option> ";
 
    } 
echo 
"</select></center> 
  </form><br>"


 
$view_year = isset($_GET['view_year'])?$_GET['view_year']:null;
$sub_y = isset($_GET['sub_y'])?$_GET['sub_y']:null;
 

$month_names = array   

=>'Январь',   
'Февраль',   
'Март',   
'Апрель',   
'Май',   
'Июнь',   
'Июль',   
'Август',    
'Сентябрь',   
'Октябрь',   
'Ноябрь',   
'Декабрь'   
);
 
$result4 mysql_query("SELECT DISTINCT left(date,7) AS month FROM data ORDER BY month DESC",$db);

while(
$row mysql_fetch_row($result4))
{
 
$date strtotime($row[0]);
    if(
date("Y"$date)==$view_year
echo  
date("Y"$date)."<a href='?view_year=".date("Y"$date)."&sub_y=".date("n"$date)."'> 
<u> "
.$month_names[date("n"$date)]."</u></a><br>"
    else 
echo  
date("Y"$date)." ".$month_names[date("n"$date)]."<br>";
 
}
Если я в правильном направлении - продолжим.

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

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