Вывод ошибочной страницы:
<p>Ошибочная страница: <span id="spanpage"> </span>
<script type="text/javascript">
$('#spanpage').html($.cookie("error404reason"));
</script>
</p>
Так можно при помощи jQuery вывести ошибочную страницу.
Вывод ошибочной страницы:
<p>Ошибочная страница: <span id="spanpage"> </span>
<script type="text/javascript">
$('#spanpage').html($.cookie("error404reason"));
</script>
</p>
Так можно при помощи jQuery вывести ошибочную страницу.
Эта записка о частой необходимости программиста, создающего сайты. Все выглядит так: в базе данных тип DATE, который в РНР выглядит как обычная строка “2011-06-13”. Наша цель преобразовать эту дату в формат, пригодный для использования функцией date(). А с помощью этой функций мы сможем получить все что угодно:
Все настолько просто
$phpdate = strtotime( $mysqldate );
Используем так
$pattMonth = ‘M’;
$pattDay = ‘j’;
$pattYear = ‘Y’;
$phpdate = strtotime($sqlDate);
$day = date($pattDay, $phpdate);
$mon = date($pattMonth, $phpdate);
$year = date($pattYear, $phpdate);
Реальный пример, как получить дату вида 27 декабря, 2011
$phpdate = strtotime($date);
$day = date(‘j’, $phpdate); // day
$mon = getRusDate(date(‘M’, $phpdate)); // month
$year = date(‘Y’, $phpdate); //year 2011
$tdate = “$day $mon, $year”;
echo $tdate;
На всякий случай код для обратного действия – записи из РНР в базу данных
$mysqldate = date( ‘Y-m-d’, $phpdate );
$mysqldatetime = date( ‘Y-m-d H:i:s’, $phpdate );
Получение полной временной метки
$mysqldate = $arrayData[$id][‘date’].’ ‘.$arrayData[$id][‘time’];
$phpdate = strtotime($mysqldate);
$need = date(‘r’, $phpdate);
На входе у нас “2011-04-29 02:54:00”, на выходе “Thu, 14 Jul 2011 22:14:00 +0400”. Это живой пример для RSS.
Для передачи данных используем функцию:
$D[‘materials’] = $this->data->getMaterialsByCategory($category, $neededMaterialsCount, $start);
Для вывода используем код по образцу:
$m = $materials;
if (is_array($m)) foreach ($m[‘idS’] as $id)
{
$image_properties = array(
‘src’ => $m[$id][‘imgSrc’],
‘alt’ => $m[$id][‘imgAlt’],
‘width’ => ‘140’,
‘height’ => ‘140’,
‘title’ => $m[$id][‘imgTitle’]
);echo’
‘;
}
echo $paging;
?>
$paging выведет постраничную навигацию, согласно тем настройкам, которые в контроллере.
А теперь посмотрим более оптимизированный код, и выводящий зоны. Зоны это когда нужно допустим вывести список новостей в 2 разных блока, в каждый допустим по 15. В первый блок будем выводить с 0 элемента по 14, во второй с 14 по 29. Показан код только для второго блока:
$start = 14;
$end = 29;
$counter = 0;
if (is_array($m)) foreach ($m[‘idS’] as $id)
{
$counter++;
if (!(($counter > $start) AND ($counter < $end))) continue;
$row = $m[$id];
$image_properties = array(
‘src’ => $row[‘bigImgSrc’],
‘alt’ => $row[‘imgAlt’],
‘width’ => ‘160’,
‘height’ => ‘120’,
‘title’ => $row[‘imgTitle’]
);
$phpdate = strtotime($row[‘date’]);
$day = date(‘j’, $phpdate); // day
$mon = getRusDate(date(‘M’, $phpdate)); // month
$year = date(‘Y’, $phpdate); //year 2011
$tdate = “$day $mon, $year”;
echo ‘‘.$row[‘title’].’ ‘.$tdate.’
‘.character_limiter(cleanText($row[‘body’]),480).’‘;
}
В новых версиях системы управления это уже привычный атрибут. И очень удобный. Когда вы впервые заходите в админку, ставится вечный кук о том что вы админ, и выводится в правом нижнем углу иконка редактирования.
Здесь только главный код на выводе в конце (end.php). stickynote.css и jquery.stickynote.js по умолчанию включены. Просто ничего не трогайте!
Предложили мне как-то посмотреть какую-то сео конференцию. Там было рассказано как на адсенсе 5000 доляров заработать быстро. И там была эта идея, как бы яндекса находит “найдено по ссылке”. Под влиянием этой информации я написал код, с необходимым функционалом. Сейчас же верю что это не действует и это полу-дорвей.
Вот так выглядит это чудо на сайте:
А вот и сам код.
Код в контроллере:
$R = $this->data->getArrayOfAllPublicMaterials(10000);
foreach($R as $category=>$arrayData)
{
foreach($arrayData[‘idS’] as $id)
{
$seoHrefs[] = $arrayData[$id][curDateInUrlSett()];
}
}
unset($R);
$seoHrefs[] = site_url($this->ccnm.”/map”);
$seoHrefs[] = site_url();
shuffle($seoHrefs);
$D[‘seoHrefs’] = $seoHrefs;
$seoKeys = ‘покер скачать, рулетка казино, нибиру онлайн, окна купить’;
$seoKeys = explode(‘,’,$seoKeys);
shuffle($seoKeys);
$D[‘seoKeys’] = $seoKeys;
Код на выводе:
” class=”noStyle greyText”> …
При изготовлении обычного сайта восстает вопрос о автоматическом меню сайта по категориям. Более качественные сайты обычно выводят меню вручную, так как автоматизировать меню сложно, например как его сортировать? Но для более – менее говенного сайта вполне сойдет автомат с сортировкой категорий по алфавиту.
В контроллере получаем данные категорий:
$catData = $this->data->getFullCategoryData();
$D[‘categoryData’] = $catData;
В шее (neck.php) виводим внутри UL:
if (isset($categoryData))
foreach ($categoryData as $va)
{
$class = ”;
if ($navSelectTab == $va[‘category’]) $class = ‘current_page_item’;
echo ‘- ‘.$va[‘title’].’
‘;
}
?>
Тут же приведу код, который строит массив, с которого можно получить ссылку на категорию по самой категории. Такой код используется на элитных сайтах, где меню строится вручную, то есть в дизайне прописывается.
$catHrefs = array();
foreach ($catData as $cat)
{
$catHrefs[$cat[‘category’]] = $cat[‘catHref’];
}
$D[‘catHrefs’] = $catHrefs;
Раньше я начинал строить такое с использованием отдельных функций, но позже понял что лучше их не использовать. По этому здесь только анонимные функции.
Современный пример
function ajax()
{
$.ajax({
type: “POST”,
url: “”,
data: {test: ‘test’},
success: function(data){
p = tryEval(‘(‘ + data + ‘)’);
if(p===false)
{
return false;
}
if (typeof(p[‘error’]) != ‘undefined’)
{
if (p[‘error’] == ‘FAIL’) return false;
}
else
{
// do success here
}
},
error: function(s, e){
return false;
},
timeout: 25000
});
}
Вот идентичный пример, но без использования return false
function ajaxGet()
{
$.ajax({
type: “POST”,
url: ““,
data: {},
success: function(data){
p = tryEval(‘(‘ + data + ‘)’);
if(p===false)
{
CB.attr(‘value’, ‘Помилка!’);
}
else
{
if (typeof(p[‘error’]) != ‘undefined’)
{
CB.attr(‘value’, ‘Помилка!’);
}
else
{
CB.attr(‘value’, ‘OK’);
}
}},
error: function(s, e){
CB.attr(‘value’, ‘Помилка!’);
},
timeout: 25000
});
}
Тут используется функция tryEval, можете и ее скачать у меня.
function tryEval(code)
{
var res;
try
{
res = eval(code)
}
catch(e)
{
Log(‘———— * * * eval error * * * ——————– < [ ' + e.name + ' ]');
res = false;
}
return res;
}
Когда мы строим приложение на этом фреймворке, мы используем такую конструкцию для обращения к базе данных
$this->db->where(’email’, $e);
Обычно одной базы хватает, и все идет как по маслу. Но когда у вас появится необходимость использовать две базы данных, руководство фреймворка рекомендует использовать такую конструкцию
$this->mailDb = $this->load->database(‘maildb’, TRUE);
$this->mailDb->limit(1);
При использовании я наткнулся на парадокс – если пользователи базы данных одинаковые, то $this->db-> “переписывается”, и начинает обращаться ко второй базе, в моем случае это конфигурация базы данных maildb. Конечно же это генерирует ошибки базы данных. Можно в таком случае обойти ошибки, если сначала вызывать всё со стандартной базы $this->db-> , а потом уже со второй базы $this->mailDb->. Но удобно ли это? На долго ли такого извращения хватит?
Я рекомендую просто создать нового пользователя для второй базы данных, и использовать две базы параллельно, вперемешку и как угодно. Обычно на хостинге для каждой базы прилагается свой пользователь. Например у меня на хостинге на тарифе VIP 100 баз данных и 100 пользователей, так что проблем не возникает.
Мы хотим, чтобы при нажатии на ссылку, вызывалась наша функция, но чтобы браузер не следовал ссылке. Вот как это делается.
$(‘#test-click’).click(function(){
vashaFunction();
return false;
});
Из приведенного кода именно return false; выполняет функцию по предотвращению следования браузера по ссылке.
Данная идея возникла когда я отключил интернет из страха о поражении ПК через грозу. У меня Jquery загружается с статического хранилища яндекса:
Так говорят быстрее, сервер меньше грузит. Может оно и так, но Яндекс не Бог, иногда и сам висит.
Сразу же оговорюсь. Один день Яндекс так висел, что много сайтов загружались на половину. Особенно меня удивил сайт webmasters.ru, висевший секунд 30. По-этому лично я отказался от использования Яндексовского кода, и всем рекомендую гугловский. Мне сложно припомнить когда гугл висел. Все-таки американцы – профи!
Задача в том, что бы подключать библиотеку со своего сервера, в случае если Яндексовский не доступен. Как это сделать? Все оказалось просто:
Собственно это работает, так как в случае неудачи скачивания библиотеки с Яндекса, он тут же, не дожидаясь window.onload начинает грузить вашу библиотеку. Вот только путь http://localhost/blohher/_/js/jquery.js придется написать полный и ваш! Лично я сейчас его на РНР настрою, чтобы все было автоматически.