При загрузке XP сразу вылетает spoolsv.exe с ошибкой «Инструкция по адресу какому-то обратилась к памяти по адресу какому-то еще».
Как возможный вариант лечения, со здоровой XP (лучше если там нет принтеров) экспортируем ветку:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Printers
Удаляем на больной и импортируем здоровую ветку, перезагружаемся и заново устанавливаем принтер.
Еще можно тоже самое сделать с
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Print\Printers
но в моем случае хватило первой ветки.
По умолчанию в 11 опере в адресной строке отображается адрес без GETов, чтобы «вернуть как было раньше»:
Ctrl+F12->Расширенные->Навигация->Показывать полный веб-адрес в поле адреса
Часть формы где у нас инпут для логина:
echo "<input type='text' id='login' name='login' onblur='checkName(this.value, \"\")'/>"; echo " — <label for='login'>LOGIN</label><br/>"; echo "<span class='hidden' id='nameCheckFailed'>NOT AVAILABLE</span>"; echo "<span class='hidden' id='nameCheckOK'>AVAILABLE</span><br/>";
Яваскрипт, подключенный например где-то в head:
function checkName(input,response) { if (response != '') { failtext=document.getElementById('nameCheckFailed'); oktext=document.getElementById('nameCheckOK'); if (response == '1') { failtext.className='failtext'; oktext.className='hidden'; } else { failtext.className='hidden'; oktext.className='oktext'; } } else { if (input != '') { url='http://hostname/xml/checkUserName.php?q='+input; loadXMLDoc(url); } else { failtext.className='hidden'; oktext.className='hidden'; } } } var req; function loadXMLDoc(url) { if (window.XMLHttpRequest) { req = new XMLHttpRequest(); req.onreadystatechange=processReqChange; req.open("GET",url,true); req.send(null); } else if (window.ActiveXObject) { req = new ActiveXObject("Micrisoft.XMLHTTP"); if (req) { req.onreadystatechange=processReqchange; req.open("GET",url,true); req.send(); } } } function processReqChange() { if (req.readyState == 4) { if (req.status == 200) { response=req.responseXML.documentElement; method=response.getElementsByTagName('method')[0].firstChild.data; result=response.getElementsByTagName('result')[0].firstChild.data; eval(method + '(\'\', result)'); } else { alert("There was a problem retrieving the XML data:\n"+req.statusText); } } }
Файл /xml/checkUserName.php (в первой строчке инклуд подключения к БД, если не знаем что там и как — гуглим, еще конечно должна существовать таблица users с полем username, в которое пишутся логины)
<?php include ($_SERVER['DOCUMENT_ROOT']."/include/dbconfig.php"); header('Content-Type: text/xml'); echo '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'; function nameInUse($q) { $query=mysql_query("SELECT COUNT(*) FROM users WHERE username='".$q."'"); $result=mysql_fetch_array($query); switch($result[0]) { case '1' : return '1'; break; default: return '0'; } } echo '<response> <method>checkName</method> <result>'.nameInUse($_GET['q']).'</result> </response>'; ?>
И CSS:
span.hidden { display:none; } span.failtext { display: inline; background: #ffebea; } span.oktext { display: inline; background-color: #efffea;; }
На основе: http://wmdn.ru/javascript/example-of-check-login-using-ajax/
Вариант от WMDN: http://wmdn.ru/javascript/example-of-check-login-using-ajax/
function YearTextArg($year) { $year = abs($year); $t1 = $year % 10; $t2 = $year % 100; return ($t1 == 1 && $t2 != 11 ? "год" : ($t1 >= 2 && $t1 <= 4 && ($t2 < 10 || $t2 >= 20) ? "года" : "лет")); }
Источник: http://habrahabr.ru/blogs/php/53210/
/** * Сумма прописью * @author runcore */ function num2str($inn, $stripkop=false) { $nol = 'ноль'; $str[100]= array('','сто','двести','триста','четыреста','пятьсот','шестьсот', 'семьсот', 'восемьсот','девятьсот'); $str[11] = array('','десять','одиннадцать','двенадцать','тринадцать', 'четырнадцать','пятнадцать','шестнадцать','семнадцать', 'восемнадцать','девятнадцать','двадцать'); $str[10] = array('','десять','двадцать','тридцать','сорок','пятьдесят', 'шестьдесят','семьдесят','восемьдесят','девяносто'); $sex = array( array('','один','два','три','четыре','пять','шесть','семь', 'восемь','девять'),// m array('','одна','две','три','четыре','пять','шесть','семь', 'восемь','девять') // f ); $forms = array( array('копейка', 'копейки', 'копеек', 1), // 10^-2 array('рубль', 'рубля', 'рублей', 0), // 10^ 0 array('тысяча', 'тысячи', 'тысяч', 1), // 10^ 3 array('миллион', 'миллиона', 'миллионов', 0), // 10^ 6 array('миллиард', 'миллиарда', 'миллиардов', 0), // 10^ 9 array('триллион', 'триллиона', 'триллионов', 0), // 10^12 ); $out = $tmp = array(); // Поехали! $tmp = explode('.', str_replace(',','.', $inn)); $rub = number_format($tmp[ 0], 0,'','-'); if ($rub== 0) $out[] = $nol; // нормализация копеек $kop = isset($tmp[1]) ? substr(str_pad($tmp[1], 2, '0', STR_PAD_RIGHT), 0,2) : '00'; $segments = explode('-', $rub); $offset = sizeof($segments); if ((int)$rub== 0) { // если 0 рублей $o[] = $nol; $o[] = morph( 0, $forms[1][ 0],$forms[1][1],$forms[1][2]); } else { foreach ($segments as $k=>$lev) { $sexi= (int) $forms[$offset][3]; // определяем род $ri = (int) $lev; // текущий сегмент if ($ri== 0 && $offset>1) {// если сегмент==0 & не последний уровень(там Units) $offset--; continue; } // нормализация $ri = str_pad($ri, 3, '0', STR_PAD_LEFT); // получаем циферки для анализа $r1 = (int)substr($ri, 0,1); //первая цифра $r2 = (int)substr($ri,1,1); //вторая $r3 = (int)substr($ri,2,1); //третья $r22= (int)$r2.$r3; //вторая и третья // разгребаем порядки if ($ri>99) $o[] = $str[100][$r1]; // Сотни if ($r22>20) {// >20 $o[] = $str[10][$r2]; $o[] = $sex[ $sexi ][$r3]; } else { // <=20 if ($r22>9) $o[] = $str[11][$r22-9]; // 10-20 elseif($r22> 0) $o[] = $sex[ $sexi ][$r3]; // 1-9 } // Рубли $o[] = morph($ri, $forms[$offset][ 0],$forms[$offset][1],$forms[$offset][2]); $offset--; } } // Копейки if (!$stripkop) { $o[] = $kop; $o[] = morph($kop,$forms[ 0][ 0],$forms[ 0][1],$forms[ 0][2]); } return preg_replace("/\s{2,}/",' ',implode(' ',$o)); } /** * Склоняем словоформу */ function morph($n, $f1, $f2, $f5) { $n = abs($n) % 100; $n1= $n % 10; if ($n>10 && $n<20) return $f5; if ($n1>1 && $n1<5) return $f2; if ($n1==1) return $f1; return $f5; }
Пример использования:
num2str(878867.15);
выведет:
восемьсот семьдесят восемь тысяч восемьсот шестьдесят семь рублей пятнадцать копеек
Источник: http://habrahabr.ru/blogs/php/53210/
Вариант в 1 строку:
echo substr_replace(preg_replace("/[^0-9?]/si","",$products[$j]['price'])-preg_replace("/[^0-9?]/si","",$products[$j]['special']),substr(preg_replace("/[^0-9?]/si","",$products[$j]['price'])-preg_replace("/[^0-9?]/si","",$products[$j]['special']),-4,1).",",-4,1)." р.";
Пример с учетом того, что имеем дату в формате mysql DATETIME
например
$dt="2012-11-08 09:25:37";
Вариант 1 более правильный, когда нам нужно отделить дату в формате XXXX-XX-XX (год-месяц-день):
$s_dt=substr($dt,0,10); $num_days=ceil((strtotime($s_dt)-time())/86400); echo $num_days;
Вариант 2, подошел бы в том случае, если бы мы имели отдельно год, месяц и день, но все же:
$s_year=substr($dt,0,4); $s_month=substr($dt,5,2); $s_day=substr($dt,8,2); $num_days=ceil((mktime(0,0,0,$s_month,$s_day,$s_year)-time())/86400); echo $num_days;
http://ru.faqstorage.com/faq/question/195/
http://zendframework.ru/forum/index.php?topic=2869.0