Полезные коды в PHP и MySQL

9.87K
.
L!MP (11.02.2011/18:10)
Krite, Вот так, вроде, по короче:
[php]
function morph($int, $expressions) {
if (count($expressions) < 3)
$expressions[2] = $expressions[1];

$count = $int % 100;

if ($count >= 5 && $count <
Да
.
L!MP
Функция получения изображения из .bmp файлов для дальнейшего ресайза, конвертации и т.д

function imageCreateFromBMP($filename) {  
    if (! $f1 = fopen($filename,"rb"))
        return false; 

    $FILE = unpack("vfile_type/Vfile_size/Vreserved/Vbitmap_offset", fread($f1,14)); 
    if ($FILE['file_type'] != 19778)
        return false; 

    $BMP = unpack(
    'Vheader_size/Vwidth/Vheight/vplanes/vbits_per_pixel'. 
    '/Vcompression/Vsize_bitmap/Vhoriz_resolution'. 
    '/Vvert_resolution/Vcolors_used/Vcolors_important', fread($f1,40)); 

    $BMP['colors'] = pow(2,$BMP['bits_per_pixel']); 
    
    if ($BMP['size_bitmap'] == 0)
        $BMP['size_bitmap'] = $FILE['file_size'] - $FILE['bitmap_offset']; 
        
    $BMP['bytes_per_pixel'] = $BMP['bits_per_pixel']/8; 
    $BMP['bytes_per_pixel2'] = ceil($BMP['bytes_per_pixel']); 
    $BMP['decal'] = ($BMP['width']*$BMP['bytes_per_pixel']/4); 
    $BMP['decal'] -= floor($BMP['width']*$BMP['bytes_per_pixel']/4); 
    $BMP['decal'] = 4-(4*$BMP['decal']); 
    
    if ($BMP['decal'] == 4)
        $BMP['decal'] = 0; 

    $PALETTE = array(); 

    if ($BMP['colors'] < 16777216) { 
        $PALETTE = unpack('V'.$BMP['colors'], fread($f1,$BMP['colors']*4)); 
    } 

    $IMG = fread($f1,$BMP['size_bitmap']); 
    $VIDE = chr(0); 

    $res = imagecreatetruecolor($BMP['width'],$BMP['height']); 
    $P = 0; 
    $Y = $BMP['height']-1; 
    while ($Y >= 0) { 
        $X=0; 
        while ($X < $BMP['width']) { 
            if ($BMP['bits_per_pixel'] == 24) 
                $COLOR = unpack("V",substr($IMG,$P,3).$VIDE); 
            elseif ($BMP['bits_per_pixel'] == 16) {   
                $COLOR = unpack("n",substr($IMG,$P,2)); 
                $COLOR[1] = $PALETTE[$COLOR[1]+1]; 
            } elseif ($BMP['bits_per_pixel'] == 8) {   
                $COLOR = unpack("n",$VIDE.substr($IMG,$P,1)); 
                $COLOR[1] = $PALETTE[$COLOR[1]+1]; 
            } elseif ($BMP['bits_per_pixel'] == 4) { 
                $COLOR = unpack("n",$VIDE.substr($IMG,floor($P),1)); 
                if (($P*2)%2 == 0)
                    $COLOR[1] = ($COLOR[1] >> 4);
                else
                    $COLOR[1] = ($COLOR[1] & 0x0F); 
                    
                $COLOR[1] = $PALETTE[$COLOR[1]+1]; 
            } elseif ($BMP['bits_per_pixel'] == 1) { 
                $COLOR = unpack("n",$VIDE.substr($IMG,floor($P),1)); 
                if     (($P*8)%8 == 0) $COLOR[1] =  $COLOR[1]        >>7; 
                elseif (($P*8)%8 == 1) $COLOR[1] = ($COLOR[1] & 0x40)>>6; 
                elseif (($P*8)%8 == 2) $COLOR[1] = ($COLOR[1] & 0x20)>>5; 
                elseif (($P*8)%8 == 3) $COLOR[1] = ($COLOR[1] & 0x10)>>4; 
                elseif (($P*8)%8 == 4) $COLOR[1] = ($COLOR[1] & 0x8)>>3; 
                elseif (($P*8)%8 == 5) $COLOR[1] = ($COLOR[1] & 0x4)>>2; 
                elseif (($P*8)%8 == 6) $COLOR[1] = ($COLOR[1] & 0x2)>>1; 
                elseif (($P*8)%8 == 7) $COLOR[1] = ($COLOR[1] & 0x1); 
                
                $COLOR[1] = $PALETTE[$COLOR[1]+1]; 
            } else 
                return FALSE; 

            imagesetpixel($res,$X,$Y,$COLOR[1]); 
            $X++; 
            $P += $BMP['bytes_per_pixel']; 
        } 

        $Y--; 
        $P+=$BMP['decal']; 
    } 

    fclose($f1); 

    return $res; 
}

p.s кто автор без понятия, нашел это в каком то движке
.
Veter15
Нужен код для зачислении при каждом посте на форуме 1го балла.Джон 3.2.2.
_____
Не рекламь свой сайт
.
Vl@dimir
♪♪♪ЗвЭрЪ ЙА♪♪♪
замени в forum/say.php
mysql_query("UPDATE `users` SET `balans`='" . ($datauser['balans'] + 1) . "' ,`postforum`='" . ($datauser['postforum'] + 1) . "', `lastpost` = '$realtime' WHERE `id` = '$user_id'");
.
Функция отображния времени добавленного сообщения как в социальных сетях
$time_difference = time() - $session_time; 
	$seconds = $time_difference; 
	$minutes = round($time_difference / 60 );
	$hours = round($time_difference / 3600 ); 
	$days = round($time_difference / 86400 ); 
	$weeks = round($time_difference / 604800 ); 
	$months = round($time_difference / 2419200 ); 
	$years = round($time_difference / 29030400 ); 
	if($seconds <= 60) {// Секунды
		echo "$seconds секунд назад"; 
	} else if($minutes <=60) {// Минуты
		if($minutes==1) {
			echo "одну минуту назад"; 
		} else {
			echo "$minutes минут назад"; 
		}
	} else if($hours <=24) {// Часы
		if($hours==1) {
			echo "один час назад";
		} else {
			echo "$hours часов назад";
		}
	} else if($days <= 7) {// Дни
		if($days==1) {
			echo "один день назад";
		} else {
			echo "$days дней назад";
		}
	} else if($weeks <= 4) {// Недели
		if($weeks==1) {
			echo "одну неделю назад";
		} else {
			echo "$weeks недель назад";
		}
	} else if($months <=12) {// Месяцы
		if($months==1) {
			echo "один месяц назад";
		} else {
			echo "$months месяцев назад";
		}
	} else {
		if($years==1) {
			echo "один год назад";
		} else {
			echo "$years года\лет назад";
		}
	}
}
//Пример использования
$session_time = time() - 3600;
echo time_stamp($session_time);
.
L!MP, Так не проще:
/*
-----------------------------------------------------------------
Правильные окончания
-----------------------------------------------------------------
*/
function completions($str = '', $array = '')
{
    $rest = substr($str, -1);

    if ($rest == 1) {
        $out = $array[0];
    } else
        if ($rest == 1 or $rest == 2 or $rest == 3 or $rest == 4) {
            $out = $array[1];
        } else {
            $out = $array[2];
        }

        return $out;
}

Пример:
echo completions($count, array('сообщение', 'сообщения', 'сообщений'));
.
Regan, получается Котеров, дурачек
.
L!MP (15.03.2011/00:52)
Regan, получается Котеров, дурачек
Мне кажется он просто забатанился?
.
hooligan
Krite, подскажите как добавить функцию отображния времени добавленного сообщения как в социальных сетях в форум 3.2.2
// Время поста
                    echo ' <span class="gray">(' . date("d.m.Y / H:i", $res['time'] + $set_user['sdvig'] * 3600) . ')</span><br />';

если например функцию назвать timehooli...
.
Regan (14.03.2011/23:47)
L!MP, Так не проще:
[php]/*
-----------------------------------------------------------------
Правильные окончания
-----------------------------------------------------------------
*/
function
Данная функция не верна! Она не правильно отображает количество от 12 до 14! Не гоните на Котерова. И не надо удалять мои сообщения по сабжу!!!
Всего: 360