Часовой пояс: UTC + 3 часа




Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 1267 • Страница 4 из 64<  1  2  3  4  5  6  7 ... 64  >
  Пред. тема | След. тема 
В случае проблем с отображением форума, отключите блокировщик рекламы
Автор Сообщение
 

Member
Статус: Не в сети
Регистрация: 28.03.2005
Откуда: Латвия, Рига
virus писал(а):
_Psih писал(а):
пишу собственный

Я тоже начинал 2 раза, но потом находились дела и я забрасывал...

А я допишу до конча, необходимая вещь. А то старый тормознутый и с кучей недостатков. Новый будет проще, быстрее и функциональней :) А самое главное от PEAR :: DB избавлюсь. Вот щас уже заканчиваю для MySQL писать класс, куда внёс кое какие полезные вещи, которых в PEAR :: DB нету и не будет :)


Последний раз редактировалось _Psih 07.09.2005 15:07, всего редактировалось 1 раз.


Партнер
 

Member
Статус: Не в сети
Регистрация: 18.11.2002
Откуда: не вернуться
_Psih писал(а):
необходимая вещь

Ну на сайте где одна только гостевушка можно и без него

_________________
Летели гуси-лебеди, а им навстречу - воробьи-пингвины и соловьи-страусы...


 

Member
Статус: Не в сети
Регистрация: 28.03.2005
Откуда: Латвия, Рига
virus писал(а):
_Psih писал(а):
необходимая вещь

Ну на сайте где одна только гостевушка можно и без него

Ну мелочёвкой не занимаемся, посему 600 баков это самый простенький проэкт на недельку-две :) А так по большей части все за штуку, а то и две :)


 

Member
Статус: Не в сети
Регистрация: 18.11.2002
Откуда: не вернуться
_Psih Я имею в виду не на заказ, а для души...

_________________
Летели гуси-лебеди, а им навстречу - воробьи-пингвины и соловьи-страусы...


 

Member
Статус: Не в сети
Регистрация: 28.03.2005
Откуда: Латвия, Рига
Нууу, знаешь, для души я пишу вот щас + по работе надо :) Кому как конечно, но мне не охота возится с мелочёвкой :) Незнаю почему :)


 

Member
Статус: Не в сети
Регистрация: 27.07.2005
Спасибо.
И еще вы не знаете хорошие мануалы по JS, по которым новичек (вы понимаете какой у мене lvl) может чему-то путному научиться. Что-то путное в моем понимании это если при наведении мышкой на объект на странице появляется надпись (подсказака (яркий пример регистрация на ag.ru)). Хотелось бы на русском.
Еще раз спасибо за терпение. Вы не понимаете как сейчас трудно получить ответ на простой вопрос. Все гоняют.
Но может это к лучшему?
_Psih virus
Не откроете тайну сколько в среднем получают веб дизайнеры. Я слышала от 1000$. И сложно ли устроиться, скажем в Москве.


 

Member
Статус: Не в сети
Регистрация: 28.03.2005
Откуда: Латвия, Рига
Хороший WEB дизайнер в моей стране может иметь от 1000 до 3000 $ в месяц, в зависимости от объёма работы, либо от того, сколько фирма может позволить ему платить :) Наш дизайнер помимо работы ещё кучу своей работы имеет и этим зарабатывает куда больше чем зарплата егоная :)

По JS мануалов толком я не видел. Я лично исключительно по книгам учусь + кое что по и-нету ищу. Много гемороя, куча несовместимостей. Зато за хороших JS программистов держатся :) Вообщем, в любом случаее Google.ru -> JavaScript мануал -> искать и вперёд. Я всегда так делаю :)


 

Member
Статус: Не в сети
Регистрация: 18.11.2002
Откуда: не вернуться
_Psih писал(а):
Хороший WEB дизайнер в моей стране может иметь от 1000 до 3000 $

А в моей хороший может быть бомжом (почти как я) а плохой (но с хорошими связями) получать от 5000$ и выше :D (но тут это оф-топ)

Добавлено спустя 4 минуты, 13 секунд:
_Psih писал(а):
По JS мануалов толком я не видел

Их нету
_Psih писал(а):
Много гемороя, куча несовместимостей

Если следовать DOM то всё в норме и везде (главное зарание составить список функций которые поддерживаются только в IE и не использовать их)
_Psih писал(а):
Google.ru -> JavaScript мануал -> искать и вперёд.

В этом случае не поможет, найдёт только мануалы заточенные под IE и написанные ламерами

_________________
Летели гуси-лебеди, а им навстречу - воробьи-пингвины и соловьи-страусы...


 

Member
Статус: Не в сети
Регистрация: 02.08.2005
Откуда: Казань
Хм.. Лично мне помогла книга "Освой Javascript самостоятельно за 24 часа", и "Javascript - быстрый старт". Правда последняя была написана как раз на примерах с MSIE, например при работе со слоями использовали массив document.all, и тому подобные вещи.
А потом я выкачал документацию на JS и стал читаяя ее, экспериментировать. В итоге теперь мне моих знаний вполне хватает, чтобы писать скрипты необходимой сложности для своих проектов, комбинируя их с PHP.

_________________
Feci quod potui, faciant meliora potentes.


 

Member
Статус: Не в сети
Регистрация: 28.03.2005
Откуда: Латвия, Рига
я JavaScript изучал по следующим книгам:
1) JavaScript и DHTML: Сборник рецептов. O'Reilly, издательство "Питер"
2) JavaScript, справочник. Аллен Вайк и др. Издательство "DiaSoft"
3) JavaScript - Библия пользователя, 4-е издание, Денни Гудман. Издательство "Диалектика". Помоему, лучшая книжка! В купе с приведущими двумя вообще очень мощьное обучающее пособие :)
К справочнику и библии пользователя прилагаются диски, там ещё много что есть, по объёму как книги примерно :)
Плюс в том, что в книгах описанно не заточенное под IE програмирование, а какраз написание мультибраузерных скриптов, подробные описание объектных моделей, событийных моделей и.т.д. Вообщем рекомендую :)


 

Member
Статус: Не в сети
Регистрация: 25.10.2003
Откуда: Самара
есть скриптик
Код:
<?
If ( Empty($ADM) ) $ADM=0;
$access = ODBC_Do ($db,"SELECT * FROM admins_access WHERE adminID=$ADM AND dataSection='$sql_section'");
$access = ODBC_Result($access,'adminID');

$sql = "SELECT ". ( !Empty($sql_top)?"TOP $sql_top ":"" ) ."* FROM _data WHERE (dataSection='$sql_section' AND dataShow=1) ORDER BY (dataOrder) $sql_order";
//Echo $sql;
$adding = ODBC_Do ($db,"SELECT * FROM _menu WHERE menuHref='$sql_section'");
$adding = ODBC_Result($adding,'menuID') ? True : False ;
$data = ODBC_Do ($db,$sql);

If ( $ADM>0 And !Empty($access) And $adding And $sql_order=='DESC' ) {
?>
<Script Language="JavaScript">
function funEdit() {
 window.showModalDialog('__constructor.php');
}
</Script>
<Button Style="font-size: 10; background-color: blue; color: white; border-width: 1;" OnClick="open '/__new.php?<? Echo $sql_section; ?>','_blank','resizable,scrollbars'" Language="VBScript">äîáàâèòü...</Button>
<?
}

 Do {
?>

<?
If ( $ADM>0 And !Empty($access) And ODBC_Result($data,'dataAdmin')>'' ) {
$admin = ODBC_Do ($db,"SELECT * FROM admins WHERE adminID=". ODBC_Result($data,'dataAdmin'));
?>
<HR Color=Red size=1>

<? If ( $ADM==1 ) {
// òåñò êîíñòðóêòîðà showModalDialog
?>
<Button Style="font-size:8pt;border-width:1;" OnClick="open('__constructor.php?<? Echo ODBC_Result($data,'dataID'); ?>')" Language="VBScript">êîíñòðóêòîð</Button>
<?
// òåñò êîíñòðóêòîðà
}
$id_number=ODBC_Result($data,'dataID');
//echo "$id_number";
 ?>
<a onclick="open'__del.php?id=<?=$id_number; ?>'" title="Óäàëèòü äàííûå ïîä íîìåðîì [ <?=$id_number; ?> ]" style="cursor:hand"> X </a>
<Button Style="font-size: 10; background-color: red; color: white; border-width: 1;" OnClick="open '/__edit.php?id=<? Echo ODBC_Result($data,'dataID'); ?>','edit<? Echo ODBC_Result($data,'dataID'); ?>','resizable,scrollbars'" Language="VBScript" Title="<? Echo ODBC_Result($admin,'adminName'); ?>.">èçìåíèòü...</Button>
&nbsp;<TT Style=color:gray;cursor:help; Title="ïðèçíàê ñîðòèðîâêè">#<? Echo ODBC_Result($data,'dataID'); ?></TT>&nbsp;
<?
/*If (ODBC_Result($data,'dataOrder')>0) {
?>
<Button Style="font-size: 10; background-color: red; color: white; border-width: 1;" OnClick="open '/__move.php?id=<? Echo ODBC_Result($data,'dataID'); ?>&move=<? Echo $sql_order=='ASC'?'inc':'dec'; ?>','move','Height=100; Width=200'" Language="VBScript" Title="ïåðåìåñòèòü âíèç">&#9660</Button>
<Button Style="font-size: 10; background-color: red; color: white; border-width: 1;" OnClick="open '/__move.php?id=<? Echo ODBC_Result($data,'dataID'); ?>&move=<? Echo $sql_order=='DESC'?'inc':'dec'; ?>','move','Height=100; Width=200'" Language="VBScript" Title="ïåðåìåñòèòü ââåðõ">&#9650</Button>
<?
 }
*/
 } ?>

<? If (Trim(ODBC_Result($data,'dataName'))>'') { ?>
<Table Align=Center Width=95% Border=0 BGColor=#B7C8D9 Style="font-family: sans-serif; font-size: 8pt;">
 <TR>
  <TD Align=Left>
   <? Echo ODBC_Result($data,'dataName'); ?>
   <? If (Trim(ODBC_Result($data,'dataIcon'))>'') { ?>
    <Img Src="<? Echo ODBC_Result($data,'dataIcon'); ?>" Border=0>
   <? } ?>
  </TD>
  <TD Align=Right>
   <A Href="#" Title="ïåðåõîä â íà÷àëî ñòðàíèöû..." Class=top><Img Src="/_pagetop.gif" Width=30 Height=10 Border=0></A>
  </TD>
 </TR>
</Table>
<? } ?>

<? If ( $sql_section=='ue' ) Echo '<div Style="color: red; font-weight: bold; font-size: 12pt; text-align: center;">'; ?>
<?
If ( Empty($sql_date) ) {
?>
<?
} Else {
?></div>
<table width=100% cellspacing="0" cellpadding="2" border=0>
  <tr>
    <td Style="border-left:#B7C8D9 1px solid; border-right:#B7C8D9 1px solid; font-size:8pt; text-indent:5pt" bgcolor="#B7C8D9">
      <? Echo SubStr(ODBC_Result($data,'dataDate'),8,2), '-', SubStr(ODBC_Result($data,'dataDate'),5,2), '-', SubStr(ODBC_Result($data,'dataDate'),0,4), 'ã.'; ?>
    </td>
  </tr>
  <tr>
    <td class=conf bgcolor="#FFFFFF" style="text-indent:5pt">
      <? Echo ODBC_Result($data,'dataText');?>
    </td>
  </tr>
  <tr>
   <td height=5>
   </td>
  </tr>
</table>

<?
}

?>
<? If ( $sql_section=='ue' ) Echo 'Ñåãîäíÿ êóðñ 1 ó.å. = ';
Echo ODBC_Result($data,'dataText');
If ( $sql_section=='ue' ) Echo ' ðóá.';
 ?>
<? If (Trim(ODBC_Result($data,'dataPicture'))>'') { ?>
     <Center><A <? If (Trim(ODBC_Result($data,'dataHref'))>'') Echo 'Href="'. ODBC_Result($data,'dataHref') .'"'; ?>
                <? If (Trim(ODBC_Result($data,'dataTitle'))>'') Echo 'Title="'. ODBC_Result($data,'dataTitle') .'"'; ?>>
<table cellspacing=2 cellpadding=2><tr><td class="tab">
<Img Src="<? Echo ODBC_Result($data,'dataPicture'); ?>" Border=0>
</td></tr></table></A></Center>
<? } ?>

<?
 } While (ODBC_Fetch_Row($data)) ;

If ( $ADM>0 And !Empty($access) And $adding And $sql_order=='ASC' ) {
?>
<br><Button Style="font-size: 10; background-color: blue; color: white; border-width: 1;" OnClick="open '/__new.php?<? Echo $sql_section; ?>','_blank','resizable,scrollbars'" Language="VBScript">äîáàâèòü...</Button>
<?
}

?>


почему то когда этот скрипт вытаскивает данные из таблицы access в которых есть много ячеек таблицы
т.е. большое количество тегов <tr><td></td></tr>
данные отбражаются неправильно
а именно видна только часть данных а конец обрезан

_________________
Свет полон горошин, которые издеваются над бобами. - Ф. Ларошфуко


 

Member
Статус: Не в сети
Регистрация: 28.03.2005
Откуда: Латвия, Рига
Тебя кто-нить учил отделять PHP код от HTML/JS/CSS кода?
Мог бы и описать что делает скрипт и сделать толковое оформление кода, т.к. его читать невозможно... Я так и не понял алгоритма скрипта. Куча ифов с кучей HTML кода - всё что я увидел.


 

Member
Статус: Не в сети
Регистрация: 18.11.2002
Откуда: не вернуться
О да, оформление просто супер...

_________________
Летели гуси-лебеди, а им навстречу - воробьи-пингвины и соловьи-страусы...


 

Member
Статус: Не в сети
Регистрация: 25.10.2003
Откуда: Самара
оформление не мое
сам страдаю
переделывать времени нет
насколько я понимаю
с помощью этого скрипта вытаскиваются данные из таблиц access

_________________
Свет полон горошин, которые издеваются над бобами. - Ф. Ларошфуко


 

Member
Статус: Не в сети
Регистрация: 18.11.2002
Откуда: не вернуться
Max_I'm писал(а):
с помощью этого скрипта вытаскиваются данные из таблиц access

Не проще ли написать свой ? (я для себя когда-то писал подобные, только для MySQL и SQLite)

_________________
Летели гуси-лебеди, а им навстречу - воробьи-пингвины и соловьи-страусы...


 

Member
Статус: Не в сети
Регистрация: 27.07.2005
to all
Возможно определять размер файла лежащего на ftp сервере?


 

Member
Статус: Не в сети
Регистрация: 28.03.2005
Откуда: Латвия, Рига
Описание
int ftp_size ( resource ftp_stream, string remote_file )
ftp_size() возвращает размер заданного файла в байтах.
Замечание: Не все FTP серверы поддерживают эту возможность.
Взято отсюда: http://lv.php.net/manual/ru/function.ftp-size.php

Добавлено спустя 14 минут, 9 секунд:
Я тут написал небольшой класс по работе с базой данных :) Вот выкладываю код :) Оццените:
Код:
<?php

class DB
{

    var $db = null;

    var $debug = true;

    var $queryArray = array();

    var $sessions = true;

    /*
    @constructor
    */
    function DB($host = null, $user = null, $pass = null, $database = null)
    {
        if (null !== $host && null !== $user && null !== $pass)
        {
            $this->connect($host, $user, $pass, $database);
        }
        $_sid = session_id();
        if (empty($_sid))
        {
           if (!session_start())
           {
               echo 'Failed to start session! In this case, methods <b>setSelectQuery()</b> and <b>selectView()</b> will work much more slower! To increase the speed, please enable sessions!';
               $this->sessions = false;
           }
           else
               if (!isset($_SESSION['sql']))
                    $_SESSION['sql'] = array();
        }
    }

    /*
    @public
    */
    function sqlError()
    {
        return mysql_error($this->db);
    }

    /*
    @private
    */
    function error($msg, $level = 1)
    {
        $err = debug_backtrace();
        echo '<br><b>DB layer error in '.$err[$level]['function'].'() method:</b><br>'.$msg.'<br>';
        return ;
    }

    /*
    @public
    @return Function establishes a connection whith database. On error it halts script execution.
    */
    function connect($host, $user, $pass, $database)
    {
        if ($this->db !== null) return true;
        $res = @mysql_connect($host, $user, $pass);
        if (false === $res)
        {
            sleep(1);
            $res = @mysql_connect($host, $user, $pass) or die($this->error('Cannot connect to database: '.sql_error()));
        }
        $this->db = $res;
        if (null !== $database)
        {
            $res = @mysql_select_db($database, $this->db) or exit($this->error(sql_error()));
        }
        return true;
    }

    /*
    @public
    @return Function closes connection whith database and sets connection identifier variable NULL.
    */
    function close()
    {
        if (null !== $this->db)
        {
            @mysql_close($this->db);
            $this->db = null;
        }
        return true;
    }

    /*
    @public
    @return An alias for close();
    */
    function disconnect()
    {
        $this->close();
    }

    /*
    @public
    @return Function returns current connection identifier. If connection is not establishet, it returns FALSE.
    */
    function getConn()
    {
        if (null === $this->db || false == $this->db) return false;
        return $this->db;
    }

    /*
    @public
    @return Function executes SQL query and returns result returned by query and returns FALSE on error.
    */
    function exec($sql)
    {
        return @mysql_query($sql, $this->db);
    }

    /*
    @public
    @return Function inserts a row and returns TRUE on success or FALSE on error.
    */
    function insert($table, $data)
    {
        $set_string = null;
        foreach ($data as $key => $value)
            $tmp[] = $key.' = \''.mysql_escape_string($value).'\'';
        $set_string = trim(implode(',',$tmp));
        unset($tmp);
        $sql = 'INSERT INTO '.$table.' SET '.$set_string;
        if (!$this->exec($sql))
        {
            if ($this->debug === true) echo sql_error().'<br>in query<br>'.$sql;
            return false;
        }
        return mysql_insert_id($this->db);
    }

    /*
    @public
    @return Function returns affected row count, or FALSE on error.
    */
    function update($table, $data, $where = null)
    {
        if (!is_array($data))
        {
            if (true === $this->debug) $this->error('<b>$data</b> param should be an array!');
            return false;
        }
        $set_string = null;
        foreach ($data as $key => $value)
            $tmp[] = $key.' = \''.mysql_escape_string($value).'\'';
        $set_string = trim(implode(',',$tmp));
        unset($tmp);
        if (false === ($where = $this->makeWhere($where)))
            return false;
        $sql = 'UPDATE '.$table.' SET '.$set_string.$where;
        if (!$this->exec($sql))
        {
            if (true === $this-> debug) $this->error(sql_error().' in query: <b>'.$sql.'</b>');
            return false;
        }
        return mysql_affected_rows($this->db);
    }

    /*
    @public
    @return Function returns deleted row count, if delete was successful. If error acured, it returns FALSE.
    */
    function delete($table, $where = null)
    {
        if (false === ($where = $this->makeWhere($where)))
            return false;
        $sql = 'DELETE FROM '.$table.$where;
        if (!$this->exec($sql))
        {
            if (true === $this->debug)
                $this->error(sql_error().' in : <b>'.$sql.'</b>');
            mysql_free_result($res);
            return false;
        }
        return mysql_affected_rows($this->db);
    }

    /*
    @public
    @return Function returns TRUE if record exists, and FALSE, if not or error accured.
    */
    function recExists($table, $where)
    {
        if (false === ($where = $this->makeWhere($where)))
            return false;
        if (!$res = $this->exec('SELECT * FROM '.$table.$where.' LIMIT 0, 1'))
        {
            if (true === $this->debug)
                $this->error(sql_error().' in: <b>'.$sql.'</b>', 2);
            return false;
        }
        return (0 < @mysql_num_rows($res)) ? true : false;
    }

    /*
    @public
    @return Function returns a complete WHERE statement made from an array or string.
    if $where isn't an aray or string, function returns FALSE.
    */
    function makeWhere($where = null)
    {
        if ($where === null) return null;
        if (!is_array($where) && !is_string($where))
        {
            if (true === $this->debug) $this->error('Function param should be an array or string!');
            return false;
        }
        if (is_array($where))
        {
            $tmp = null;
            foreach ($where as $key => $value)
            {
                if (preg_match_all('/[^A-Za-z0-9\-_]+/', $key, $matches))
                {
                    if (true === $this->debug)
                        $this->error('Invalid field name, symbol'.((count($matches[0]) > 1) ? 's' : null).' <b>'.implode('</b>, <b>', $matches[0]).'</b> '.((count($matches[0]) > 1) ? 'are' : 'is').' forbidden. Error found in field name <b>'.$key.'</b>.', 2);
                    return false;
                }
                $tmp[] = '`'.$key.'` = \''.mysql_escape_string($value).'\'';
            }
            $where = ' WHERE '.trim(implode(' AND ', $tmp));
            unset($tmp);
            return $where;
        }
        if (is_string($where) && ($r = preg_match('/\=+/', $where)))
        {
            $where = ' WHERE '.trim(str_replace('where', null, strtolower($where)));
            return $where;
        }
        else
        {
           if (!$r) $this->error('An error acured in WHERE expresion! Please check the syntax!', 2);
           return false;
        }
    }

    /*
    @public
    @return function returns an associative array from MySQL result id. If $type is set to MYSQL_NUM, than function
    returns a scalar array
    */
    function getData($res, $type = MYSQL_ASSOC)
    {
        if (!$count = @mysql_num_rows($res))
        {
            if (true === $this->debug)
                $this->error('Given resource ID is not a valid MySQL result!');
            mysql_free_result($res);
            return false;
        }
        for ($i = 0; $i < $count; $i++)
            $data[] = mysql_fetch_array($res, $type);
        mysql_free_result($res);
        return $data;
    }

    /*
    @public
    @return Function returns a row from database. If there was no data, 0 is returned.
    */
    function getRow($sql, $type = MYSQL_ASSOC)
    {
        if (!$res = $this->exec($sql))
        {
            if (true === $this->debug)
                $this->error($this->sqlError());
            mysql_free_result($res);
            return false;
        }
        if (0 == mysql_num_rows($res))
        {
            return 0;
        }
        $data = mysql_fetch_array($res, $type);
        mysql_free_result($res);
        return $data;

    }

    /*
    @public
    @return Returns a value of first record's first field.
    */
    function getOne($sql)
    {
        if (!$res = $this->exec($sql))
        {
            if (true === $this->debug)
                $this->error($this->sqlError());
            mysql_free_result($res);
            return false;
        }
        if (!$data = @mysql_result($res, 0, 0))
        {
            if (true === $this->debug)
                $this->error('An error aqured while getting data from result. Please check if query returns on correct field number!');
            return false;
        }
        mysql_free_result($res);
        return $data;
    }

    /*
    @public
    @return Function returns an array, containing all records, selected from database.
    */
    function select($table, $fileds = '*', $where = null)
    {
        if (is_array($fields)) $fields = implode(',', $fields);
        elseif (!is_string($fields))
        {
            if (true === $this->debug)
                $this->error('Fields are not an array or string!');
            return false;
        }
        if (false === ($where = $this->makeWhere($where)))
             return false;
        $sql = 'SELECT '.$fields.' FROM '.$table.$where;
        $res = $this->exec($sql);
        if (!$res)
        {
            if (true === $this->debug)
                $this->error(sql_error().'<br>accured in query:<br>'.$sql);
            mysql_free_result($res);
            return false;
        }
        while ($data = $this->getData($res))
              $result[] = $data;
        mysql_free_result($res);
        return $result;
    }

    /*
    @public
    @return function recives sql query, parses it, so it can be used by viewSelect function.
    */
    function setSelectQuery($sql, $qName, $reParse = false)
    {
        if (isset($this->queryArray[$qName]))
            return true;
        if (isset($_SESSION['sql'][$qName]) && !isset($this->queryArray[$qName]) && $reParse === false)
        {
            $this->queryArray[$qName] = $_SESSION['sql'][$qName];
            return true;
        }
        if (!is_string($qName) || !is_string($sql))
        {
            if (true === $this->debug)
                $this->error('Both params for <b>setSelectQuery()</b> should be a string!');
            return false;
        }
        if (false !== ($res = $this->parseSelectQuery($sql)))
        {
            if (!$this->sessions)
                $this->queryArray[$qName] = $res;
            else
                $_SESSION['sql'][$qName] = $this->queryArray[$qName] = $res;
            return true;
        }
        else
            return false;
    }

    /*
    @private
    @return Parses query and returns array, contaning fields, parsed query and original query.
    */
    function parseSelectQuery($sql)
    {
        $sql = trim(preg_replace('/(\ +|\r|\n|\;)+/S', ' ', $sql));
        if (!preg_match('/FROM/i', $sql, $end, PREG_OFFSET_CAPTURE))
        {
            if (true === $this->debug)
                $this->error('SQL query has invalid syntax, <b>FROM</b> no found', 2);
            return false;
        }
        $length = (int)($end[0][1]-6);
        $fields = $this->unparseQuery(explode(',', $this->parseQuery(substr($sql, 6, $length))));
        $count = count($fields);
        $parsed = array();
        for ($i = 0; $i < $count; $i++)
        {
            $parsed = array_merge($parsed, $this->parseField($fields[$i]));
        }
        return array('fields' => $parsed, 'parsed' => preg_replace('/SELECT.+FROM/i', 'SELECT * FROM', $sql), 'sql' => $sql);
    }

    /*
    @private
    @return Replaces commas.
    */
    function replaceCommas($string)
    {
        return '[obr]'.str_replace(',', '[c]', $string).'[cbr]';
    }

    /*
    @private
    @return Function removes commas, so that query could be exploded by commas. Function is recursive.
    */
    function parseQuery($string)
    {
        $string = preg_replace('/\(([^()]+)\)/e', '$this->replaceCommas(\'$1\')', $string);
        if (preg_match('/\([^()]+\)/', $string))
            return $this->parseQuery($string);
        else
            return $string;
    }

    /*
    @private
    @return Function replaces all special strings whith original symbols.
    */
    function unparseQuery($arr)
    {
        return str_replace(array('[c]','[obr]','[cbr]'), array(',', '(', ')'), $arr);
    }

    /*
    @private
    */
    function parseField($field)
    {
        $field = trim($field);
        if (false === strpos($field, 'AS'))
        // 'AS' string not found in needle
        {
            $result[substr($field, strpos($field, '.')+1)]['original'] = $field;
        }
        else
        {
            $tmp = explode('AS', $field);
            $result[trim($tmp[1])]['original'] = trim($tmp[0]);
        }
        return $result;
    }

    /*
    @public
    @return Function emulates View's. It recives view name, fields and $where, generates SQL query based on query, set in setSelectQuery().
    */
    function viewSelect($qName, $fields = null, $where = null)
    {
        if (!isset($this->queryArray[$qName]))
        {
            if (true === $this->debug) echo 'No such query set: <b>'.$qName.'</b> doesn\'t exist. Use <b>setSelectQuery()</b> to set SQL query before using this function!';
            return false;
        }
        $where = $this->makeWhere($where);
        if (null !== $where && false === $where)
        {
             return false;
        }
        if (null !== $fields && is_array($fields))
        {
            $count = count($fields);
            for ($i = 0; $i < $count; $i++)
                 $generated_fields[] = $this->queryArray[$qName]['fields'][$fields[$i]]['original'].' AS '.$fields[$i];
            $sql = str_replace('*', implode(', ', $generated_fields), $this->queryArray[$qName]['parsed']).$where;
        }
        else
            $sql = $this->queryArray[$qName]['sql'].$where;
//        return $sql;
        if (!$res = $this->exec($sql))
        {
            if (true === $this->debug)
                $this->error('An error accured: '.$this->sqlError());
            return false;
        }
        return $this->getData($res);
    }

    /*
    @public
    @return Function clears parsed query from session and db object
    */
    function clearSelectQuery($qName)
    {
        if (isset($this->queryArray[$qName]))
            unset($this->queryArray[$qName]);
        if (isset($_SESSION['sql'][$qName]))
            unset($_SESSION['sql'][$qName]);
        return true;
    }

}

?>


 

Member
Статус: Не в сети
Регистрация: 27.07.2005
_Psih
и еще может ли php уменьшать изовражение в пару раз и выводить его маленькой картинкой (размер тоже должен уменьшить) или нельзя?


 

Member
Статус: Не в сети
Регистрация: 18.11.2002
Откуда: не вернуться
ElMory Можно
http://www.php.net/manual/en/ref.image.php
http://www.php.net/manual/en/function.i ... esized.php

_Psih
_Psih писал(а):
echo 'Failed to start session!

Ох не думаю что это хорошая идея, думаю ошибки лучше записывать в что-то $this->error_msg и при случае выводить уже в скриптом который будет этот класс юзать...
(да и не совсем понимаю смысла использования сессий в классе...)

_________________
Летели гуси-лебеди, а им навстречу - воробьи-пингвины и соловьи-страусы...


 

Member
Статус: Не в сети
Регистрация: 28.03.2005
Откуда: Латвия, Рига
virus писал(а):
ElMory Можно
http://www.php.net/manual/en/ref.image.php
http://www.php.net/manual/en/function.i ... esized.php

_Psih
_Psih писал(а):
echo 'Failed to start session!

Ох не думаю что это хорошая идея, думаю ошибки лучше записывать в что-то $this->error_msg и при случае выводить уже в скриптом который будет этот класс юзать...
(да и не совсем понимаю смысла использования сессий в классе...)

В данном случае это парсинг SQL запроса выполняется 1 раз и сохраняется в сесси, в результате в следующий раз выполнение убыстряется с 0.002 секунды до 0.00005 секунды :)


Показать сообщения за:  Поле сортировки  
Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 1267 • Страница 4 из 64<  1  2  3  4  5  6  7 ... 64  >
-

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти:  

Лаборатория














Новости

Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB | Kolobok smiles © Aiwan