-
19 АПР 20120
-
11 АПР 20120
FullCalendar от Adam Shaw
|
FullCalendar is a jQuery plugin that provides a full-sized, drag & drop calendar like the one below. It uses AJAX to fetch events on-the-fly for each month and is easily configured to use your own feed format (an extension is provided for Google Calendar). It is visually customizable and exposes hooks for user-triggered events (like clicking or dragging an event). It is open source and dual licensed under the MIT or GPL Version 2 licenses.
Ссылка: http://arshaw.com/fullcalendar/ -
21 ФЕВР 20120
Функция вывода времени в текстовом формате
function mk_myTime($tonpage) {
if ($tonpage == 0)
return '';
$h = $tonpage / 3600; //часы
if ($pos = strpos($h, '.'))
$h = substr($h,0,$pos);
$timenothour = $tonpage - ($h * 3600);
$m = $timenothour / 60; //минуты
if ($pos = strpos($m, '.'))
$m = substr($m,0,$pos);
$sec = $timenothour - ($m * 60); //секунды
$s = '';
if (intval($h)) $s = declension($h, array("час", "часа", "часов")).' ';
if (intval($m)) $s .= declension($m, array("минуту", "минуты", "минут")).' ';
return $s .= declension($sec, array("секунду", "секунды", "секунд")).' ';
}
//Функция Из предыдущего поста ПРАВИЛЬНО СКЛОНЯЕМ
function declension($int, $expressions, $showint = true) {
settype($int, "integer");
$count = $int % 100;
if ($count >= 5 && $count <= 20) {
$result = ($showint? $int." ":"").$expressions['2'];
} else {
$count = $count % 10;
if ($count == 1) {
$result = ($showint? $int." ":"").$expressions['0'];
} elseif ($count >= 2 && $count <= 4) {
$result = ($showint? $int." ":"").$expressions['1'];
} else {
$result = ($showint? $int." ":"").$expressions['2'];
}
}
return $result;
}
mk_myTime - эта функция принимает один параметр – время в формате unix_timestamp. -
20 ФЕВР 20120
Функция склонения слов
function declension($int, $expressions, $showint = true) {
settype($int, "integer");
$count = $int % 100;
if ($count >= 5 && $count <= 20) {
$result = ($showint? $int." ":"").$expressions['2'];
} else {
$count = $count % 10;
if ($count == 1) {
$result = ($showint? $int." ":"").$expressions['0'];
} elseif ($count >= 2 && $count <= 4) {
$result = ($showint? $int." ":"").$expressions['1'];
} else {
$result = ($showint? $int." ":"").$expressions['2'];
}
}
return $result;
}echo 'Ваш заказ на '.price_format($total_price).' '.declension($total_price, array('рубль', 'рубля','рублей'), false).'.';В первом мы передаем само число, во втором параметре массив из трех элементов содержащий три вариации написания склоняемого слова, а в третьем параметре задаем флаг отображения числа. Если параметр стоит true, то будет выводится само число в результате работы функции, иначе выведется просто нужное склонение. -
19 ФЕВР 20120
Функция рекурсивного создания директорий
function rmkdir($path, $mode = 0777) {
$path = rtrim(preg_replace(array("/\\/", "/\/{2,}/"), "/", $path), "/");
$e = explode("/", ltrim($path, "/"));
if(substr($path, 0, 1) == "/") {
$e[0] = "/".$e[0];
}
$c = count($e);
$cp = $e[0];
for($i = 1; $i < $c; $i++) {
if(!is_dir($cp) && !@mkdir($cp, $mode)) {
return false;
}
$cp .= "/".$e[$i];
}
return @mkdir($path, $mode);
} -
18 ФЕВР 20120
Поиск уникальных значений в массиве по ключу
function remove_dups($array, $row_element) {
$new_array[0] = $array[0];
foreach ($array as $current) {
$add_flag = 1;
foreach ($new_array as $tmp) {
if ($current[$row_element]==$tmp[$row_element]) {
$add_flag = 0; break;
}
}
if ($add_flag) $new_array[] = $current;
}
return $new_array;
}
Имеем массив:
2012 - январь
2012 - февраль
2012 - январь
Сортируем его по ключу month$array2 = remove_dups($array, 'month');
Результат выполнения:
2012 - январь
2012 - февраль -
13 ФЕВР 20120
Функция генерации тего (ключевых слов) на PHP
Выберает из текста вперемешку только слова от 4 символов длинной, генерирует 10($nNumOfTags) тегов.<?php
$nNumTags = 10;
$szContent = strip_tags("Это очень умный текст из которого будут делаться теги");
$arr_tags = explode(' ', $szContent);
shuffle($arr_tags);
$nNumOfTags = 0;
$str_tag = '';
foreach ( $arr_tags as $tvalue ) {
$tvalue = trim($tvalue);
preg_match('/[a-zA-Zа-яА-Я]{4,}/', $tvalue, $t_v);
if ($t_v[0]) {
$str_tag .= $t_v[0].', ';
$nNumOfTags ++;
}
if ($nNumOfTags > $nNumTags)
break;
};
//$_POST['tags'] = substr($str_tag, 0, strlen($str_tag)-1);
$tags = substr($str_tag, 0, strlen($str_tag)-1);
echo $tags;
//Результат: теги, которого, делаться, умный, текст, очень, будут, -
11 ФЕВР 20120
Скрипт древовидных комментариев PHP
|index.php<?
$conf['db'] = array(
"server"=>"localhost",
"user"=>"root",
"pass"=>"",
"base"=>"superbase"
);
mysql_connect($conf['db']['server'], $conf['db']['user'], $conf['db']['pass'])or die("Could not connect: ".mysql_error());
mysql_select_db($conf['db']['base'])or die("Could not select: ".mysql_error());
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET 'utf8'");
if($_GET['op'] === 'clear-all'){
mysql_query("DELETE FROM les_comments");
header("Location: index.php");
}
$time = time();
if(isset($_POST['uname'])){
$uname = mysql_real_escape_string($_POST['uname']);
setcookie("unamecom", $uname, $time + 1209600); // время существования куки две недели
}elseif(isset($_COOKIE["unamecom"])){
$uname = mysql_real_escape_string($_COOKIE["unamecom"]);
}else{
$uname = "Аноним";
}
if(!empty($_POST['uname']) && !empty($_POST['message']) && $_POST['op'] == 'add-comment') {
$comment = mysql_real_escape_string(strip_tags($_POST['message'], "<p><b><i><font><img>")); // удалим левые теги
$ip = $_SERVER['REMOTE_ADDR'];
$client = $_SERVER['HTTP_USER_AGENT'];
$content_id = intval($_POST['content']);
$parent_id = intval($_POST['parent']);
mysql_query("INSERT INTO les_comments (`id`, `name`, `ip`, `client`, `comment`, `content_id`, `parent_id`, `time`) VALUES (NULL, '$uname', '$ip', '$client', '$comment', '$content_id', '$parent_id', '$time')");
}
/*
*/
$content_id = 0; // это ключевой идентификатор от конкретной статьи(комменты то разные в каждой статье, помним?)
// выводим комменты
$msg = array();
$result = mysql_query("SELECT * FROM les_comments WHERE content_id='$id'");
while($row = mysql_fetch_assoc($result)){
$msg[] = $row;
}
$count = count($msg);
$parent = 0;
$form = "<div class='editor'>
<form id='comment-form' autocomplete='off' method='post'>
<input type='hidden' name='op' value='add-comment'>
<input type='hidden' name='content' value='{$id}'>
<input type='hidden' name='parent' value='{$parent}'>
<table border='0'><tr><td><input id='uname' name='uname' type='text' value='{$uname}' maxlength='20' size='25' /></td><td>Ваше имя*</td></tr></table>
<textarea name='message' rows='5' cols='65'></textarea><br><input id='submit' name='signup' type='submit' value='Добавить' /></div>
</form>";
$i = 0;
if($count){
$comments = "<div class='comments-all'><span style='float:left'>Всего комментариев: {$count}</span><span class='add-comment'>Написать комментарий</span></div>".$form;
$msg = crazysort($msg);
while($i<$count){
$margin = $msg[$i]['level'] * 20;
$date = date("d.m.Y в H:i",$msg[$i]['time']);
$comments .= "<div id='msg{$msg[$i]['id']}' style='margin-left: {$margin}px'><div class='comment-title'><span style='float:left'><b>{$msg[$i]['name']}</b> <small>({$date})</small></span><span class='comment-ans' id={$msg[$i]['id']}>ответить</span></div><div class='comment-message'>{$msg[$i]['comment']}</div></div>";
$i++;
}
}else{
$comments = "<div class='comments-all'><span style='float:left'>Эту новость ещё не комментировали</span><span class='add-comment'>Написать комментарий</span></div>".$form;
}
// функция сортирует массив по деревьям
function crazysort(&$comments, $parentComment = 0, $level = 0, $count = null){
if (is_array($comments) && count($comments)){
$return = array();
if (is_null($count)){
$c = count($comments);
}else{
$c = $count;
}
for($i=0;$i<$c;$i++){
if (!isset($comments[$i])) continue;
$comment = $comments[$i];
$parentId = $comment['parent_id'];
if ($parentId == $parentComment){
$comment['level'] = $level;
$commentId = $comment['id'];
$return[] = $comment;
unset($comments[$i]);
while ($nextReturn = crazysort($comments, $commentId, $level+1, $c)){
$return = array_merge($return, $nextReturn);
}
}
}
return $return;
}
return false;
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7"/>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<link rel="stylesheet" type="text/css" href="http://yui.yahooapis.com/2.7.0/build/reset/reset-min.css"/>
<title>Древовидные комментарии для Вашего сайта</title>
<meta name="keywords" content="http://amatar.by комменты"/>
<link rel='stylesheet' type='text/css' href='css/style.css'/>
<script type='text/javascript' src='js/jquery-1.5.2.min.js'></script>
<body>
<div style='margin:0 auto; width:780px'>
<?
echo $comments;
echo "<center><a href='?op=clear-all'>очистить все комменты</a></center>";
?>
</div>
<script>
$(function () {
$('.add-comment').click(function(){
var editor = $('.editor');
if (editor.is(":hidden")){
editor.slideDown();
}else{
editor.slideUp();
}
return false;
});
$('.comment-ans').click(function(){
var $editor = $('.editor');
$editor.hide();
var mid = $(this).attr("id");
var clone = $editor.clone();
$editor.remove();
setTimeout(function(){
$(clone).css("margin", "5px 0 5px 20px");
$(clone).insertAfter("div#msg"+mid).slideDown();
$("input[name=parent]").val(mid);
}, 200);
});
});
</script>
</body>
</html>
sqlCREATE TABLE IF NOT EXISTS `les_comments` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`name` VARCHAR(50) NOT NULL,
`ip` VARCHAR(15) NOT NULL,
`client` VARCHAR(250) NOT NULL,
`comment` TEXT NOT NULL,
`content_id` INT(11) NOT NULL DEFAULT '0',
`parent_id` INT(11) NOT NULL DEFAULT '0',
`time` INT(10) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=MYISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;
style.csshtml,body{background-color:#C9CCCD;color:#000000;height:100%;font:normal 14px/20px arial}
.clear{clear:both}
.comments-all{font-size:12px;background-color:#E4E6E6; background-image:url('/images/h-rule.gif');background-repeat:no-repeat;margin-top:30px;margin-bottom:20px;padding:10px 20px; height:20px}
.add-comment{border-bottom:1px dashed #000; cursor:pointer; float:right}
.comment-title{font-size:12px; background-color:#EAEBEB; margin-top:20px; padding:5px 20px;height:20px}
.comment-message{font-size:12px; background-color:#F1F2F2; padding:5px 20px}
.comment{padding:40px 50px}
.editor{display:none; margin-top:1px;padding-top:20px; padding-left:20px;background-color:#F3F5F5}
.comment-ans{float:right; border-bottom:1px dashed #444; cursor:pointer}
#uname{font-size:16px; font-weight:bold;padding:5px;margin:10px 10px 10px 0}
#submit{padding:10px;margin:15px 0;font-weight:bold}
Категории:
Оставить на заметку в:

