Индекс картинок

Статус
Закрыто для дальнейших ответов.

batumski

Новичок
Регистрация
20.09.2011
Сообщения
1
ребята нужна по мощь ваша вот что выдаёт за ошибку

Код:
Notice: Undefined index: perpage in /home/vano/public_html/new/admin/classes/ImagesAdmin.php on line 154

Notice: Undefined index: geosize in /home/vano/public_html/new/admin/classes/ImagesAdmin.php on line 159

Notice: Undefined index: filesize in /home/vano/public_html/new/admin/classes/ImagesAdmin.php on line 160

Notice: Undefined index: type in /home/vano/public_html/new/admin/classes/ImagesAdmin.php on line 161
вот сам этот ImagesAdmin, чё делать по могите пожалуйста
Код:
<?php

require_once('path_utils.php');
require_once('utils.php');

class ImagesAdmin extends WorkFlow {
    protected $urlDir = '';
    protected $dblink = null;

    protected function init() {
        //setlocale(LC_ALL, 'ru_RU.UTF8');
		$settings_dir = "../settings";
		include "$settings_dir/conf.php"; 
        header("Content-type: text/html; charset={$this->charset}");
        $this->DEBUG = 1;

        $this->setConfig('imgcfg.php');
        
        $this->urlDir = dirname($_SERVER['SCRIPT_NAME']);
        $this->tplDir = '../templates/'.$template.'';

    }

    protected function main() {
        if (isset($this->get['list'])) {
            $this->tplName = 'site_list.tpl';
        } elseif (isset($this->get['search'])) {
            $this->tplName = 'search_result.tpl';
            $this->dblink = $this->dbconnect();
            
            // определяем начало выборки строк из базы(LIMIT)
            $this->get['start'] = is_numeric(@$this->get['start']) && @$this->get['start'] >= 0 ? $this->get['start'] : 0;
            $rowStart = mysql_real_escape_string($this->get['start']);
            ini_set("display_errors",0);
            $searchPhrase = $_GET['phrase'];// = iconv('cp1251', 'utf-8', $_GET['phrase']);
            $searchPhrase = mysql_real_escape_string(urldecode($_GET['phrase']));
            $searchPhrase = preg_replace("/\s{2,}/i", '', trim($searchPhrase));
			 ini_set("display_errors",0);
# start for language			 
$settings_dir = "../settings";
include "$settings_dir/conf.php";
include "../languages/$language-language.php";
		
//проверяем язык в куках
$domain= $site;
$lang=$_GET['lang'];
if (!$lang) {$HTTP_GET_VARS['lang'];}
if ($lang){
setcookie("langu", $lang, time() + 3600*24*30);
header("location:$domain");
}
if ($_COOKIE['langu']) {
include_once("../languages/".$_COOKIE['langu']."-language.php"); 
}
# end for language

//Опрееляем язык как файл для шаблонизатора
		foreach ($sph_messages as $key => $value)
{
  $this->tplvars[$key] = $value;
}
            if (empty($searchPhrase)) {
                // если фраза для поиска пустая то выходим в основной main
                $this->tplvars['searchres'] = $sph_messages['text_img_nokeywords'];
                $this->tplvars['pages'] = '';
                $this->tplvars['searchphrase'] = '';
                parent::main();
                return false;
				
            }
            
            // Считаем общее кол-во найденных строк. Этот параметр лучше кэшировать
            $sqlTotalRows = "SELECT count(*) AS imgcnt FROM `images_indexed` 
                             WHERE (LOWER(`title`) LIKE LOWER('%$searchPhrase%')) OR (LOWER(`url`) LIKE LOWER('%$searchPhrase%'));";
            $res = mysql_query($sqlTotalRows);
            $row = mysql_fetch_assoc($res);
            
            if ($row['imgcnt'] <= 0) { // если найдено 0 результатов то выходим в основной main
                $this->tplvars['searchres'] = $sph_messages['text_img_noresult'];
                $this->tplvars['pages'] = '';
                $this->tplvars['searchphrase'] = $_GET['phrase'];
                parent::main();
                return false;
            }
            
            $totalPages  = ceil($row['imgcnt'] / $this->config['search']['rows']);
            $pagesHtml = $this->makePageList($rowStart, $row['imgcnt'], $this->config['search']['rows'], "?ajaxsearch&phrase=".urlencode(iconv('utf-8', 'cp1251', $_GET['phrase']))."&start=");

            $sqlQuery = "SELECT * FROM `images_indexed` 
                         WHERE (LOWER(`title`) LIKE LOWER('%$searchPhrase%')) OR (LOWER(`url`) LIKE LOWER('%$searchPhrase%')) 
                         LIMIT $rowStart, {$this->config['search']['rows']};";
            $res = mysql_query($sqlQuery);
            //echo $searchPhrase."<br/>";
          
            $html = '';
            while ($row = mysql_fetch_assoc($res)) {
                $row['stitle'] = mb_substr($row['title'], 0, 20, 'utf-8');
                $row['size'] = intval($row['size'] / 1024);
                $imgHost = extractHost($row['url']);
                $html .= "<li>
                    <a href=\"/preview?url={$row['url']}\" ><img src=\"{$row['local_path']}\" alt=\"{$row['title']}\" title=\"{$row['title']}\"></a><br/>
                    {$row['stitle']}<br/>
                    {$row['width']} x {$row['height']} - {$row['size']}k - {$row['type']}<br/>
                    <a href=\"{$row['page']}\" target=\"_blank\">$imgHost</a>
                    </li>\n";
            }
            $this->tplvars['searchres'] = $html;
            $this->tplvars['pages'] = $pagesHtml;
            $this->tplvars['searchphrase'] = $_GET['phrase'];

        

		

            
            
        } elseif (isset($this->get['ajaxsearch'])) {
            //$this->tplName = 'search_result.tpl';
            $this->dblink = $this->dbconnect();

            $searchPhrase = $_GET['phrase'];// = iconv('cp1251', 'utf-8', $_GET['phrase']);
            $searchPhrase = mysql_real_escape_string(urldecode($_GET['phrase']));
            $searchPhrase = preg_replace("/\s{2,}/i", '', trim($searchPhrase));
            
            if (empty($searchPhrase)) {
                // если фраза для поиска пустая то выходим в основной main
                $this->tplvars['searchres'] = 'Не задана фраза для поиска';
                $this->tplvars['pages'] = '';
                $this->tplvars['searchphrase'] = '';
                parent::main();
                return false;
            }
            
            $formSqlParams = array(
                            'page' => array(16 => 16, 20 => 20),
                            'geosize' => array('all' => '', 'large' => 'AND `width`>=1200', 
                                            'medium' => 'AND (`width`<1200 AND `width`>300)', 
                                            'small' => 'AND `width`<=300' ),
                            'filesize' => array(
                                            'all' => '', 
                                            20 => 'AND `size`<20480', 
                                            50 => 'AND `size`<51200', 
                                            100 => 'AND `size`<102400', 
                                            200 => 'AND `size`<204800'
                                            ),
                            'type' => array(
                                    'all' => '',
                                    'jpg' => "AND ( LOWER(`type`)='jpg' OR LOWER(`type`)='jpeg' )", 
                                    'gif' => "AND LOWER(`type`)='gif'", 
                                    'png' => "AND LOWER(`type`)='png'"
                                        )
                            );
            // Устанавливаем sql параметры выборки из базы заданные в форме фильтрации
            $sqlLimit = isset($formSqlParams['page'][$this->get['perpage']]) ? $formSqlParams['page'][$this->get['perpage']] : $this->config['search']['rows'];

            $this->get['start'] = is_numeric(@$this->get['start']) && @$this->get['start'] >= 0 ? $this->get['start'] : 0;
            $rowStart = mysql_real_escape_string($this->get['start']);

            $sqlGeosize = isset($formSqlParams['geosize'][$this->get['geosize']]) ? $formSqlParams['geosize'][$this->get['geosize']] : '';
            $sqlFilesize = isset($formSqlParams['filesize'][$this->get['filesize']]) ? $formSqlParams['filesize'][$this->get['filesize']] : '';
            $sqlType = isset($formSqlParams['type'][$this->get['type']]) ? $formSqlParams['type'][$this->get['type']] : '';

            // Считаем общее кол-во найденных строк. Этот параметр лучше кэшировать
            $sqlTotalRows = "SELECT count(*) AS imgcnt FROM `images_indexed` 
                             WHERE (LOWER(`title`) LIKE LOWER('%$searchPhrase%') OR LOWER(`url`) LIKE LOWER('%$searchPhrase%')) 
                             $sqlGeosize $sqlFilesize $sqlType;";
            $res = mysql_query($sqlTotalRows);
            $row = mysql_fetch_assoc($res);
            
            if ($row['imgcnt'] <= 0) { // если найдено 0 результатов то выходим в основной main
                $this->tplvars['searchres'] = 'По вашему запросу ничего не найдено';
                $this->tplvars['pages'] = '';
                $this->tplvars['searchphrase'] = $_GET['phrase'];
                parent::main();
                return false;
            }
            
            $totalPages  = ceil($row['imgcnt'] / $sqlLimit);
            //$pagesHtml = $this->makePageList($rowStart, $row['imgcnt'], $this->config['search']['rows'], "?ajaxsearch&phrase=".urlencode(iconv('utf-8', 'cp1251', $_GET['phrase']))."&start=", "onclick=\"return false;\"");
            $pagesHtml = $this->makePageList($rowStart, $row['imgcnt'], $this->config['search']['rows'], "?ajaxsearch&phrase=".urlencode(iconv('utf-8', 'cp1251', $_GET['phrase']))."&start=");
            //$pagesHtml = $this->makePageList($rowStart, $row['imgcnt'], $this->config['search']['rows'], '');

            $sqlQuery = "SELECT * FROM `images_indexed` 
                         WHERE (LOWER(`title`) LIKE LOWER('%$searchPhrase%') OR LOWER(`url`) LIKE LOWER('%$searchPhrase%')) 
                         $sqlGeosize $sqlFilesize $sqlType 
                         LIMIT $rowStart, $sqlLimit;";
            //echo $sqlQuery;
            $res = mysql_query($sqlQuery);
            $html = '';
            while ($row = mysql_fetch_assoc($res)) {
                $row['stitle'] = mb_substr($row['title'], 0, 20, 'utf-8');
                $row['size'] = intval($row['size'] / 1024);
                $imgHost = extractHost($row['url']);
                $html .= "<li>
                    <a href=\"/preview?url={$row['url']}\" ><img src=\"{$row['local_path']}\" alt=\"{$row['title']}\" title=\"{$row['title']}\"></a><br/>
                    {$row['stitle']}<br/>
                    {$row['width']} x {$row['height']} - {$row['size']}k - {$row['type']}<br/>
                    <a href=\"{$row['url']}\" target=\"_blank\">$imgHost</a>
                    </li>\n";
            }

            $this->tplvars['rawdata'] = "<div class='pages'>$pagesHtml</div><br/><br/>$html<br/><div class='pages'>$pagesHtml</div>";

        } elseif (isset($this->get['showimages'])) {
            $this->tplName = 'site_images.tpl';
            $this->dblink = $this->dbconnect();

            $sid = mysql_real_escape_string($this->get['site_id']);

            // определяем начало выборки строк из базы(LIMIT)
            $this->get['start'] = is_numeric(@$this->get['start']) && @$this->get['start'] >= 0 ? $this->get['start'] : 0;
            $rowStart = mysql_real_escape_string($this->get['start']);
            
            // Считаем общее кол-во найденных строк. Этот параметр лучше кэшировать
            $sqlTotalRows = "SELECT count(*) AS imgcnt FROM `images_indexed` WHERE `site_id` = $sid;";
            $res = mysql_query($sqlTotalRows);
            $row = mysql_fetch_assoc($res);
            $pagesHtml = $this->makePageList($rowStart, $row['imgcnt'], 16, "?showimages&site_id=$sid&start=");
            
            $sqlQuery = "SELECT * FROM `images_indexed` 
                         WHERE `site_id` = $sid ORDER BY `id` 
                         LIMIT $rowStart, {$this->config['search']['rows']};";
            $res = mysql_query($sqlQuery);
            $html = '';
            while ($row = mysql_fetch_assoc($res)) {
                if (empty($row['title'])) {
                    $row['title'] = 'Нет описания';
                }
                //$row['stitle'] = substr($row['title'], 0, 40);  // в utf-8 может отрезать байт от символа.
                $row['size'] = intval($row['size'] / 1024);
                $imgHost = preg_replace("/^https*\:\/\/([^\/]+?)\/.*/is", "\\1", $row['url']);
                $html .= "<li>
                        <div class=\"imgbox\">
                        <a href=\"/preview?url={$row['url']}\"><img src=\"{$row['local_path']}\" alt=\"{$row['title']}\" title=\"{$row['title']}\"></a><br/>
                        <a href=\"{$row['url']}\" target=\"_blank\">$imgHost</a>
                        </div>
                        <div class=\"imgtitle\">{$row['title']}</div>
                        <div class=\"imgaction\" id=\"img_{$row['id']}\"><a href=\"\" onclick=\"delImage({$row['id']}); return false;\">Удалить</a></div>
                        </li>\n";
            }

            $this->tplvars['searchres'] = $html;
            $this->tplvars['pages'] = $pagesHtml;

        } elseif (isset($this->get['ajaxdelimg'])) {
            if ( !(is_numeric($this->get['id']) && $this->get['id'] >= 0) ) {
                $this->tplvars['rawdata'] = "Неверный ID $this->get['id']";
            } else {
                $this->dblink = $this->dbconnect();
                $id = mysql_real_escape_string($this->get['id']);
                $sqlDelQuery = "DELETE FROM `images_indexed` WHERE `id` = $id;";
                $res = mysql_query($sqlDelQuery);
                if (mysql_affected_rows() > 0 ) {
                    $this->tplvars['rawdata'] = "Удалена";
                } else {
                    $this->tplvars['rawdata'] = "Ошибка удаления. Возможно id $id не найден в базе";
                }
            }
        } else {
            $this->tplName = 'default.tpl';
        }

        parent::main();
    }
    
    protected function dbconnect() {
        $this->dblink = mysql_connect($this->config['db']['host'], $this->config['db']['user'], $this->config['db']['passwd']);
        if (!$this->dblink) {
            die('Ошибка соединения с БД сервером: ' . mysql_error());
        }
        //mysql_set_charset($this->config['db']['charset']);
        //mysql_query("SET NAMES '{$this->config['db']['charset']}';") or die(mysql_error().'. '.__FILE__.' [line:'.__LINE__.']');
        mysql_set_charset($this->config['db']['charset']) or die(mysql_error().'. '.__FILE__.' [line:'.__LINE__.']');
        if ( !mysql_select_db($this->config['db']['name']) ) die ('Ошибка подключения к БД: ' . mysql_error());
        //echo mysql_client_encoding();
        return $this->dblink;
    }
    
    // Возвращает хтмл-меню паджинатора
    protected function makePageList($offset, $total, $limit, $base = '', $js = '') {
        $total = $total == 0 ? 1 : $total;
        $lastp = ceil($total / $limit);
        $thisp = ceil(($offset == 0 ? 1 : ($lastp / ($total / $offset))));
        
        $html = "<script language=\"javascript\">
            \$('.pagesls').click( function(){
                submit(\$(this).attr('start'));
                return false;
            });
        </script>";
        $html .= "<div class=\"paginator\">\n";
        if ($thisp==1) $html .= "<SPAN CLASS=\"atstart\">&lt&lt</SPAN>\n";
        else $html .= "<span class=\"pagesls\" start=\"".(($thisp - 2) * $limit)."\"><a href=\"".$base.(($thisp - 2) * $limit)."\" $js class=\"prev\">&lt;&lt</a></span> \n";
        $page1 = $base . "0";
        $page2 = $base . $limit;
        if ($thisp <= 5) {
            for ($p = 1;$p <= min( ($thisp<=3) ? 5 : $thisp+2,$lastp); $p++) {
                if ($p == $thisp) {
                    $html .= "<span class=\"this-page\">$p</span>\n ";
                } else {
                    $url = $base . (($limit * ($p - 1)));
                    $html .= "<span class=\"pagesls\" start=\"".($limit * ($p - 1))."\"><a href=\"$url\" $js >$p</a></span>\n";
                }
            }
            if ($lastp > $p) {
                $html .= "<span class=\"break\">...</span>\n";
                $html .= "<span class=\"pagesls\" start=\"".(($lastp - 2) * $limit)."\"><a href=\"".$base.(($lastp - 2) * $limit)."\" $js >".($lastp-1)."</a></span>\n";
                $html .= "<span class=\"pagesls\" start=\"".(($lastp - 1) * $limit)."\"><a href=\"".$base.(($lastp - 1) * $limit)."\" $js >".$lastp."</a></span>\n";
            }
        } else if ($thisp > 5) {
            $html .= "<span class=\"pagesls\" start=\"0\"><a href=\"".$page1."\" $js >1</a></span> <span class=\"pagesls\" start=\"$limit\"><a href=\"".$page2."\" $js>2</a></span>";
            if ($thisp != 6) $html .= "<span class=\"break\">...</span>\n ";
            for ($p = ($thisp == 6) ? 3 : min($thisp - 2,$lastp-4);$p <= (($lastp-$thisp<=5) ? $lastp:$thisp+2); $p++) {
                if ($p == $thisp) {
                    $html .= "<span class=\"this-page\">$p</span>\n ";
                } elseif ($p <=$lastp) {
                    $url = $base . ($limit * ($p - 1));
                    $html .= "<span class=\"pagesls\" start=\"".($limit * ($p - 1))."\"><a href=\"$url\" $js >$p</a></span>\n ";
                }
            }
            if ($lastp > $p+1) {
                $html .= "<span class=\"break\">...</span>\n";
                $html .= "<span class=\"pagesls\" start=\"".(($lastp - 2) * $limit)."\"><a href=\"".$base.(($lastp - 2) * $limit)."\" $js >".($lastp-1)."</a></span>\n";
                $html .= "<span class=\"pagesls\" start=\"".(($lastp - 1) * $limit)."\"><a href=\"".$base.(($lastp - 1) * $limit)."\" $js >".$lastp."</a></span>\n";
            }
        }
        if ($thisp == $lastp) $html .= "<SPAN CLASS=\"atend\">&gt&gt</SPAN>\n";
        else $html .= "<span class=\"pagesls\" start=\"".(($thisp) * $limit)."\"><a href=\"".$base.(($thisp) * $limit)."\" $js class=\"next\" >&gt&gt;</a></span>\n";
        $html .= "</div>\n";
        return $html;
    }

}
ребят помагите я вас очень прошу
 
Статус
Закрыто для дальнейших ответов.
Верх Низ