Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » PHP: Полезные (интересные и оригинальные) решения

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17

Открыть новую тему     Написать ответ в эту тему

SafeWay



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Начну:

Код:
 
  function err_handler ($errno, $errstr, $errfile, $errline) {
    global $display_errors;
    if(($errno != E_NOTICE && $errno != E_WARNING) && $display_errors){
      echo '';
    }
  }
  $error_flags = E_ALL & ~E_NOTICE;
  @error_reporting($error_flags);
  @ini_set ('error_reporting', $error_flags);
  $old_error_handler = set_error_handler("err_handler");
 

 
Бывает полезным, убивает все нотайсы, выводы ошибок и прочее.
 
ЗЫ: Желательно прикрепить.



Публикуем решения, а не задаем вопросы!
Тех же, кто этого не понимает, будем БАНИТЬ!  
Тема именно для уникальных, оригинальных и красивых решений. Если ты только взялся изучать php - не стоит сюда писать, так как, заведомо, у тебя не будет такого решения
 
ps: выделил специально для тех, у кого проблемы со зрением.





Цитата:
ЗЫ: Желательно прикрепить.
В ПМ по этому поводу писать надо. — Svarga.

Всего записей: 365 | Зарегистр. 28-12-2003 | Отправлено: 07:30 26-07-2004 | Исправлено: Cheery, 16:57 25-03-2007
Sardaukar



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Давайте и чего-нибудь подкину.
 
Вот, например, сильно облегчает жизнь с выключенным register_globals:

Код:
/**
* Вспомогательная ф-я. Ищет в запросе первый аргумент.  
* Если находит - кладет его в глобальные переменные (в случае уст. флага $set_glob)  
* со значением из запроса, если нет - со значением, которое передано в ф-ию
* @since 2004-7-14
* @author Rumata
* @param string $var_name имя переменной
* @param string $def_val дефолтовое значение
* @param string $type Тип переменной. Если mixed, то приведение не производится
* @param bool $set_glob Флаг, показывающий, надо ли устанавливать значение глобальной переменной
* @return mixed Переменная, которая была установлена
*/
function pretest($var_name, $def_val, $type, $set_glob = true) {
  if (isset($_REQUEST[$var_name])) {
    $tmp = $_REQUEST[$var_name];
  } else {
    $tmp = $def_val;
  }
  if ($type != "mixed" && $type != "")  
    settype($tmp, $type);
  if ($set_glob) $GLOBALS[$var_name] = $tmp;
  return $tmp;
}
 

$set_glob - пережиток обратной совместимости. Т.к. я работаю в глобальной обл. видимости, я раньше использовал ф-ю так:

Код:
 
pretest("act","","string");
if ($act == "do_smth") {
..
} elseif ...
 
Теперь мне кажется, что удобнее её использовать так:

Код:
$my_name_for_act = pretest("act","","string");
...

А, если нужно юзать это внутри ф-ии, иил просто не хочется захламлять $GLOBALS, то можно делть так:

Код:
$act = pretest("act","","string",false);

Всего записей: 129 | Зарегистр. 14-09-2001 | Отправлено: 23:29 21-08-2004
SafeWay



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

Код:
<?
 
        class template{
 
                var $var_names        = array();
                var $files                = array();
                var $start                = '{';
                var $end                = '}';
 
        /***************************************
        ** Function to load a template into
        ** the class.
        ***************************************/
 
 
                function load_file($file_id, $filename){$this->files[$file_id] = file_get_contents($filename);}
 
 
        /***************************************
        ** Function to load a template into
        ** the class.
        ***************************************/
                function set_identifiers($start, $end){
                        $this->start = $start;
                        $this->end = $end;
                }
 
        /***************************************
        ** This function is used only by the
        ** register() method, for going through
        ** arays and extracting the values.
        ***************************************/
                function traverse_array($file_id, $array){
                        while(list(,$value) = each($array)){
                                if(is_array($value)) $this->traverse_array($file_id, $value);
                                else $this->var_names[$file_id][] = $value;
                        }
                }
 
        /***************************************
        ** Function to register a variable(s).
        ***************************************/
                function register($file_id, $var_name){
                        if(is_array($var_name)){
                                $this->traverse_array($file_id, $var_name);
                        }elseif($var_name != ''){
                                if(is_long(strpos($var_name, ',')) == TRUE){
                                        $var_name = explode(',', $var_name);
                                        for(reset($var_name); $current = current($var_name); next($var_name)) $this->var_names[$file_id][] = trim($current);
                                }else{
                                        $this->var_names[$file_id][] = $var_name;
                                }
                        }
                }
 
        /***************************************
        ** Function to include another file.
        ** eg. A header/footer.
        ***************************************/
                function include_file($file_id, $filename){
                        if(file_exists($filename)){
                                $include = fread($fp = fopen($filename, 'r'), filesize($filename));
                                fclose($fp);
                        }else $include = '[ERROR: "'.$filename.'" does not exist.]';
 
                        $tag = substr($this->files[$file_id], strpos(strtolower($this->files[$file_id]), '<include filename="'.$filename.'">'), strlen('<include filename="'.$filename.'">'));
                        $this->files[$file_id] = str_replace($tag, $include, $this->files[$file_id]);
                }
 
        /***************************************
        ** Function for reading and parsing the
        ** html file for normal variables. Also
        ** now checks for include tags and if
        ** necessary calls include_file()
        ***************************************/
                function parse($file_id){
                        $file_ids = explode(',', $file_id);
                        for(reset($file_ids); $file_id = trim(current($file_ids)); next($file_ids)){
                                while(is_long($pos = strpos(strtolower($this->files[$file_id]), '<include filename="'))){
                                        $pos += 19;
                                        $endpos = strpos($this->files[$file_id], '">', $pos);
                                        $filename = substr($this->files[$file_id], $pos, $endpos-$pos);
                                        $this->include_file($file_id, $filename);
                                }
 
                                if(isset($this->var_names[$file_id]) AND count($this->var_names[$file_id]) > 0){
                                        for($i=0; $i<count($this->var_names[$file_id]); $i++){
                                                $temp_var = $this->var_names[$file_id][$i];
 
                                                if(is_long(strpos($this->files[$file_id], $this->start.$temp_var.$this->end))){
                                                        global $$temp_var;
                                                        $this->files[$file_id] = str_replace($this->start.$temp_var.$this->end, $$temp_var, $this->files[$file_id]);
 
                                                }elseif(is_long(strpos($this->files[$file_id], $this->start.$temp_var.'()'.$this->end))){
                                                        global $$temp_var;
                                                        $arguments = array();
                                                        for($i=0; $i<count($$temp_var); $i++) $arguments[] = ${$temp_var}[$i];
                                                        if(count($arguments) > 0) $arguments = '"'.implode('", "', $arguments).'"'; else $arguments = '';
                                                        eval('$output = '.$temp_var.'('.$arguments.');');
                                                        $this->files[$file_id] = str_replace($this->start.$temp_var.'()'.$this->end, $output, $this->files[$file_id]);
                                                }
                                        }
                                }
                        }
                }
 
        /***************************************
        ** Function for parsing an array.
        ***************************************/
                function parse_loop($file_id, $array_name){
                        global $$array_name;
                        $loop_code = '';
 
                        $start_pos = strpos(strtolower($this->files[$file_id]), '<loop name="'.$array_name.'">') + strlen('<loop name="'.$array_name.'">');
                        $end_pos = strpos(strtolower($this->files[$file_id]), '</loop name="'.$array_name.'">');
 
                        $loop_code = substr($this->files[$file_id], $start_pos, $end_pos-$start_pos);
 
                        $start_tag = substr($this->files[$file_id], strpos(strtolower($this->files[$file_id]), '<loop name="'.$array_name.'">'),strlen('<loop name="'.$array_name.'">'));
                        $end_tag = substr($this->files[$file_id], strpos(strtolower($this->files[$file_id]), '</loop name="'.$array_name.'">'),strlen('</loop name="'.$array_name.'">'));
 
                        if($loop_code != ''){
                                $new_code = '';
                                for($i=0; $i<count($$array_name); $i++){
                                        $temp_code = $loop_code;
                                        while(list($key,) = each(${$array_name}[$i])){
                                                $temp_code = str_replace($this->start.$key.$this->end,${$array_name}[$i][$key], $temp_code);
                                        }
                                        $new_code .= $temp_code;
                                }
                                $this->files[$file_id] = str_replace($start_tag.$loop_code.$end_tag, $new_code, $this->files[$file_id]);
                        }
                }
 
        /***************************************
        ** Function for parsing a Mysql result
        ** set.
        ***************************************/
                function parse_sql($file_id, $result_name){
                        global $$result_name;
                        $loop_code = '';
 
                        $start_pos = strpos(strtolower($this->files[$file_id]), '<loop name="'.$result_name.'">') + strlen('<loop name="'.$result_name.'">');
                        $end_pos = strpos(strtolower($this->files[$file_id]), '</loop name="'.$result_name.'">');
 
                        $loop_code = substr($this->files[$file_id], $start_pos, $end_pos-$start_pos);
 
                        $start_tag = substr($this->files[$file_id], strpos(strtolower($this->files[$file_id]), '<loop name="'.$result_name.'">'),strlen('<loop name="'.$result_name.'">'));
                        $end_tag = substr($this->files[$file_id], strpos(strtolower($this->files[$file_id]), '</loop name="'.$result_name.'">'),strlen('</loop name="'.$result_name.'">'));
 
                        if($loop_code != ''){
                                $new_code = '';
                                $field_names = array();
                                for($i=0; $i<mysql_num_fields($$result_name); $i++) $field_names[] = mysql_field_name($$result_name,$i);
                                while($row_data = mysql_fetch_array($$result_name, MYSQL_ASSOC)){
                                        $temp_code = $loop_code;
                                        for($i=0; $i<count($field_names); $i++){
                                                $temp_code = str_replace($this->start.$field_names[$i].$this->end, $row_data[$field_names[$i]], $temp_code);
                                        }
                                        $new_code.= $temp_code;
                                }
                                $this->files[$file_id] = str_replace($start_tag.$loop_code.$end_tag, $new_code, $this->files[$file_id]);
                        }
                }
 
        /***************************************
        ** Function for parsing a Postgres result
        ** set.
        ***************************************/
                function parse_pgsql($file_id, $result_name){
                        global $$result_name;
                        $loop_code = '';
 
                        $start_pos = strpos(strtolower($this->files[$file_id]), '<loop name="'.$result_name.'">') + strlen('<loop name="'.$result_name.'">');
                        $end_pos = strpos(strtolower($this->files[$file_id]), '</loop name="'.$result_name.'">');
 
                        $loop_code = substr($this->files[$file_id], $start_pos, $end_pos-$start_pos);
 
                        $start_tag = substr($this->files[$file_id], strpos(strtolower($this->files[$file_id]), '<loop name="'.$result_name.'">'),strlen('<loop name="'.$result_name.'">'));
                        $end_tag = substr($this->files[$file_id], strpos(strtolower($this->files[$file_id]), '</loop name="'.$result_name.'">'),strlen('</loop name="'.$result_name.'">'));
 
                        if($loop_code != ''){
                                $new_code = '';
                                $field_names = array();
                                for($i=0; $i<pg_numfields($$result_name); $i++) $field_names[] = pg_fieldname($$result_name,$i);
                                for($i=0; $i<pg_numrows($$result_name) AND $row_data = pg_fetch_array($$result_name, $i); $i++){
                                        $temp_code = $loop_code;
                                        for($j=0; $j<count($field_names); $j++){
                                                $temp_code = str_replace($this->start.$field_names[$j].$this->end, $row_data[$field_names[$j]], $temp_code);
                                        }
                                        $new_code.= $temp_code;
                                }
                                $this->files[$file_id] = str_replace($start_tag.$loop_code.$end_tag, $new_code, $this->files[$file_id]);
                        }
                }
 
        /***************************************
        ** Function looking for if blocks
        ** added by Stephan L&#252;deritz
        ***************************************/
               function parse_if($file_id, $array_name){
 
                   $var_names = explode(',', $array_name);
 
                   for($i=0; $i<count($var_names); $i++){
                        $if_code        = '';
                        $start_pos        = strpos(strtolower($this->files[$file_id]), '<if name="'.strtolower($var_names[$i]).'">') + strlen('<if name="'.strtolower($var_names[$i]).'">');
                        $end_pos        = strpos(strtolower($this->files[$file_id]), '</if name="'.strtolower($var_names[$i]).'">');
 
                        $if_code        = substr($this->files[$file_id], $start_pos, $end_pos-$start_pos);
                        $start_tag        = substr($this->files[$file_id], strpos(strtolower($this->files[$file_id]), '<if name="'.strtolower($var_names[$i]).'">'),strlen('<if name="'.strtolower($var_names[$i]).'">'));
                        $end_tag        = substr($this->files[$file_id], strpos(strtolower($this->files[$file_id]), '</if name="'.strtolower($var_names[$i]).'">'),strlen('</if name="'.strtolower($var_names[$i]).'">'));
 
                        $new_code = '';
                        if($if_code != ''){
                                global ${$var_names[$i]};
                                if(@${$var_names[$i]})
                                    $new_code = $if_code;
 
                                $this->files[$file_id] = str_replace($start_tag.$if_code.$end_tag, $new_code, $this->files[$file_id]);
                        }
                    }
                }
 
        /***************************************
        ** Function for printing the resulting
        ** file(s).
        ***************************************/
                function print_file($file_id){
                        if(is_long(strpos($file_id, ',')) == TRUE){
                                $file_id = explode(',', $file_id);
                                for(reset($file_id); $current = current($file_id); next($file_id)) echo $this->files[trim($current)];
                        }else{
                                echo $this->files[$file_id];
                        }
                }
 
        /***************************************
        ** Function for returning the resulting
        ** file(s).
        ***************************************/
                function return_file($file_id){
                        $ret = '';
                        if(is_long(strpos($file_id, ',')) == TRUE){
                                $file_id = explode(',', $file_id);
                                for(reset($file_id); $current = current($file_id); next($file_id)) $ret .= $this->files[trim($current)];
                        }else{
                                $ret .= $this->files[$file_id];
                        }
                        return $ret;
                }
 
        /***************************************
        ** Parses and then immediately prints
        ** the file. This function added by
        ** Bruce Christensen.
        ***************************************/
                function pprint($file_id, $replacements = ''){
                        $this->register($file_id, $replacements);
                        $this->parse($file_id);
                        $this->print_file($file_id);
                }
 
        /***************************************
        ** Parses and then immediately returns
        ** the file's contents. Function added
        ** by Bruce Christensen.
        ***************************************/
                function pget($file_id, $replacements = ''){
                        $this->register($file_id, $replacements);
                        $this->parse($file_id);
                        return $this->return_file($file_id);
                }
 
        /***************************************
        ** Loads a file, parses it, and prints it.
        ** This function added by Bruce Christensen.
        ***************************************/
                function pprint_file($filename, $replacements = ''){
                        for($file_id=1; isset($this->files[$file_id]); $file_id++);
                        $this->load_file($file_id, $filename);
                        $this->pprint($file_id, $replacements);
                        unset($this->files[$file_id]);
                }
 
        /***************************************
        ** Loads, parses and then immediately
        ** returns the file's contents.
        ** Function added by Bruce Christensen.
        ***************************************/
                function pget_file($filename, $replacements = ''){
                        for($file_id=1; isset($this->files[$file_id]); $file_id++);
                        $this->load_file($file_id, $filename);
                        return $this->pget($file_id, $replacements);
                }
 
        } // End of class
?>

 
Неплохой шаблонизатор оригинал от phpguru.org, немного переделан.

----------
Hosted by http://www.balthost.ee

Всего записей: 365 | Зарегистр. 28-12-2003 | Отправлено: 03:10 22-08-2004 | Исправлено: SafeWay, 03:11 22-08-2004
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
SafeWay

Цитата:
Неплохой шаблонизатор  оригинал от phpguru.org, немного переделан.  

а не лучше бы было просто дать ссылку?  
http://www.phpguru.org/static/template.html
немного переделан? только тут?

Цитата:
function load_file($file_id, $filename){$this->files[$file_id] = file_get_contents($filename);}



----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 03:24 22-08-2004
SafeWay



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Cheery
я пробегался по всему классу, не помню что менял конкретно.

----------
Hosted by http://www.balthost.ee

Всего записей: 365 | Зарегистр. 28-12-2003 | Отправлено: 03:36 22-08-2004
MAGISTRATE



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Не вижу смысла юзать такие классы шаблонизации. Php для того и Php, он
легко встраивается в html. Поэтому иногда легче написать не сильно
напрягаясь
 

Код:
<title><?=$title?></title>
<?=body?>

 
Чем
 

Код:
<title>{title}</title>
{body}

 
Т.е не надо тормозить скрипт сотней подобных классов.

----------
ага

Всего записей: 888 | Зарегистр. 23-07-2003 | Отправлено: 09:18 22-08-2004
Church



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Поэтому иногда легче написать не сильно  
напрягаясь  

Ключевое слово иногда. А если ты хочешь использовать несколько скинов? ПисАть отдельные скрипты с разными дизайнами? А если ты не знаешь PHP?
Я лично пришел к выводу, что в таких случаях лучше использовать шаблонизатор, который из  
<title>{title}</title>
{body}
Делает
<title><?=$title?></title>  
<?=body?>
 
А потом уже готовый PHP-код спокойно инклюдится... В итоге, самому не нужно писАть простые, но большие PHP-коды, а достаточно отредактировать обычный HTML и получить результат...
Например, кусок шаблона регистрации:
 
[IF_ERROR]
При регистрации были обнаружены следующие ошибки:<font color="#ab0000"><b><i>
[ERROR]
<li>{T_ERROR}
[/ERROR]
</i></b></font><p>
[/IF_ERROR]
 
Преобразовывается в:
 
<?php
if ($error){
?>
При регистрации были обнаружены следующие ошибки:<font color="#ab0000"><b><i>
<?php
foreach ($error as $k=>$v){
?>
<li><?php echo $er_array[$k]?>
<?php
}
?>
</i></b></font><p>
<?php
}
?>
 
Когда его полностью доделаю - обязательно выложу... Но тем, кто не знает такого варианта - думаю, что будет полезно про него узнать

Всего записей: 1199 | Зарегистр. 05-09-2003 | Отправлено: 17:03 22-08-2004
MAGISTRATE



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Все, что ты мне написал, решается легко, гораздо легче без классов.
Чайника, может запутать не меньше такое {title}, чем просто <?=$title?>.
Я, например, не всегда понимаю в бредовом коде эдакой шаблонизации.
 
Делай хоть 20, хоть тридцать скринов. Указываешь путь к этой папке со
скином и все. Не вижу препядствий. Итого, такая шаблонизация (что ты
привел), якобы нужна, чтобы отделить html от основного кода, это
сделано в моем примере гораздо легче, шаблонизация нужна для того,
чтобы сделать кучу скинов, не вижу препядствий,вставляй в конфиг
название шаблона, шаблонизация (приведенная тобой) будет тормозить, хоть и
не на много, работу скрипта.
 

Код:
 
[IF_ERROR]
При регистрации были обнаружены следующие ошибки:<font color="#ab0000"><b><i>
[ERROR]
<li>{T_ERROR}
[/ERROR]
</i></b></font><p>
[/IF_ERROR]
 

 
Такой бред, даже я не понимаю, а если сделать что то вроде:
 

Код:
 
<BODY>
<?=content?>
</BODY>
 

Чайнику этот код покажется обычным Html.
 
А этот контент заменять внутри скрипта НЕ ИСПОЛЬЗУЯ html, то будет
гораздо легче и быстрее.
 

Код:
 
// тело скрипта, не шаблона
if($error == 1) $content = 'Error';
if($error == 0) $content = 'Добро пожаловать на мою компагу';
 

 
Если ты скажешь, что такой в моем примере текст находится внутри кода,
то этот текст можно выложить в другой файл.
 
Итого, класс шаблонизации написал чайник и все подумали: "Да, это
круто, мы вспомнили родной Бейсик". И пошло поехало... Для любой
элементарной задачи юзать классы...
 
А теперь код в целом
 
lang.php

Код:
 
$l[1] = 'Текст';
 

 
index.php

Код:
 
$content = $l[1];
 

 
template.tpl

Код:
 
<?=$content?>
 

 
У меня в коде 3 строки, а у тебя для этой же задачи будет 303. Ну
давай...


----------
ага

Всего записей: 888 | Зарегистр. 23-07-2003 | Отправлено: 17:23 22-08-2004
makarka2004

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Помогите с ПХП нюком разобраться!

Всего записей: 2 | Зарегистр. 27-08-2004 | Отправлено: 09:44 27-08-2004
SafeWay



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
makarka2004
А сюда посмотреть: http://forum.ru-board.com/forum.cgi?action=filter&forum=24&filterby=topictitle&word=nuke ?

----------
Hosted by http://www.balthost.ee

Всего записей: 365 | Зарегистр. 28-12-2003 | Отправлено: 14:53 27-08-2004
Church



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
шаблонизация (приведенная тобой) будет тормозить, хоть и  
не на много, работу скрипта.  

 
И чем она будет тормозить? Преобразование происходит НЕ в момент генерации страницы, а при редактировании шаблона... Отредактировал шаблон - сгенерировался PHP-код, который просто инклюдится....
Мне лично проще испольховать "чистый" PHP+HTML без шаблонов.... Но не все знают PHP....
 

Цитата:
if($error == 1) $content = 'Error';  
if($error == 0) $content = 'Добро пожаловать на мою компагу';  

 
И дизайн для каждого условия ты тоже будешь в $content совать? Ладно, если дизайн одинаковый... А если хочешь разный? Как ни крути, а PHP придется применять.... В отличии от моего варианта...

Всего записей: 1199 | Зарегистр. 05-09-2003 | Отправлено: 13:49 08-09-2004
Sindel



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Альтернативное решение для листинга.

Код:
# Функция возвращает список файлов в каталоге (1-ый аргумент),
# исключая остальные файлы (остальные аргументы переданные в функцию).
function listing(){
$d = dir(array_shift($c = func_get_args()));
if(!is_object($d)) return array();
while($file = $d->read() !== FALSE) $array[$file] = $file;
$d->close();
unset($array['.'], $array['..']);
$array = array_diff($array, $c);  
return $array;
}

 
Самое короткое "время старта"

Код:
$start_time = array_sum(explode(' ', microtime());

 
Функция, которая удаляет из массива "плохие элементы"

Код:
# Плохие элементы - все что при проверке if'ом есть FALSE, кроме нуля.
# Пустой массив $array = array() - тоже плохой элемент
function clean($array){
foreach($array as $key => $value){
if(is_array($value)){
$value = clean($value);
if(!$value){
unset($array[$key]);
continue;
}
$b[$key] = $value;
}elseif(strlen($value) != 0){
$b[$key] = $value;
}
}
return $b;
}

Всего записей: 559 | Зарегистр. 22-08-2002 | Отправлено: 22:36 10-09-2004 | Исправлено: Sindel, 22:38 10-09-2004
Grigorev



Newbie
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Хотите всегда иметь на своем сайте актуальную информацию о:
.....




:moderator:
Читаем правила! Рекламный мусор запрещён.
Ты название темы читал?
— Svarga.

Всего записей: 2 | Зарегистр. 14-07-2004 | Отправлено: 12:35 28-09-2004 | Исправлено: Svarga, 23:10 30-09-2004
Ekib



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Млин не могу войти форум мне говорит пасиб за аворизацию и каздец




Проблемы с форумом разбираются в разделе «Помощь по Ру-Борд», в частности проблемы с авторизацией — в данной теме. — Svarga.

Всего записей: 701 | Зарегистр. 13-10-2004 | Отправлено: 22:24 15-10-2004 | Исправлено: Svarga, 00:42 16-10-2004
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ekib

Цитата:
Млин не могу войти форум мне говорит пасиб за аворизацию и каздец

http://forum.ru-board.com/topic.cgi?forum=13&topic=0847#1

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 22:38 15-10-2004
kisin

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
$num = count($lines);  // Число записей всего.  
$perpage = 7; // Кол-во, показываемых записей на странице.  
$pages_count = @ceil($num/$perpage);  
$pages .= 'Страницы:';  
  for($j=1;$j<=$pages_count;$j++)  
 {  
 
          if ($_GET['page'] != $j)  
          {  
             $pages .= ' <a href="?page='.$j.'"><b>'.$j.'</b></a> ';  
          }  
          else  
          {  
             $pages .= ' <b>'.$j.'</b> ';  
          }  
echo $pages;
 }

 
У меня глюк: выводит 2 раза надпись "Страницы:" - в первом случае Страницы: 1, а затем Страницы: 1 2 (сообщений в бд всего 8).

Всего записей: 613 | Зарегистр. 30-12-2003 | Отправлено: 20:54 25-10-2004
SafeWay



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
kisin
1) Тут не обсуждается...
2) Ок:
$num = count($lines);  // Число записей всего.  
$perpage = 7; // Кол-во, показываемых записей на странице.  
$pages_count = @ceil($num/$perpage);  
$pages = 'Страницы:';  
  for($j=1;$j<=$pages_count;$j++)  
 {  
   
          if ($_GET['page'] != $j)  
          {  
             $pages .= ' <a href="?page='.$j.'"><b>'.$j.'</b></a> ';  
          }  
          else  
          {  
             $pages .= ' <b>'.$j.'</b> ';  
          }  
echo $pages;  
 }  
А так?

Всего записей: 365 | Зарегистр. 28-12-2003 | Отправлено: 15:38 26-10-2004
kisin

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
А так?

А что собственно изменилось?
 
Ок, обсуждение тут: http://forum.ru-board.com/topic.cgi?forum=31&topic=6448

Всего записей: 613 | Зарегистр. 30-12-2003 | Отправлено: 20:29 26-10-2004
KADABRA



Великий покусатель
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Скрипт для распаковки zip архивов на сервере (в Unix PHP должен быть собран с --with-zip,  в Windows дожен быть подключен extension php_zip.dll из Collection of PECL modules for PHP ):

Код:
 
<?php
/*
*/
 
$zip = zip_open("e:/www/tmp/phpMyAdmin-2.6.0-pl2.zip");  // Zip file to unpack
$folder = substr(str_replace("\\", "/", __FILE__), 0, strrpos(str_replace("\\", "/", __FILE__), "/"))."/";
echo $folder."\n<br>\n";
$files = 0;
$folders = 0;
if ($zip)
{
    while ($zip_entry = zip_read($zip))
    {
        echo "<br>";
        $name = $folder . zip_entry_name($zip_entry);
        echo $name;
 
        if($name[strlen($name) - 1] == '/')
        {
            mkdir($name, 0755);
            $folders++;
        }
        elseif (zip_entry_open($zip, $zip_entry, "r"))
        {
            $buf = zip_entry_read($zip_entry, zip_entry_filesize($zip_entry));
            $file = fopen($name, "w");
            if($file)
            {
                    fwrite($file, $buf);
                    fclose($file);
                    $files++;
            }
            else
            {
                    echo "Error OPENING file $name";
            }
 
            zip_entry_close($zip_entry);
        }
 
    }
 
    echo "\n<br>Unpacked $files files and $folders folders";
 
    zip_close($zip);
 
}
else
{
    echo "<br>\n ERROR OPENING zip!";
}
 
?>
 


----------
Это не подпись.

Всего записей: 1718 | Зарегистр. 14-07-2003 | Отправлено: 16:55 08-11-2004 | Исправлено: KADABRA, 20:16 13-05-2005
dacuan

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
KADABRA
Небольшая приписка:
Для функций чтения zip-файлов PHP должен быть собран с опцией --with-zip

Всего записей: 545 | Зарегистр. 23-10-2003 | Отправлено: 17:37 08-11-2004
KADABRA



Великий покусатель
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
dacuan

Цитата:
Для функций чтения zip-файлов PHP должен быть собран с опцией --with-zip

Забыл указать. Спасибо.

----------
Это не подпись.

Всего записей: 1718 | Зарегистр. 14-07-2003 | Отправлено: 17:40 08-11-2004
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17

Компьютерный форум Ru.Board » Интернет » Web-программирование » PHP: Полезные (интересные и оригинальные) решения


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru