Създаване PDF файл от SQL заявка

В този пост искам да ви покажа как може да създавате .pdf файл след като имате някакви данни (най-често получени от базата с данни).
Нека предположим че имаме php код, чрез който ще правим заявка към базата с данни и върнатите резултати от там ще бъдат поставени в новосъздаден .pdf файл. Ето и кода с който става това:

<?php

require_once(‘DBConnection.php’);
require_once(‘fpdf.php’);

//съдържанието на файла fpdf.php

//може да намерите тук

$query = “SELECT * FROM table WHERE id IN(1,2,3,4,5)”;

$result = mysql_query($query) or die(mysql_error());
$num_rows = mysql_num_rows($result);

//за всеки ред от БД,

//добавяме поле към съответната колона

$colum_name = array();
$out = array();
$columns = mysql_num_fields($result);

for($i = 0; $i < $columns; $i++){

$l = mysql_field_name($result, $i);
$colum_name[$i] = $l;

}

while($l = mysql_fetch_array($result)){

for($i = 0; $i < $columns; $i++){

if($colum_name[$i] == ‘birthday’)

$out[$i] .= (date(‘d-M-Y’, strtotime($l[$colum_name[$i]])).”\n”);

else

$out[$i] .= ($l[$colum_name[$i]].”\n”);

}

}

mysql_close();

//създаваме нов PDF файл с помощта на

//библиотеката fpdf.php

$pdf=new FPDF();
$pdf->AddPage();

//Задаваме позицията на имената на колоните
$Y_Fields_Name_position = 20;
//Задаваме позицията на самите колони под имената им
$Y_Table_Position = 26;

//Първо се създава всяко име на поле
//Задава се сив фон н имената на полетата

$pdf->SetFillColor(232,232,232);

//Задава се удебелен фон на имената на полетата

$pdf->SetFont(‘Arial’,’B’,12);
$pdf->SetY($Y_Fields_Name_position);
$pdf->SetX(10);
$pdf->Cell(30,6,’Fisrt name’,1,0,’L’,1);
$pdf->SetX(40);
$pdf->Cell(30,6,’Surname’,1,0,’L’,1);
$pdf->SetX(70);
$pdf->Cell(10,6,’Sex’,1,0,’L’,1);
$pdf->SetX(80);
$pdf->Cell(55,6,’Email’,1,0,’L’,1);
$pdf->SetX(135);
$pdf->Cell(40,6,’Phone’,1,0,’L’,1);
$pdf->SetX(175);
$pdf->Cell(40,6,’Birthday’,1,0,’L’,1);

//Добавя се нов ред във файла
$pdf->Ln();

//Записват се стойностите в колоните

//За всяка една клетка се задават размери

$pdf->SetFont(‘Arial’,”,12);

$pdf->SetY($Y_Table_Position);
$pdf->SetX(10);
$pdf->MultiCell(30,6,$out[0] ,1);

$pdf->SetY($Y_Table_Position);
$pdf->SetX(40);
$pdf->MultiCell(30,6,$out[1] ,1);

$pdf->SetY($Y_Table_Position);
$pdf->SetX(70);
$pdf->MultiCell(10,6,$out[2] ,1);

$pdf->SetY($Y_Table_Position);
$pdf->SetX(80);
$pdf->MultiCell(55,6,$out[3] ,1);

$pdf->SetY($Y_Table_Position);
$pdf->SetX(135);
$pdf->MultiCell(40,6,$out[4] ,1);

$pdf->SetY($Y_Table_Position);
$pdf->SetX(175);
$pdf->MultiCell(40,6,$out[5] ,1);

$pdf->SetY($Y_Table_Position);

//Създават се кутиите (boxes) за всеки един ред

$i = 0;
$pdf->SetY($Y_Table_Position);
while($i < $num_rows){

$pdf->SetX(10);
$pdf->MultiCell(200,6,”,1);
$i = $i +1;

}

//Връща се изходния pdf файл

$pdf->Output();

?>

По този начин може да създавате автоматично Ваши .pdf файлове, които да съдържат справки направени от данните в базата с дани. Показаният код в този пост е само сървърната част, необходима за създаването на .pdf файла и записването на данните в  него. JavaScript частта е същата както при обикновените Ajax заявки.

CSS само за Chrome и Safari

За да изпилзвате CSS, който желаете да важи само за  Webkit браузърите(Chrome and Safari) напишете следния код:

@media screen and (-webkit-min-device-pixel-ratio:0){
#selector{
height: 20px;
margin-top: 5px;
}
}

Кодът в червено са нормални CSS редове. Например ако искате да зададете височина и дължина за елемент с id = “my-element”, вместо червения текст поставете:

#my-element{

width:200px;

height:100px;

}


CSS само за Mozilla Firefox

Въпреки че Mozilla Firefox е един от най-добрите браузъри, понякога се случва дадени CSS правила да не важат за него. Затова в следващия ред код ще Ви покажа как да задавате CSS правила, които ще бъдат отчитани само от браузъра Mozilla Firefox.


@-moz-document url-prefix() {
.selector {
color:lime;
}
}

Кодът в червено са нормални CSS редове. Например ако искате да зададете височина и дължина за елемент с id = “my-element”, вместо червения текст поставете:

#my-element{

width:200px;

height:100px;

}

Кодът се разпознава във всички версии на Mozilla Firefox.

CSS само за Internet Explorer – IE

От всички известни браузъри ми е най-неприятно да програмирам за IE, не за друго, а само заради факта, че някак си единствено Microsoft се “цепят от колектива”. За това е много важно за всеки web програмист да знае, как може да пише CSS правила единствено и само за IE, без това да касае работата на страниците в другите браузъри. Аз лично препоръчвам да си направите отделен .css файл само за форматирането в IE. Например може да го кръстите IE-style.css. След което може да напишете в <head></head> частта от Вашата страница следния код:

<!–

[if IE]>
<link rel=”stylesheet” type=”text/css” href=”css/IE-login.css” />
<![endif]

–>

Този код ще бъде разпознат само и единствено от IE и той ще се изпълнява само за този браузър. Така написан кода ще се изпълнява за всички версии на IE. Ако искате вашия CSS да се изпълнява само за определена версия на IE, разгледайте този пост How To Create an IE-Only Stylesheet.

В посочения пост има и доста хакове, които могат да Ви помогнат в различни ситуации.

CSS само за Opera Browser

Много често се случва определени правила зададени чрез CSS да не важат за  браузъра Opara. Това е доста досадно за един опитен web програмист искащ всичко в страниците му да работи както трябва във всички по-известни браузъри. В следващия ред код ще Ви покажа как да задавате CSS правила които ще бъдат отчитани само от браузъра Opera.

@media all and (-webkit-min-device-pixel-ratio:10000), 
not all and (-webkit-min-device-pixel-ratio:0) {        
#element {
css rule
}
}

Кодът в червено са нормални CSS редове. Например ако искате да зададете височина и дължина за елемент с id = “my-element”, вместо червения текст поставете:

#my-element{

width:200px;

height:100px;

}

Кодът се разпознава и в по-старите версии на Opera.

Центриране на таблица с CSS

Понякога таблиците използвани в web страниците имат нужда от центриране в самите страници. Старият начин да се направи това беше:

 <table align="center"> </table>

Но атрибута “align” вече е премахнат от новите стандарти за HTML.

Ако се опитате да центрирате таблицата чрез използването на CSS “text-align: center;” както в случая:

 <table style="text-align:center;">

или пък чрез:

 <div style="text-align:center;"> <table> </table> </div>

няма да имате успех, таблицата ще продължава да е центрирана от ляво на страницата, единствено нейното съдържание ще бъде центрирано спрямо нея.

Ако се питате защо се получава така, ами много просто: защото свойството “text-align” оказва въздействие на вътрешното съдържание на елемента за който е зададено, а не за самият елемент спрямо неговия родител.

Ето един начин да направите центрирана таблица в CSS кода.
 table.center{
margin-left:auto;
margin-right:auto;
}

Разбира се Вашия HTML трябва да изглежда така:

 <table class="center"> </table>

Ако се използва този случай браузъри като  Mozilla и Opera ще центрират таблицата, но за съжаление Internet Explorer версиите от 5.5 и нагоре, ще се нуждаят от допълнителен CSS код:

 body {text-align:center;}
Има и друг начин да направите центрирането на таблицата.

Това става чрез използването на проценти и на CSS свойството “width”

 table.center { 
width:70%;
margin-left:15%;
margin-right:15%;
}
Може да използвате и друг CSS трик

Ако искате Вашата таблица да бъде с точно фиксиране дължина (100px) , използвайте следния CSS код:

 div.container{
width:98%;
margin:1%;
}
table.center{
text-align:center;
margin-left:auto;
margin-right:auto;
width:100px;
}
tr,td{
text-align:left;
}

“text-align: center” се използва специално за Internet Explorer, който няма да работи правилно без това свойство. За съжаление в този случай “text-align: center” ще центрира съдържанието на всички клетки в таблицата, но ние предотвратяваме това като настройваме елементите “tr” и “td” да бъдат подравнени в ляво.

Вашия HTML трябва да бъде като този:

 <div class="container">
<table class="center">
</table>
</div>

Надявам се да съм бил полезен при центрирането на Вашите таблици.

PHP автоматично форматиране на дата

В този пост ще Ви покажа как може автоматично в PHP да форматирате в движение датите показвани във Вашите web страници.
Сигурно Ви се е случвало да получите дата от базата с данни, но не точно във формата в който Ви трябва. Например базата данни Ви връща дата (1981-10-29), а на Вас Ви трябва същата тази дата да бъде представена в сайта в друг формат, например (29 -Nov-1981). Това става много лесно като се използва стандартната за PHP функция date(), със съответните параметри за нея.
Следващия код е за конвертирането в нашият случай:

date(‘d-M-Y’, strtotime($row[‘date’]));

За да може функцията date() да форматира нашата дата ($row[‘date’]) в желания от нас формат, трябва същата тази дата да подадем на друга стандартна функция за PHP strtotime().

strtotime() получава като параметър някаква дата под формата на текст (стринг) и превръща този текст в число, което показва секундите изтекли от 00:00 часа на 01 януари 1970 година до датата която е подадена във функцията.

Функцията date() използва за първи параметър  желания формат под формата на точно подреден стринг с помощта на английски букви. Тук са разделени със знака “-” за по-добра видимост. Всяка една от тези букви казва на date() как точно да подреди изписването на датата. В нашият случай стринга ‘d-M-Y’ казва да се подреди датата като първо се напише деня от месеца с число от две цифри, след това се напише месеца съкратено с букви и накрая се изпише цялата година с число.

Сега ще Ви дам няколко различни примера (за нашата дата) с различни начини на форматиране:

 date(‘Y-M-d’, strtotime(“1981-10-29”));//връща 1981-Nov-29

date(‘D-M-Y’, strtotime(“1981-10-29”));//връща Sun-Nov-1981

date(‘Y-F-D’, strtotime($row[‘date’]));//връща 1981-November-Sun

date(‘d-m-y’, strtotime($row[‘date’]));//връща 29-10-81

Разбира се функцията date() може да се използва и за форматиране на часове и на комбинации от дати и часове. Следващия пример е за комбинирано форматиране на дата и час.

date(‘l jS \of  F Y h:i:s A’,strtotime(“1981-10-29”));//връща Monday 8th of August 2005 00:00:00 PM

Върнатия час е 00:00:00 часа защото не сме задали час в нашия стринг.

За пълното описание на функцията date() и strtotime() може да посетите официалния сайт на PHP.

 

 

Как да инсталираме Android приложение на телефон

В този пост ще Ви покажа как много бързо да инсталирате Ваше приложение от домашния компютър на мобилното Ви устройство с Android операционна система.

Искам да отбележа, че някои мобилни устройства се нуждаят преди свързването с компютъра да бъдат разрешени за инсталиране на приложения през USB кабела им (разрешаване на USB debigging) . Би трябвало това да става чрез менюто Settings–>Applications–>Development и от там трябва да се сложи отметка на опцията USB debugging.

След като всичко е готово свържете Вашето мобилно устройство чрез USB кабел към компютъра, на който се намира разработеното приложение.

Отворете конзолата на Windows и отидете в директорията, в която се намира програмата  (командата) adb. Ако се чудите  как точно става това може да прочете последните абзаци на поста Как да започнем с Android.

Вече сме готови за командата adb  и можем да напишем в конзолата следното:

adb install D:\java\workspace\AppName\bin\AppName.apk

и да натиснем Enter.

За много кратко време Вашето приложение трябва да се е инсталирало на мобилното устройство, при което ще получите съобщение за успех.

Командата  adb install се нуждае от пълния път до .apk файла на Вашето приложение. В нашия случай приложението се казва “AppName” и се намира в D:\java\workspace\AppName\. Този .apk файл се намира в директорията bin на пакета съдържащ всички файлове на приложението.