Baza modelek Glamour Models: Modelki, Fotomodelki, Hostessy

czwartek, 14 lutego 2013

Zaślepka dla nie załadowanych obrazków w jQuery

Witam,
pokażę jeden ze sposobów na wstawienie zaślepki obrazków, które nie zostały wczytane:

$(window).load(function() {
  var w, h, w1, h1;
  $('img').each(function() {
    if (!this.complete
        || typeof this.naturalWidth == "undefined"
        || this.naturalWidth == 0) {
      w = 100;
      h = 100;
      w1 = parseInt($(this).attr('width'), 10);
      h1 = parseInt($(this).attr('height'), 10);
      if (w1 && h1) {
        w = w1;
        h = h1;
      }
      this.src = 'http://placehold.it/'+w+'/'+h;
    }
  });
});

Ten sposób działa w normalnych przeglądarkach.

niedziela, 16 września 2012

Generowanie struktury drzewiastej do testów

Jak wygenerować tablicę, która będzie reprezentować strukturę drzewiastą?

Pomocna będzie funkcja do generowania losowych wartości tekstowych:
function randomText(){
 $ch = range('a', 'z');
 $count = count($ch);
 $length = rand(5, 10);
 $text = '';
 
 for($i=0; $i < $length; $i++){
  $text .= $ch{rand(0, $count-1)};
 }
 
 return $text;
}

Utwórzmy klasę Tree, która będzie miała trzy prywatne właściwości określające wygenerowane drzewo, liczbę poziomów drzewa oraz liczbę gałęzi na każdym poziomie.
Do metody Tree::makeTree() przekazujemy wartości, które określą nam wielkość drzewa.
W końcu generujemy rekurencyjnie drzewo w prywatnej metodzie Tree::_makeTree(). Wartości przekazywane do tej metody to aktualny poziom, numer gałęzi na poziomie oraz numer węzła w drzewie, tzn. klucz w tablicy rodzica.
class Tree{
 private $tree; // wygenerowane drzewo
 private $levels; // liczba poziomów drzewa
 private $branches; // liczba gałęzi na każdym poziomie
 
 public function makeTree($levels, $branches){
  $this->tree = array();
  $this->levels = $levels;
  $this->branches = $branches;
  
  $this->_makeTree();
 }
 
 private function _makeTree($level = 0, $branch = 0, $id = null){
  if ($level > $this->levels) {
   return;
  }
  
  $this->tree[] = array('value' => randomText(), 'parent' => $id);
  
  end($this->tree);
  $id = key($this->tree);
  
  for($i=0; $i < $this->branches; $i++) {
   $this->_makeTree($level+1, $i, $id);
  }
 }
 
 public function getTree(){
  return $this->tree;
 } 
}

Aby wartości w drzewie miały za każdym razem takie same wartości, można ustawić generator liczb losowych.
srand(0);
$t = new Tree();
$t->makeTree(3,2);
var_dump($t->getTree());

Te ustawienia wygenerują tablicę o tej strukturze:
array
  0 => 
    array
      'value' => string 'eifefuq' (length=7)
      'parent' => null
  1 => 
    array
      'value' => string 'yknjklv' (length=7)
      'parent' => int 0
  2 => 
    array
      'value' => string 'fovima' (length=6)
      'parent' => int 1
  3 => 
    array
      'value' => string 'rtnuteg' (length=7)
      'parent' => int 2
  4 => 
    array
      'value' => string 'miagkiylls' (length=10)
      'parent' => int 2
  5 => 
    array
      'value' => string 'xbpvmgosn' (length=9)
      'parent' => int 1
  6 => 
    array
      'value' => string 'tqwrsjw' (length=7)
      'parent' => int 5
  7 => 
    array
      'value' => string 'ocjmxpr' (length=7)
      'parent' => int 5
  8 => 
    array
      'value' => string 'uarkvdrq' (length=8)
      'parent' => int 0
  9 => 
    array
      'value' => string 'coehs' (length=5)
      'parent' => int 8
  10 => 
    array
      'value' => string 'nkdupaci' (length=8)
      'parent' => int 9
  11 => 
    array
      'value' => string 'hvcjublmpy' (length=10)
      'parent' => int 9
  12 => 
    array
      'value' => string 'gihucb' (length=6)
      'parent' => int 8
  13 => 
    array
      'value' => string 'zzkpck' (length=6)
      'parent' => int 12
  14 => 
    array
      'value' => string 'nbjtsdg' (length=7)
      'parent' => int 12

wtorek, 21 lutego 2012

Miniaturki automatycznie zapisane na serwerze

Masz zdjęcia normalnych rozmiarów, jednak nie chcesz przerabiać wszystkich na miniatury.
Można za pomocą CSS lub atrybutów width i height zmniejszyć ich wymiary na ekranie, ale ich rozmiar będzie nadal tak duży, jak dużego zdjęcia, co powoduję że się dłużej ładują.

Pokażę trick wykorzystujący JavaScript/JQuery, .htaccess/mod_rewrite i oczywiście PHP, który będzie tworzył miniatury w locie i zapisywał je na serwerze, gdy tylko zdjęcie zostanie wyświetlone za pierwszym razem.

czwartek, 9 lutego 2012

Jak dodać unikalny ciąg znaków do rekordu w bazie danych

Pokażę sposób na wstawienie unikalnego ciągu znaków do tabeli w bazie danych.

Załóżmy, że mamy taką tabelę:
user
---------------------
id INT PRIMARY KEY AUTO_INCREMENT
hash VARCHAR DEFAULT NULL
data TEXT
gdzie id jest kluczem głównym, zatem indeksem unikalnym,
hash ma być unikalnym ciągiem znaków - na początku niech posiada wartość NULL,
oraz data - jakieś dane.

wtorek, 24 stycznia 2012

Zmiana kolejności kluczy w tablicy 2-wymiarowej

Przy uploadzie tablicy plików otrzymujemy taką tablicę 2-wymiarową:

$_FILES['name'][0]
$_FILES['name'][1]
...
$_FILES['type'][0]
$_FILES['type'][1]
...
$_FILES['error'][0]
$_FILES['error'][1]
...
$_FILES['tmp_name'][0]
$_FILES['tmp_name'][1]
...

$_FILES['size'][0]
$_FILES['size'][1]
...



Wygodniej ją przetwarzać, jeśli klucze byłyby zamienione miejscami, tzn. [0]['name'], itd.
Oto funkcja, która zamienia te klucze miejscami w tablicy 2-wymiarowej:
function replaceKeys(array $arr){
    $newArr = array();
    foreach($f as $k1 => $v1){
        foreach($v1 as $k2 => $v2){
             $newArr [$k2][$k1] = $f[$k1][$k2];
        }
    }
    return $newArr;
}

Teraz jest wygodniej sprawdzać uploadowane pliki:

$files = replaceKeys($_FILES);
foreach($files as $file){
    if($file['error'] == 0){
        // ......
    }
}

środa, 14 grudnia 2011

Tablica znaków w PHP bez używania pętli

Cześć,
pokażę, jak stworzyć tablicę znaków w PHP nie używając pętli, czyli
array('A', 'B', ..., 'Z', 'a', 'b', ..., 'z').

// utworzenie tablicy liczb array(65, ..., 90)
$big = range(65, 90);
// utworzenie tablicy liczb array(97, ..., 122)
$small = range(97, 122);
// złączenie tych tablic
$nums = array_merge($big, $small);
// stosujemy funkcję chr() do każdego elementu tablicy
$letters = array_map('chr', $nums);
var_dump($letters);

Liczby w tablicach $big i $small to kody ASCII liter.

Jeżeli chcemy otrzymać string 'ABC...Zabc....z',
to wystarczy złączyć elementy tablicy:
implode('', $letters);

czwartek, 8 grudnia 2011

Tworzenie pliku .htaccess (z kropką) w Windows

Cześć,
jak zwykle w Windows trzeba zrobić coś na około.
Pokażę, jak utworzyć plik zaczynający się od kropki na przykładzie .htaccess.

1. Najpierw tworzymy sobie np. htaccess.txt
2. Wchodzimy do wiersza polecenia (cmd lub wybieramy z akcesorii)
3. Przechodzimy do poleceniem cd do katalogu z plikiem htaccess.txt
4. Poleceniem ren htaccess.txt .htaccess zmieniamy nazwę.

Gotowe!

Jak ktoś ma Notepad++, to jest to dużo prostsze.
Wystarczy otworzyć plik htaccess.txt i z menu File wybrać Raname i wpisać nową nazwę z kropką na początku.