CyberForum.ru - Форум программистов и сисадминов
Вернуться   Форум программистов и сисадминов CyberForum.ru > Форум web-программистов > Форум PHP

Ответ Создать новую тему
 
Старый 02.07.2008, 12:02   #1
Даниэль
Новичок
 
Регистрация: 02.07.2008
Сообщений: 2
Репутация: 0 (0)
По умолчанию Обмен готовыми решениями

Код PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<?PHP 
echo getfilesize($_GET['name']); 
 
// Функция для определения размера 
function getfilesize($filename) 
{ 
  // Проверяем, существует ли файл 
  if(!file_exists($filename)) return "файл не существует"; 
  // Определяем размер файла 
  $filesize = filesize($filename); 
  // Если размер файл превышает 1024 байта, 
  // пересчитываем размер в Кбайты 
  if($filesize > 1024) 
  { 
    $filesize = (float)($filesize/1024); 
    // Если размер файл превышает 1024 Кбайта, 
    // пересчитываем размер в Мбайты 
    if($filesize > 1024) 
    { 
      $filesize = (float)($filesize/1024); 
      // Округляем дробную часть до 
      // первого знака после запятой 
      $filesize = round($filesize, 1); 
      return $filesize." Мб"; 
    } 
  } 
  else 
  { 
    return $filesize." байт"; 
  } 
} 
?> 
Взято с [Ссылка удалена!]

 Комментарий модератора romchiksoad
Если хотите поделиться готовыми решениями, то выкладывайте их в эту тему, а не ссылки на Ваш форум и сайт

Последний раз редактировалось romchiksoad; 12.08.2010 в 01:05. Причина: Ссылка на форум и сайт
Даниэль вне форума
Другие темы раздела
PHP Объектное программирование
Всем привет. Обращаюсь с прозьбой! Объясните пожалуйста как с помощью ООП в пхп собирать сайт по частям. Пожалуйста, мне нужна теория и примеры, а не ссылки на гугл. Буду очень благодарен!. Объектное программирование
Скрипт вывода даты PHP
Необходим скрипт вывода даты. Принцип, если новость была добавлена от 1 до 59 сек назад выводим " кол-во сек назад", если мин назад, значит вывести "1 мин. назад", если 2 мин назад, то "2 мин. назад" и так до 59 мин, если 60 минут назад значит вывести "час назад". Если добавлено 1 день назад, нужно.... Скрипт вывода даты
Старый 18.08.2011, 03:35   #11
Денис Н.
Форумчанин
 
Аватар для Денис Н.
 
Регистрация: 17.08.2011
Адрес: Москва
Сообщений: 896
Репутация: 272 (272)
По умолчанию Re: Обмен готовыми решениями

Исправляюсь
index.php
Код PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
 
class Paginator
{
    private $page;    // текущая страница 
    private $qww;     // запрос с выборкой
    private $query;   // подзапрос, который можно добавить к основному запросу
    private $fields;  // массив полей выборки
    private $table;   // таблица выборки
    private $npp;     // количество записей на страницу
    private $limit;   // количество записей в БД
    /*
    Конструктор принимает параметры:
    string $T   - таблица выборки
    array  $F   - поля выборки
    int    $NPP - количество записей на страницу
    string $Q   - подзапрос, если имеется
    */
    public function __construct($T, $F, $NPP, $Q)
    {
        $this -> fields = $F;
        $this -> table  = $T;
        
        $this -> query  = $Q; 
        $this -> npp    = $NPP;
        
        $select_count = 'SELECT COUNT(*) FROM ' . $this->table;
        $qw = mysql_query($select_count) or die(mysql_error());
        
        $this -> limit = mysql_result($qw,0); // задание кол-ва записей
       
        $this->page = ((isset($_GET['page'])?
        (is_numeric($_GET['page'])&&!empty($_GET['page']))?
        ($_GET['page'] < ($this->limit/$this->npp+1) && $_GET['page'] > 1)?
        $_GET['page']
        :1:1:1) - 1);  // магические тернарники -- обработка ГЕТа
        
        $this->start = 1 + $this->page * $this->npp; // определение начального индекса лимитирования
        
            $f = implode(',', $this->fields ); // распарсивание полей в строку
            
            $select_page = "SELECT {$f} FROM {$this->table} {$this->query} //запрос выборки  
                            LIMIT {$this->start}, {$this->npp}";
                            
            $this->qww = mysql_query($select_page) or die(mysql_error());    
    }
    /* Метод вывода выборки*/
    public function Fetch()
    {
        $out = '';
        $out .= '<table border=1 width=770 cellspacing=0>';
        while($row = mysql_fetch_assoc($this->qww))
        {
            $out .= '<tr>';
            for($i = 0; $i < count($this->fields); $i ++)
                $out .= '<td style=width:400px>'.$row[$this->fields[$i]].'</td>';
            $out .= '</tr>';           
        }   
        $out .= '</table>';
        echo $out; // собрали все в $out и выкинули на экран    
    }
    /*Метод вывода пагинации*/
    public function View()
    {
        $Numofpages = ceil($this->limit / $this->npp); // переменная для цикла в шаблоне
        $i = 0;
        include('p1.htm'); // шаблон
    }
}
 
// Запуск
 
// Создаем объект
$Paginator =  new Paginator('ipb_task_logs', array('log_title', 'log_ip', 'log_desc'), 5, 'ORDER BY log_id DESC');
 
// Используем методы
$Paginator -> View();
$Paginator -> Fetch();
$Paginator -> View(); // Пагинаторы стоят сверху и снизу контента для наглядности
?>
 
И довольно-таки простой тестовый шаблон
p1.htm
Код HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
 
<hr />
<a href="?page=<?php echo ($this->page) ?>">&lt;&lt;&nbsp;&nbsp;</a>
<?php while($i < $Numofpages): ?>
<?php if($i == $this->page): ?>
<span style="background-color:#ffcfcf"><a href="?page=<?php echo ++$i ?>"><?php echo $i ?></a></span>
<?php else: ?>
<span style="background-color:#cfcfff"><a href="?page=<?php echo ++$i ?>"><?php echo $i ?></a></span>
<?php endif ?>
<?php endwhile ?>
<a href="?page=<?php echo ($this->page+2) ?>">&nbsp;&nbsp;&gt;&gt;</a>
<hr />
 
Денис Н. вне форума
Старый 18.08.2011, 05:41   #12
Sulik78
Форумчанин
 
Аватар для Sulik78
 
Регистрация: 23.12.2010
Адрес: CCCP
Сообщений: 600
Репутация: 439 (192)
По умолчанию Re: Обмен готовыми решениями

пагинатор
как на habre

Код PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
 
function printPages($table, $onpage, $name)
{
    /* параметры
      $table - таблица db
      $onpage - кол-во на странице
      $name - имя переменной $_GET
    */
    
    $start = !empty($_GET[$name]) ? (int)$_GET[$name] : 0;
    $start = $start > 1 ? ($start-1)*$this->_onpage : 0;
    
    $sql = 'SELECT COUNT(`id`) AS `count` FROM `' .$table. '`';
    $query = mysql_query($sql);
    $all = mysql_fetch_object($query)->count;
    
    $pages = $start > 0 ? '<a href="?page='.ceil($start/$onpage).'">&#8592; назад</a>' : '';
    $pages .= ($start/$onpage) < ($all/$onpage-1) ? '<a href="?page='.(ceil($start/$onpage)+2).'">вперед &#8594;</a>' : '';
    $curent = ceil($start/$onpage)+1;
    $r = 5;
    for ($i = 1; $i < ceil($all/$onpage)+1; $i++)
    {
        $pages .= (ceil($all/$onpage) - $curent > $r) && $i == ceil($all/$onpage) ? ' ... ' : '';
        $pages .= ($curent > $r + 1) && $i == 2? ' ... ' : '';
        if (($i < $curent+$r && $i > $curent-$r) || $i == 1 || $i == ceil($all/$onpage))
        {
            $pages .= $curent == $i ? '<strong>'.$i.'</strong>' : '<a href="?page='.$i.'">'.$i.'</a>';
        }
    }
        
    return $pages == '<strong>1</strong>' ? '' : $pages;    
}
 
Добавлено через 13 минут
в 11 строке
*$this->_onpage на $onpage надо поменять
Sulik78 вне форума
Старый 18.08.2011, 16:57   #13
hellmin
Новичок
 
Регистрация: 13.07.2011
Адрес: Санкт-Петербург
Сообщений: 54
Репутация: 28 (28)
По умолчанию Re: Обмен готовыми решениями

Пагинация
Писал этого монстра под свои нужды. Может кому пригодится.
Собственно сам класс.
Код PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
<?php
class pagination
{
    private $totalRows; //Общее количество записей
    private $perPage; //Количество записей на странице
    private $pages; //Количество страниц
    private $page; //Текущий номер страницы
    private $separator; //Разделитель для добавления $_GET параметра
    private $countDisplay; // Количество отображаемых ссылок слева и справа от текущей
    private $url; // Адрес
    private $config = array(); // Параметры. По умолчанию в __construct либо через __set
 
    function  __construct()
    {
        $this->config = array(
            'viewDots'=>true, // Отображение точек если количество страниц больше количества отображаемых ссылок
            'viewArrows'=>true,  // Отображение ссылок на первую и на последнюю страницу
            'leftArrow'=>"<<", // Ссылка на первую страницу
            'rightArrow'=>">>", // Ссылка на последнюю страницу
            'dots'=>"..." //
        );
        $this->page = @$_GET['page'];
    }
    
    function  __set( $name, $value )
    {
        $this->config[$name] = $value;
    }
 
    public function setParams( $totalRows, $perPage, $countDisplay )
    {
        $this->totalRows = $totalRows;
        $this->perPage = $perPage;
        $this->countDisplay = $countDisplay;
        $this->pages = $this->countPages();
        if( !is_numeric( $this->page ) || $this->page<1 || $this->page>$this->pages )
            $this->page = 1;
    }
 
    public function createPagination( $url )
    {
        $this->url = $url;
        $arr = array();
 
        $this->separator = $this->getSeparator();
 
        for( $i=1 ; $i<=$this->pages ; $i++ )
        {
            if( ( $this->page - $this->countDisplay <= $i && $this->page + $this->countDisplay >= $i) )
            {
                if( $this->page == $i )
                    $arr[$i] = array( 'name'=>$i, 'link'=>false );
                else
                    $arr[$i] = array( 'name'=>$i, 'link'=> $this->url . $this->separator . "page=" . $i );
            }
        }
 
        if( $this->config['viewDots'] )
        {
            if( $this->page > $this->countDisplay + 1 )
                $arr[0] = array( 'name'=>$this->config['dots'], 'link'=>$this->url . $this->separator . "page=" . ( $this->page - $this->countDisplay - 1 ) );
            if( $this->page < $this->pages - $this->countDisplay)
                $arr[$this->pages+1] = array( 'name'=>$this->config['dots'], 'link'=>$this->url . $this->separator . "page=" . ( $this->page + $this->countDisplay +1 ) );
        }
 
        if( $this->config['viewArrows'] )
        {
            if( $this->page != 1 )
                $arr[-1] = array( 'name'=>$this->config['leftArrow'], 'link'=>$this->url . $this->separator . "page=1" );
            else
                $arr[-1] = array( 'name'=>$this->config['leftArrow'], 'link'=>false );
 
            if( $this->page != $this->pages )
                $arr[$this->pages+2] = array( 'name'=>$this->config['rightArrow'], 'link'=>$this->url . $this->separator . "page=".$this->pages );
            else
                $arr[$this->pages+2] = array( 'name'=>$this->config['rightArrow'], 'link'=>false );
        }
 
        ksort($arr);
        return $arr;
    }
 
    private function countPages()
    {
        return ceil( $this->totalRows / $this->perPage );
    }
 
    private function getSeparator()
    {
        if( strpos( $this->url, "?") )
            return "&";
        return "?";
    }
}
?>
И использование.
Код PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php
$pagination = new pagination();
$pagination->leftArrow = "Первая";
$pagination->rightArrow = "Последняя";
$pagination->setParams( 312, 15, 4 );
$arr = $pagination->createPagination( "http://localhost/index.php");
?>
<html>
<style type="text/css">
span, a {
    padding: 5px;
    margin: 1px;
    border: 1px solid gray;
}
</style>
<body>
<?php
foreach( $arr AS $key=>$value ) {
    if( $value['link'] )
        echo "<a href='" . $value['link'] . "'>" . $value['name'] . "</a>";
    else
        echo "<span>" . $value['name'] . "</span>";
}
?>
</body>
</html>
hellmin вне форума
После регистрации реклама в сообщениях будет скрыта
Старый 08.02.2012, 11:11   #14
crautcher
Форумчанин
 
Регистрация: 27.05.2011
Адрес: Lithuania
Сообщений: 979
Репутация: 308 (308)
По умолчанию Re: Обмен готовыми решениями

многии юзают функцию mail() для отправки эмайлов , решил выложит альтернативный вариант для отправки писем с вашего эмайла через smtp
Код PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
 
# настроен под мэйл.ру
$config['smtp_username'] = '********@mail.ru'; //Смените на имя своего почтового ящика.
$config['smtp_port'] = '25'; // Порт работы. Не меняйте, если не уверены.
$config['smtp_host'] = 'smtp.mail.ru'; //сервер для отправки почты
$config['smtp_password'] = '*************'; //пароль
$config['smtp_charset'] = 'UTF-8'; //кодировка сообщений.
$config['smtp_from'] = 'TEST'; //Ваше имя - или имя Вашего сайта. Будет показывать при прочтении в поле "От кого"
 
 
function smtpmail($mail_to, $subject, $message, $headers='') {
        global $config;
        $SEND =   "Date: ".date("D, d M Y H:i:s") . " UT\r\n";
        $SEND .=   'Subject: =?'.$config['smtp_charset'].'?B?'.base64_encode($subject)."=?=\r\n";
        if ($headers) $SEND .= $headers."\r\n\r\n";
        else
        {
                $SEND .= "Reply-To: ".$config['smtp_username']."\r\n";
                $SEND .= "MIME-Version: 1.0\r\n";
                $SEND .= "Content-Type: text/plain; charset=\"".$config['smtp_charset']."\"\r\n";
                $SEND .= "Content-Transfer-Encoding: 8bit\r\n";
                $SEND .= "From: \"".$config['smtp_from']."\" <".$config['smtp_username'].">\r\n";
                $SEND .= "To: $mail_to <$mail_to>\r\n";
                $SEND .= "X-Priority: 3\r\n\r\n";
        }
        $SEND .=  $message."\r\n";
         if( !$socket = fsockopen($config['smtp_host'], $config['smtp_port'], $errno, $errstr, 30) ) {
              return false;
         }
 
            if (!server_parse($socket, "220", __LINE__)) return false;
 
            fputs($socket, "HELO " . $config['smtp_host'] . "\r\n");
            if (!server_parse($socket, "250", __LINE__)) {
               fclose($socket);
               return false;
            }
            fputs($socket, "AUTH LOGIN\r\n");
            if (!server_parse($socket, "334", __LINE__)) {
               fclose($socket);
               return false;
            }
            fputs($socket, base64_encode($config['smtp_username']) . "\r\n");
            if (!server_parse($socket, "334", __LINE__)) {
               fclose($socket);
               return false;
            }
            fputs($socket, base64_encode($config['smtp_password']) . "\r\n");
            if (!server_parse($socket, "235", __LINE__)) {
               fclose($socket);
               return false;
            }
            fputs($socket, "MAIL FROM: <".$config['smtp_username'].">\r\n");
            if (!server_parse($socket, "250", __LINE__)) {
               fclose($socket);
               return false;
            }
            fputs($socket, "RCPT TO: <" . $mail_to . ">\r\n");
 
            if (!server_parse($socket, "250", __LINE__)) {
               fclose($socket);
               return false;
            }
            fputs($socket, "DATA\r\n");
 
            if (!server_parse($socket, "354", __LINE__)) {
               fclose($socket);
               return false;
            }
            fputs($socket, $SEND."\r\n.\r\n");
 
            if (!server_parse($socket, "250", __LINE__)) {
               fclose($socket);
               return false;
            }
            fputs($socket, "QUIT\r\n");
            fclose($socket);
            return TRUE;
}
 
function server_parse($socket, $response, $line = __LINE__) {
        global $config;
    while (substr($server_response, 3, 1) != ' ') {
        if (!($server_response = fgets($socket, 256))) {
                  return false;
                }
    }
    if (!(substr($server_response, 0, 3) == $response)) {
                  return false;
        }
    return true;
}
 
 
crautcher вне форума
Ответ Создать новую тему

Похожие темы
Тема Автор
JavaScript Обмен готовыми решениями
Предлагаю обмениваться готовыми, рабочими!, скриптами. Выкладываю первую библиотеку из 35 скриптов. Может кому и пригодится скачать библиотеку (1,2 M)
tanos
Pascal (Паскаль) Задачник с решениями.
Добрый день. Подскажите пож-та название книги или дайте пож-та ссылку к какой нибудь книге где есть задачи с решениями по Турбо Паскаль. А то уже устал гуглить. так как толкового ничего не нашлось... Есть задачник без решения... или просто разбирают по одной задаче на тему... Жду ваших советов.
BakhtiyarZ
MS Access поделитесь готовыми шпорами по информационным сисетмам(субд)
поделитесь пожалуйста готовыми шпорами по информационным сисетмам(субд)
ЛиляЛат
C# для начинающих .NET 4.x Может кто дать сайт с бесплатными готовыми курсовыми
может кто дать сайт с бесплатными готовыми курсовыми? ну или скинуть готовую, может завалялась где
Давид Монтиков
С++ для начинающих Задачи на с++ с решениями
Given an integer number N THAT IS NOT LESS THAN 2. OUTPUT THE SMALLEST NATURAL DIVISOR OF THE N (NOT INCLUDING 1) input 15 output 3 ПОМОГИТЕ ПОЖАЛУЙСТА СРОЧНО РЕШИТЬ
Mary Franco
Опции темы

Текущее время: 04:25. Часовой пояс GMT +4.

Компьютерный форум программистов и сисадминов
Powered by vBulletin® Version 3.8.7 PL2
Copyright ©2000 - 2012, vBulletin Solutions, Inc.
Рейтинг@Mail.ru