Функция за заявка към база данни

Това е втората ми публикация от серията “Уроци“. Този път съм приготвил една проста функция за sql заявка:
function db_query ($sql)
{
mysql_query(‘SET NAMES utf8’);
return mysql_query($sql);
if (mysql_error())
{
$log=fopen($GLOBALS[‘path’].’logs.txt’,’r+’);
fwrite($log, mysql_error().’|||’.$sql.’|||’.time().”n”);
fclose($log);
}
}

Тъй като голяма част от проектите на програмистите трябва да поддържат и други символи освен тези от латиницата им се налага да използват някакъв по-специален енкодинг. В случая на нас ни върши перфектна работа utf8.
Тъй като php има така да се каже проблем с енкодинга се налага да се търсят някакви решения на този проблем. Примерно ‘б’ php ще го сметне като 2 символа, а ‘b’ като 1 символ. В предния си пост показах една сравнително елегантна функция за съкращаване на текст, която работи с всякакви символи. При работата с бази данни php прави проблем с енкодинга и всичко различно от латиница би се счупило.
Решение на този проблем е да се пише mysql_query(‘SET NAMES utf8’); преди всяка друга sql заявка, но много по-добро решение е това да се вмъкне във функция.
Ето и какво прави нашата функция за sql заявки.
Първо задава подходящия енкодинг, след това изпълнява и заявката с код $sql.
Примерно $sql е равно на ‘SELECT * FROM news’ или пък на ‘INSERT INTO users (username, pass) VALUES (“‘.mysql_real_escape_string($username).'”,”‘.md5($username.$pass).'”)’ – всякакъв sql код.
SQL грешки може да има поради много възможности – опит за хак, ваша грешка или потребител, който си играе или не знае какво прави.
Хубаво е да се записват тези грешки.
if (mysql_error())
{
$log=fopen($GLOBALS[‘path’].’logs.txt’,’r+’);
fwrite($log, mysql_error().’|||’.$sql.’|||’.time().”n”);
fclose($log);
}
Ако има sql грешка изпълняваме функцията fopen с път $path ($GLOBALS[‘path’]) и име на файла logs.txt. Задаваме правя върху файла r+ – т.е. може да се чете и да се пише в него. Файлът logs.txt трябва да е записан в същата директория, където ще се ползва и функцията. В този файл записваме
sql грешката, sql кода + времето и задаваме нов ред с n. Можете да запишете и ip на потребителя, който е направил грешката с $_SERVER[‘REMOTE_ADDR’].
След това затваряме файла с fclose.
Всичко би трябвало да работи.

Съкращаване на текст с php

Тъй като се чудих какво да правя сега и реших да пусна една публикация, в която да покажа една простичка, но елегантна функция за съкращаване на текст:
function trimtext($text, $max=100) {
if (mb_strlen($text, 'UTF-8')>$max) {
$text=mb_substr($text, 0, $max, 'UTF-8');
$text=mb_substr($text,0,mb_strrpos($text,' ','UTF-8'),'UTF-8').'…';
}
return $text;
}

И да обясня: mb_strlen – проверява дължината. Препоръчвам да използвате mb_strlen, тъй като само strlen няма да работи с кирилица и другите “special chars”. Ако дължината е по-голяма от $max (150) ще съкрати текста.
функцията mb_substr съкращава текста. Пак препоръчвам да се използва за “special chars”. Задължително му задайте енкодинг “UTF-8”, иначе може и да не сработи както очаквате. Първият показател ($text) е мястото, вторият показател е началото, а третият показател е краят. В нашия случай краят е променливата $max, която по-подразбиране е равна на 150.
функцията strrpos – намира мястото на зададения $needle. В нашия случай е просто интервал.
И така какво се случва. Да кажем, че в $text ще има 455 символа. Ние ще проверим дали символите са повече от 150. 455>150, следователно ще съкрати до 150-ия символ. След което ще проверим последното място на празното поленце. Да кажем, че ще ни върни, че това е 143 символ. След това отново ще съкратим като пак ще съкращаваме полученият резултат от първото съкращаване. След това пак избираме да е от началото до последният интервал, който се намира на 143 място. Така текстът ще бъде съкратен до 143 символ. В друг случай ще бъде съкратен до 145, в друг до 147 и т.н., но няма да надминава 150 и така дизайнът на вашата система няма да се развали по никакъв начин.

Това беше първият ми пост от серията “Уроци”. Надявам се, че съм ви бил полезен. Ако имате някакви идеи, напишете коментар :)

StarCraft 2 Wings Of Liberty Retail излезе

Дългоочакваната игра, StarCraft 2 Wings Of Liberty Retail, най-после излезе. Разбира се играта бързо се появи и по торент тракерите, а хората теглят ли не теглят. По самия трейлър на StarCraft 2 се разбира, че играта е просто невероятна. Не след дълго ще излязат и хаковете за StarCraft 2, чийтовете и т.н. В най-скоро време очаквам Garena да пусне StarCraft 2 сървър. Много мои приятели са решили да си купят StarCraft 2 оригинална за да могат да играят в BattleNet. В най-скоро време ще се сдобия с нея и ще напиша нейното ревю. Все пак този блог не е само за уеб дизайн и SEO :).

Вършат ли работа социалните мрежи

2009 беше годината на социалните мрежи и тогава все повече хора по света почнаха да ги ползват. В това число включвам и нас българите – медиите в България почнаха яко да говорят за Facebook и българските потребители в него се умножиха многократно. Има и други популярни социални мрежи като twitter, edno23 (само в българия и то слабо), mixx, digg, slashdot,propeller и т.н. В тази статия искам да обърна особено внимание на bookmark социалните мрежи, където реално вие добавяте линк към някаква по-интересна новина. Типичен пример е svejo.net (собственост на netinfo) – в този сайт много български уебмастъри споделят страници от своя сайт с надеждата те да станат “свежи” (да имат много гласове). Ако са “свежи”, те веднага отиват на първата страница на svejo.net и получават доста кликове (до над 2000 клика), което си е сериозен трафик от друг сайт.
Та bookmark социалните мрежи са много добър начин за докарване на повече трафик към вашия сайт, но освен това са и перфектни за seo оптимизация на вътрешните страници на вашия уеб сайт. За пример те са идеални за seo на сайтове за филми, игри, музика, онлайн магазини и много други. Тъй като при тях често има ново съдържание google роботът ги посещава изключително често, индексира новите страници, но индексира и вашите. Тъй като аз ползвам често bookmark социалните мрежи за оптимизацията на вътрешните ми страници реших да си създам един прост social submitter, чрез който (както се разбира по името) автоматично ще събмитвате в социалните мрежи.
Та в крайна сметка: социалните мрежи са идеални за докарване на повече трафик към вашия уеб сайт и SEO.

SEO на сайтове за филми

SEO на сайтове за филмиФилмите са едни от трудните SEO ниши. Вече съм пробвал с един мой сайт да го оптимизирам за ключовите думи “кино” и “филми”, а резултатите бяха сравнително добри – 2 страница за думите “кино” и “филми”. Много от другите SEO-та наблягат на точно тези две ключови думи, но пропускат един факт – макар и да има ужасно много търсения (това най-вероятно е от това, че на руски, сръбски и македонски пак се пише от време на време думата “филми”), то реално не се правят много посещения и се чудят как големите (Cinefish.bg) правят по цели 6000-7000 посещения, а реално техният сайт се класира толкова зле за “кино” и “филми”. Като оставим това, че имат доста партньори, техният трафик идва от заглавията на филмите. Наскоро и аз почнах да оптимизирам сайта си за филми за новоизлезлите филми като “Inception” и “Twilight: Saga Eclipse“. Благодарение на тези два филма си добавих още 300 уникални посещения, а “Inception” излезе по кината съвсем наскоро и чакам бум от посетители. Затова силно препоръчвам всеки SEO оптимизатор да набляга особено и на другите си страници освен основните тъй като една много по-голяма част от посещенията може да идва и от тях.

Дарт Вейдър ограбва банка

Вчера мъж се опитал да обере банка преоблечен като Дарт Вейдър!!! За съжаление Люк не е бил там да го спре.
Всички си мислели, че е шега, но това далеч не било така.
Нашият човек взел пари и избягал, а банката все още не знае точно колко :)
Найс а? Living in America…

SEO на сайта

Смятам, че вече е крайно време да пооправя martox.eu, дизайна му и да го seo оптимизирам по основните ключови думи, тъй като ми дотегна да си купувам хостове и домейни, а да не ги реализирам. За пример: купих няколко домейна и хостинг плана от space.bg, а нищо не съм направил по сайтовете освен да им направя едно дизайнче и да ползвам готова система от рода на joomla. Това са си просто пари на вятъра. В съвсем най-скоро време ще почна да го seo оптимизирам по стандартния начин + няколко хитринки, които съм научил през времето си като seo оптимизатор. В същото време почвам един личен проект – онлайн магазин от мащаба на shopping.bg, get.bg и другите родни онлайн магазини. Надявам се да съм добра конкуренция на останалите, въпрчеки че си личи, че shopping.bg яко купуват линкове и за множество ключови думи на челни места. Системата съм решил да я напиша сам без да ползвам готови, дизайнът естествено пак ще е от мен и ще трябва да впрегна всички усилия за да направя една качествена seo оптимизация пък дано преуспея. Аз вече съм горд собственик на няколко онлайн магазина за парфюми, които държат челни места в google за подходящите ключови думи и виждам, че има пари в това. Малко съм занемарил блога (хах, аз дори не съм почвал да пиша, но това ще се промени съвсем скоро. само да имам муза) :)