Pripojeni do DB - config.php

// ------------------------------------------------
// Databaze
// ------------------------------------------------

$dbuser = "test";

$dbname = "test";

$dbheslo = "test";

$dbserver = "localhost";

// ------------------------------------------------
/// PRIPOJENI K DB A VYBRANI SPRAVNE DATABAZE
// ------------------------------------------------

$conn=MySQL_Connect($dbserver, $dbuser , $dbheslo);
if (!$conn):
die("Chyba pripojeni do db! Chyba: ".mysql_error());
endif;

$vyberdb=MySQL_Select_DB($dbname);
if (!$vyberdb):
die("Spatne, nepovedlo se vybrat databazi! Chyba: ".mysql_error());
endif;

Moje captcha

function captcha()
{
//nase vlastni metoda CAPTCHY :) scitani cisel v textu
$numbers = array(
1 => 'one',
2 => 'two',
3 => 'three',
4 => 'four',
5 => 'five',
6 => 'six',
7 => 'seven',
8 => 'eight',
9 => 'nine');

$prvni = rand(1,9);
$druhy = rand(1,9);
$_SESSION['right_captcha'] = $prvni + $druhy;
echo $numbers[$prvni],' + ',$numbers[$druhy],' = ';
}

Meta refresh

function refresh($kam,$cas)
{
echo '<meta http-equiv="refresh" content="',$cas,';',$kam,'"/>';
}

Generovani datumu

function generuj_datum()
{
return date("YmdHi");
}

Hezci vypis pole (variace print_r)

function print_ar($array, $count=0)
{
$i=0;
$tab ='';
while($i != $count) {
$i++;
$tab .= "&nbsp;&nbsp;|&nbsp;&nbsp;";
}
foreach($array as $key=>$value){
if(is_array($value)){
echo $tab."[<strong><u>$key</u></strong>]<br />";
$count++;
$this->print_ar($value, $count);
$count--;
}
else{
$tab2 = substr($tab, 0, -12);

if(!is_numeric($key) && strlen($value) > 0)
{
echo "$tab2~ $key: <strong>$value</strong><br />";
}
}
$k++;
}
$count--;
}

Useknuti stringu po zadanem poctu znaku

function cutstr($str, $i)
{
//$str = htmlspecialchars($str);

if (strlen($str) > $i)
{
$str = substr($str, 0, $i);
$str .= " ...";
}

return $str;
}

Kodovani a dekodovani mod_rewrite adresy - neresi diakritiku

function encode_url($text)
{
$text = strtolower(trim($text));
$text = str_replace(' ', '-', $text);
//nahradi vsecko co neni alfanumericky znak a -
$text = ereg_replace("[^A-Za-z0-9-]", "", $text);

return $text;
}

function decode_url($text)
{
return str_replace('-',' ',$text);
}

HTML kostra

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<link rel="stylesheet" href="style.css" type="text/css" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-language" content="en" />
<meta name="author" content="Jakub 'Pirozek' Ludwig; e-mail: pirozek@mafyje.com" />
<meta name="copyright" content="" />
<meta name="distribution" content="global" />
<meta lang="en" name="description" content="popis stranky" />
<meta lang="en" name="keywords" content="klicova slova" />
<title>Titulek</title>
<script src="script.js" type="text/javascript"></script>
</head>
<body>
<h1>Nazdarek :)</h1>
</body>
</html>

Nejzakladnejsi .htaccess pro mapovani akci do PHP

RewriteEngine On
RewriteRule ^a-([^/]+)$ index.php?akce=$1 [L,QSA]
#akce musi zacinat a, takze napriklad akce na login bude http://www.neco.cz/a-login
#jde to i jinak, ja to mam rad takhle

Zobraz/Skryj element na strance pomoci JS

function zobrazDiv(idecko)
{
var el = document.getElementById(idecko).style;
if(el.display == 'block') { el.display='none'; }
else { el.display = 'block'; }
}

JS cast jednoducheho AJAXu

var http = createRequestObject();
var displayRating = '';
var currentId = '';

function createRequestObject() {
var ro;
var browser = navigator.appName;

if(browser == "Microsoft Internet Explorer"){
ro = new ActiveXObject("Microsoft.XMLHTTP");
}
else{
ro = new XMLHttpRequest();
}
return ro;
}

function fce_volana_z_html(id)
{
http.open('get', 'adresa_skriptu.php&id='+id);
http.onreadystatechange = fce_pro_handle_vysledku;
http.send(null);
}

function handle_vysledku() {
if(http.readyState == 4){
var response = http.responseText;

if (response == 'ERROR'){
alert("Sorry... Action failed :(");
}
else {
//tu se dela to, co chces aby se provedlo po uspesnej ajaxnuti.
}
}
}

PHP cast jednoducheho AJAXu

<?php

$_GET['id'] = mysql_escape_string($_GET['id']);
//tuhle udelej co treba s tim IDckem, pripadne dalsim parametrem kterej si predas
//nezapomen, ze pokud dojde k chybe, vypis si "ERROR"
//ano, melo by se to delat pres xml, ale tohle ma byt co nejkratsi
?>

Check stringu a pripadne upravy

//checkuje na delku, pokud je zadana + prida slashe pro db
function check_string($string,$lenght = 0,$convert = 0)
{
if($lenght > 0)
{
if(strlen($string) < $lenght)
{
return false;
}
}

if($convert == 1)
{
$string = htmlspecialchars($string);
}

$string = mysql_escape_string($string);
return $string;
}

Generovani snadno zapamatovatelnych hesel

function generatePassword($length=8, $strength=0)
{
$vowels = 'aeuy';
$consonants = 'bdghjmnpqrstvz';
if ($strength & 1) {
$consonants .= 'BDGHJLMNPQRSTVWXZ';
}
if ($strength & 2) {
$vowels .= "AEUY";
}
if ($strength & 4) {
$consonants .= '23456789';
}
if ($strength & 8) {
$consonants .= '@#$%';
}

$password = '';
$alt = time() % 2;
for ($i = 0; $i < $length; $i++) {
if ($alt == 1) {
$password .= $consonants[((rand() * microtime()) % strlen($consonants))];
$alt = 0;
} else {
$password .= $vowels[((rand() * microtime()) % strlen($vowels))];
$alt = 1;
}
}
return $password;
}

Prevadeni datumu udelaneho fci generuj_datum

function preved_datum($d)
{
switch(strlen($d))
{
case 12:
return substr($d,6,2).'.'.substr($d,4,2).'.'.substr($d,0,4).' '.substr($d,8,2).':'.substr($d,10,2);
break;
case 8:
return substr($d,6,2).'.'.substr($d,4,2).'.'.substr($d,0,4);
break;
}
}

Detekce stareho IE6 + vynadani uzivateli

function ie_check()
{
$ie6 = "MSIE 6.0";
$browser = $_SERVER['HTTP_USER_AGENT'];
$browser = substr("$browser", 25, 8);

if($browser == $ie6)
{
echo '<div class="warning">Tvoje varovna hlaska</div>';
}

}

Delani kotev v textu

<a name=zalozka></a>Zalozka
<a href="#zalozka">Klikni a prejdes na zalozku</a>

Favicon

<link rel='shortcut icon' href='favicon.ico'>
Generator ikonek - http://www.html-kit.com/favicon/

Posilani download hlavicek, funguje i v IE6,7,8

$len = filesize($soubor);
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-Type: application/pdf" );
header("Content-Disposition: attachment; filename=\"tvuj.nazev\";");
header("Content-Length: ".$len);

readfile($soubor);

Proc je tam sakra tolik uvozovek?

Kdyz mam nasledujici dotaz:

$sql = "SELECT * FROM vyrobky WHERE ean = 'aaa'";

Tak se musi v dotazu psat ' kolem retezce, aby databaze pochopila, ze se jedna o retezec.
Kdyz chceme nahradit retezec nejakou promennou, tak tam ale ty uvozovky musi zustat.

Rekneme ze mame promennou:

$ean = 'aaa';

a chceme ji dosadit do naseho dotazu. Udelame to nasledovne:

$sql = "SELECT * FROM vyrobky WHERE ean = '" . $ean . "'";

A ted proc ty uvozovky takhle, ty jednoduche uvozovoky ' patri do dotazu proto, aby databaze vedela, ze se jedna o retezec.

Mezivysledek: ' '

Ty dvojite uvozovky " jsou tam proto, protoze phpko je pouziva na oznaceni zacatku/konce retezce a my tady potrebujeme ty retezce vlastne spojit. Mame totiz retezec
"SELECT * FROM vyrobky WHERE ean = '"
a retezec
"'"
a mezi ne vkladame $ean

Mezivysledek: '" "'

Ted tam musi prijit . nebo jiny znak kterym se spojuji retezce (ve VB/JS/C++ je to +), aby php vedelo, ze se maji retezce spojit.

Mezivysledek: '". ."'

Mno a mezi ty . se proste vlozi promenna, kterou tam chceme.

Takze vlaste slucujeme retezce:
I. "SELECT * FROM vyrobky WHERE ean = '"
II. $ean
III. "'"

A ve vysledku kdyz se provede nahrazeni, tak nam z toho vyleze:

$sql = "SELECT * FROM vyrobky WHERE ean = 'aaa'";

Lehke, ze?

Logovani do souboru

$handler = fopen('log.txt','a');
fwrite($handler,'sem neco napis :)');
fclose($handler);

Fullscreen mod s pomoci javascriptu

Ozkouseno na IE a FF (zatim)





Click Here

IP adresa uzivatele

function get_ip()
{
return $_SERVER['REMOTE_ADDR'];
}

Razeni jmen podle ceskych pravidel uz v databazovem dotazu

$vyber = mysql_query("SELECT * FROM zak WHERE id_tridy = ".$id_tridy." ORDER BY jmeno COLLATE utf8_czech_ci ASC");

Konverze datetime z MySQL DB na human form

public function convert_datetime($datetime)
{
//2010-07-06 02:00:00
$half = explode(' ',$datetime); //now we have date and time separated
$date = $half[0];
$time = $half[1];

$date = explode('-',$date); //explode it
$time = explode(':',$time);

//and create our format
$out = ltrim($time[0],'0').':'.$time[1].' '.$date[2].'.'.$date[1].'.'.$date[0];
return $out;
}

Tabulka s normalne udelanym rameckem co vypada hezky

table.ramecek
{
border-width: 1px;
border-style: inset;
border-collapse: collapse;
border-spacing: 2px;
border-color: black;
}

table.ramecek td
{
border-width: 1px;
border-style: inset;
border-color: black;
border: 1px solid black;
}

Skovani emailu proti email crawlerum

function safeEmail($email) {
$email = eregi_replace('#','', $email);
$length = strlen($email);
for ($i = 0; $i < $length; $i++)
$obfuscatedEmail .= "&#" . ord($email[$i]); // creates ASCII HTML entity
$return = ''.$obfuscatedEmail.'';
return $return;
}

Zdroj: http://www.givegoodweb.com/post/67/php-email-obfuscate

Pozadi v CSS3 na W3C

http://www.w3.org/TR/css3-background/

Generator ajax loading gifu

http://ajaxload.info/

Detekce IE7

$ie7 = (preg_match('/MSIE 7/',$_SERVER['HTTP_USER_AGENT'])) ? true : false;

Jasny je, ze pokud tam bude napr "Compatible MSIE 7", tak to prohlizec oznaci taky jak IE7, ale takovych prohlizecu je malo :)

Basic http auth

$valid_passwords = array ("test" => "test");
$valid_users = array_keys($valid_passwords);

$user = $_SERVER['PHP_AUTH_USER'];
$pass = $_SERVER['PHP_AUTH_PW'];

$validated = (in_array($user, $valid_users)) && ($pass == $valid_passwords[$user]);

if (!$validated) {
header('WWW-Authenticate: Basic realm="tvuj nazev"');
header('HTTP/1.0 401 Unauthorized');
die ("Not authorized");
}

Vyber z casoveho intervalu MySQL

Dotaz: SELECT * FROM `objednavky` WHERE DATE_SUB( CURDATE( ) , INTERVAL 30 DAY ) <= vytvoreno

V tabulce je `vytvoreno` reprezentovano polem date

Vic info: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html

Hloupe zjistovani pripon u souboru

substr(strrchr('ahojky.pdf', '.'), 1) == 'pdf'

Suprovy directory lister, ktery toho hodne umi

http://greg-j.com/phpdl/

Javascript sleep

/**
* Delay for a number of milliseconds
*/
function sleep(delay)
{
var start = new Date().getTime();
while (new Date().getTime() < start + delay);
}

Pouze cisla do inputu

$("input[type=text]").keypress(
function(event) {
//Allow only backspace and delete
if (event.keyCode != 46 && event.keyCode != 8) {
if (!parseInt(String.fromCharCode(event.which))) {
event.preventDefault();
}
}
}
);

Priklad pro UNION ALL

Zpusob jak dat dve tabulky "pod sebe"

SELECT R.name, R.city, R.adress, R.email, 'reseller' AS role ,C.name AS country_name FROM `resellers` R JOIN `country` C ON R.id_country = C.id
UNION ALL
SELECT CONCAT(UD.name,' ',UD.surname) AS name, UD.city, UD.address, U.email, RO.name AS role, C.name AS country_name FROM `users` U
JOIN `users_details` UD ON U.id_user_detail = UD.id
JOIN `country` C ON UD.id_country = C.id
JOIN `roles` RO ON RO.id = U.id_role
WHERE U.id_role > 4

Flagy a drobnosti k preg_replace

The following should be escaped if you are trying to match that character

\ ^ . $ | ( ) [ ]
* + ? { } ,

Special Character Definitions
\ Quote the next metacharacter
^ Match the beginning of the line
. Match any character (except newline)
$ Match the end of the line (or before newline at the end)
| Alternation
() Grouping
[] Character class
* Match 0 or more times
+ Match 1 or more times
? Match 1 or 0 times
{n} Match exactly n times
{n,} Match at least n times
{n,m} Match at least n but not more than m times
More Special Character Stuff
\t tab (HT, TAB)
\n newline (LF, NL)
\r return (CR)
\f form feed (FF)
\a alarm (bell) (BEL)
\e escape (think troff) (ESC)
\033 octal char (think of a PDP-11)
\x1B hex char
\c[ control char
\l lowercase next char (think vi)
\u uppercase next char (think vi)
\L lowercase till \E (think vi)
\U uppercase till \E (think vi)
\E end case modification (think vi)
\Q quote (disable) pattern metacharacters till \E
Even More Special Characters
\w Match a "word" character (alphanumeric plus "_")
\W Match a non-word character
\s Match a whitespace character
\S Match a non-whitespace character
\d Match a digit character
\D Match a non-digit character
\b Match a word boundary
\B Match a non-(word boundary)
\A Match only at beginning of string
\Z Match only at end of string, or before newline at the end
\z Match only at end of string
\G Match only where previous m//g left off (works only with /g)

Ziskani indexu z ENUM v MySQL DB

mysql> SELECT enum_col+0 FROM tbl_name;

Analyza tabulky v MySQL s hintem

SELECT *
FROM `video_links`
PROCEDURE ANALYSE ( )

Zlutoucky kun

příliš žluťoučký kůň úpěl ďábelské ódy a zároveň PŘÍLIŠ ŽLUŤOUČKÝ KŮŇ ÚPĚL ĎÁBELSKÉ ÓDY :)

Seznam mime typu pro Content-type

http://en.wikipedia.org/wiki/Mime_type

Neklikatelny checkbox pouze s pouzitim HTML

one
two
three

jQuery page navigation pomoci sipek na klavesnici

$(document).keydown(function(e){
if (e.keyCode == 37) {
alert( "left pressed" );
return false;
}
});

Character codes:
37 - left
38 - up
39 - right
40 - down

Doplneni cisla nulami str_pad

str_pad($promenna,pocet_mist,"0",STR_PAD_RIGHT);
Doplni nulama od prave strany

Parsovani JSONu pomoci jQuery, funkcni i v IE

data = jQuery.parseJSON(data);

Pocet zaznamu v druhe tabulce

Blbce, vzdycky kdyz chces pocitat treba pocet clanku v kategoriich, musis MUSIS pouzit GROUP BY, jinak to bude hazet kraviny. Takze treba SELECT COUNT(C.id) AS `count` FROM kategorie K JOIN clanky C ON K.id = C.kategorie GROUP BY K.id

jQuery onload

$(document).ready(function() {
// neco
});

UTF8 pouzite pri spojeni s DB

mysql_query("SET CHARACTER SET utf8",$conn);
mysql_query("SET NAMES utf8",$conn);

Update on key duplicate

$res = mysql_query("INSERT INTO `mofi_sklad` SET
kod = '$kod_produktu',
popis = '$nazev',
jednotka = '$jednotka',
na_sklade = '$jednotek_na_sklade',
kat = '$kategorie'
ON DUPLICATE KEY UPDATE
kod = '$kod_produktu',
popis = '$nazev',
jednotka = '$jednotka',
na_sklade = '$jednotek_na_sklade',
kat = '$kategorie'");

Execution time skriptu

function microtime_float ()
{
list ($msec, $sec) = explode(' ', microtime());
$microtime = (float)$msec + (float)$sec;
return $microtime;
}

// Get starting time.
$start = microtime_float();

$end = microtime_float();

// Print results.
echo 'Doba behu: ' . round($end - $start, 3) . ' seconds';

Upload souboru - form multipart

enctype="multipart/form-data"

Quick jQuery

//pridame jQuery
echo '';

Rewrite base

Vzdycky konci lomitkem a znamena to adresar, takze napr pro www.prdel.cz/ahoj/ bude RewriteBase /ahoj

Javascript pripsani interni string fce - startswith

String.prototype.startsWith = function(str)
{return (this.match("^"+str)==str)}

Trigger specifikovane klavesy v jQuery

var e = jQuery.Event("keypress");
e.keyCode = $.ui.keyCode.ENTER;
$("input[rel=pomer_input]").trigger(e)

Ceske dny

$cz_dny = Array(
1 => 'Pondělí',
2 => 'Úterý',
3 => 'Středa',
4 => 'Čtvrtek',
5 => 'Pátek',
6 => 'Sobota',
7 => 'Neděle'
);

Html -> excel

$file="test.xls";
$xls="
aaabbb
";
header("Content-type: application/vnd.ms-excel");
header("Content-Disposition: attachment; filename=$file");
echo $xls;
?>
 
 
Vloz novej kousek kodu
Titulek
Kod