www.dorwij.pl najlepsze sztuki w sieci!!!
Masz dosyć wysokich cen??
Nie czekaj! Sprawdź dorwij.pl!
Jest to portal przygotowany w oparciu o idę taniego kupowania. Czy kiedykolwiek zdarzyło Ci się że możesz obniżać cenę przedmiotu który chcesz kupić? Chyba nie? Zarejestruj się to NIC nie kosztuje a w związku z licznymi promocjami dostaniesz darmowe „dorwania”.
Na dorwij.pl czekają na Ciebie przedmioty wystawiane na rewolucyjnych aukcjach.
Dorwij.pl oferuje aukcje takie jak :
Standard
Licytacja przedmiotu zaczyna się od 0zł a jedno wylicytowanie zwiększa cenę o 0.01 zł.
(tak więc cena końcowa przedmiotu jest bardzo niska).
Standard w dół
Licytacja przedmiotu zaczyna się od 0,1 wartości przedmiotu i jest obniżana o 0.01 zł
(cena końcowa przedmiotu jest bardzo niska, ale to nie wszystko jeżeli cena przedmiotu osiągnie 0 zł licytacja się nie kończy cena przedmiotu spada poniżej zera i staje się ujemna!
Cena ujemna liczona w dziesiątkach złotówki= dorwaniom które są zwracane Użytkownikowi który wygra licytację )
Procent w dół
Licytacja przedmiotu zaczyna się od 0,6 wartości rynkowej przedmiotu i jest obniżana o dany procent. Procent czyli kwota o jaki jest obniżana cena przedmiotu zawsze jest widoczny w szczegółach aukcji. Gdy cena dojdzie do złotówki obniżanie ceny się zatrzymuje i liczy się tylko to kto ostatnim danym czasie przelicytuje.
A także Jeden strzał
Jeden strzał to aukcja Holenderska
Jest to aukcja w której mogą wziąć udział osoby które się na nią zapiszą. Uwaga liczba miejsc ograniczona. W momencie gdy zbierze się wymagana liczba użytkowników aukcja startuje dnia następnego o godzinie 10:00 rano. Cena przedmiotu spada co minutę o kwotę widoczną w szczegółach aukcji. Gdy któremuś z Użytkowników cena będzie odpowiadała, to licytuje i w tym momencie aukcja się kończy. Wygrywa osoba która pierwsza wylicytowała przedmiot.
W tym typie aukcji z góry jest wiadomo ile maksymalnie można zużyć dorwań.
Przykład :
Zapis do aukcji= 5 dorwań
Wylicytowanie= 1 dorwanie
Suma 6 dorwań.
W tym typie aukcji wystawiane są przedmioty o wysokiej wartości gotówkowej.
Na dorwij.pl dostajesz tyle dorwań za ile zapłacisz dorwanie kosztuje 1zł z VAT.
Ale to nie wszystko jest cała masa promocji:
Promocja na start = darmowe dorwania
Poleć znajomego= darmowe dorwania
Sto plus= darmowe dorwania
Szczegóły na dorwij.pl w dziale promocje.
Nie czekaj wypróbuj dorwij.pl i zgarniaj najlepsze sztuki w sieci!!!
php array to xml
Potrzebowałem funkcje, która na podstawie tablicy stworzy nam plik xml. Samo napisanie funkcji jest banalne, ale problem następuje w przypadku, gdy mamy nie unikalne klucze w tablicy. Solucją jest przekazanie do funkcji tablicy zawierającej nazwe nieunikalnych kluczy.
-
<?php
-
/**
-
* Tworzy obiekt xml na podstawie tablicy
-
*
-
* @param array $aXml Wejściowa tablica
-
* @param SimpleXMLElement $oXml
-
* @param array $aElements tablica non-unique elementów
-
* @return SimpleXMLElement
-
*/
-
{
-
static $aArray;
-
-
{
-
$aArray = $aElements;
-
}
-
-
{
-
foreach( $aXml as $k => $v )
-
{
-
{
-
{
-
{
-
foreach( $v as $kk => $vv )
-
{
-
$oXml->addChild( $k, $vv );
-
}
-
}
-
else
-
{
-
$oXml->addChild( $k );
-
}
-
}
-
else
-
{
-
$oXml->addChild( $k );
-
}
-
arrayToXml( $aXml[$k], $oXml->$k );
-
}
-
else
-
{
-
{
-
$oXml->addChild( $k, $v );
-
}
-
else
-
{
-
//Tutaj można coś zrobić dla kluczy numerycznych
-
}
-
}
-
}
-
}
-
return $oXml;
-
}
-
?>
I jeszcze link, gdzie jest lepiej sformatowane (durny wp) http://cpaste.com/2403
2 commentsBlondynka…
Ostatnio będąc w Rzeszowie przekonałem się, że kawały o blondynkach nie są wyssane z palca...
:D
2 commentsKoniec prac jak makaron
No i znowu długo nic nie pisałem :) SparkleWorks jest prawie ukończone. Pracuje sie na nim całkiem przyjemnie, a nawet bardziej niż całkiem :> Koniec prac jeszcze nie nastąpił i wiele jest jeszcze do poprawienia, ale 2 projekt już na nim kończę :) Do opublikowania sie jeszcze nie nadaje, bo w niektórych miejscach, aż wstyd kod pokazać taki śmietnik jest :| Ale kiedyś myślę znajdę czas i zapnę wszystko na ostatni guzik :D Wtedy pewnie ujrzy światło dzienne... Ale kiedy to nastąpi, to tego nie wiedzą nawet najstarsi górale ;)
Na koniec mały przyklad. Pamiętam jak w Symfony męczyłem sie jak połączyć repopilacje formularza z validatorami. W SparkleWorks to zabawa.
Kontroler:
-
<?php
-
class ShipmentCompaniesModule extends swAppController
-
{
-
-
public function executeAdd()
-
{
-
$this->oShipmentCompany = null;
-
$this->sAction = 'Create';
-
}
-
-
-
-
public function executeEdit()
-
{
-
$oShipmentCompaniesQuery = new Shipment_companiesModel();
-
$this->oShipmentCompany = $oShipmentCompaniesQuery->getByPK( $this->request()->Get( 'id', 'Int' ) );
-
-
$this->sAction = 'Update?id='.$this->oShipmentCompany->getId();
-
$this->setView( 'Add' );
-
}
-
-
-
public function executeCreate()
-
{
-
$oShipmentCompaniesQuery = new Shipment_companiesModel();
-
$oShipmentCompaniesQuery->setInfo( $this->request()->Post( 'info', 'String' ) );
-
$oShipmentCompaniesQuery->setName( $this->request()->Post( 'name' ) );
-
$oShipmentCompaniesQuery->setTelephone( $this->request()->Post( 'telephone', 'Int' ) );
-
$oShipmentCompaniesQuery->insert();
-
-
return 'Nowa firma wysyłkowa została utworzona.';
-
}
-
-
-
-
public function executeUpdate()
-
{
-
$oShipmentCompaniesQuery = new Shipment_companiesModel();
-
$oShipmentCompaniesQuery->addWhere( Shipment_companiesModel::ID, $this->request()->Get( 'id', 'Int' ) );
-
$oShipmentCompaniesQuery->setInfo( $this->request()->Post( 'info', 'String' ) );
-
$oShipmentCompaniesQuery->setName( $this->request()->Post( 'name' ) );
-
$oShipmentCompaniesQuery->setTelephone( $this->request()->Post( 'telephone', 'Int' ) );
-
$oShipmentCompaniesQuery->update();
-
-
return 'Zmiany zostały zapisane.';
-
}
-
}
-
?>
Szablon:
Validator:
-
<?xml version="1.0" encoding="UTF-8"?>
-
<validators enabled="true" module="ShipmentCompanies" action="Create" method="POST" errorAction="ShipmentCompanies/Add" foreign="false">
-
-
<name type="string">
-
<minlenght>3</minlenght>
-
<maxlenght>255</maxlenght>
-
<lenghterror>Musi miec dlugosc od {{minLenght}} do {{maxLenght}} znaków.</lenghterror>
-
</name>
-
-
<info type="string">
-
<minlenght>5</minlenght>
-
<lenghterror>Musi miec dlugosc od {{minLenght}} znaków.</lenghterror>
-
</info>
-
-
<telephone type="int">
-
<typeerror>Muszą być same liczby</typeerror>
-
<minlenght>8</minlenght>
-
<lenghterror>Telefon jest za krótki. Min długość to {{minLenght}} znaków.</lenghterror>
-
</telephone>
-
-
</validators>
Proste nie :D
9 commentsI po sesji :)
Koniec sesji już nastąpił. Wczoraj ostatnie zaliczenie z fizyk: wyklady i ćwiczenia. Pierwsze jak sie dowiedziałem zdane na 4 a drugie na 3. Nie mniej jestem strasznie zadowolony bo raczej nie będe miał poprawek :) Oczekuje jeszcze tylko na wyniki z Podstaw informatyki. Tak czy inaczej w końcu mam spokój z uczelnią :D
2 commentsKonferencja Kierunek 2.0
Chciałbym zaprosić wszystkich, którzy w dniu 15 czerwca będą w Rzeszowie na konferencje pt. Kierunek 2.0 – czyli praktycznie wszystko o najnowszych trendach w sieci i co z tego wynika…
W dalszej częsci więcej informacji.
Read more
Filter Functions ‘n’ array
Dzisiaj dopisywałem pare rzeczy do klasy validujacej formularze. Jakie było moje zdziwienie, gdy pozornie proste rzeczy nie chca dzialac. Chodzi mianowicie o funkcje filter_var i pochodne od niej. Problem jest w przekazywaniu tablic jako zmienne.
Manual napisał:
Value to filter, arrays are filtered recursively.
Ok wszystko sie zgadza. Ale dlaczego do cholery nie dopisali, ze w przypadku uzywania tablic trzeba dodac stałą FILTER_FORCE_ARRAY ? A ja tyle czasu straciłem przez to :|
No commentsObjectToArray()
Kiedys chciałem napisac klase do cache'owania obiektow simplexml. Jednak jak sie okazało w praktyce, jest to niemozliwe. To co mnie trzymało przy simplexml to wygoda dostepu do danych w nim zawartych. Napisałem, wiec sobie mala funkcje przeksztalcajaca obiekt w wielowymiarowa tablice. Wygoda praktycznie taka sama jak przy obiekcie, a dodatkowo mozemy calosc ladnie poddac serializacji :)
Tararam:
-
<?php
-
/**
-
* Dokonuje konwersji z object na array rekursywnie
-
*
-
* @param object $z
-
* @return aray
-
*/
-
function objToArray(&$z)
-
{
-
{
-
foreach( $z as $k=>$v )
-
{
-
{
-
$z[$k] = objToArray( $z[$k] );
-
}
-
}
-
}
-
else
-
{
-
objToArray( $z );
-
}
-
return $z;
-
}
-
?>
17 comments
Moje __autoload() :)
W miare jak SparkleWorks sie rozrasta, coraz trudniej zapanowac nad wszystkimi klasami. Na poczatku wszystko wczytywałem sobie recznie przez include. Było znosnie... ale gdy doszły mi automatycznie generowane klasy modelu, to pisanie
-
include(sciezka/model.class.php;
-
$o = new Model()
byłoby niesamowicie meczace. Naturalną rzaczą jest, ze pomyslalem o __autoload()
Na poczatku było samo generowanie mapy. Jednak postanowiłem troche rozszerzyc. Do standardowej mapy mozemy dorzucic inne pliki lub tez cale foldery. Wszystko oczywiscie w XMLu :) Teraz moze zaden pozytek, ale z czasem jak zajdzie potrzeba dolaczenia innych bibliotek to bedzie juz to z głowy :)
-
<?xml version="1.0" encoding="UTF-8"?>
-
<filemap enabled="false">
-
<files enabled="true">
-
<class name="auto" enabled="true">E:\auto.php</class>
-
<class name="test" enabled="true">E:\www\test.php</class>
-
</files>
-
<dirs enabled="true">
-
<dir recursive="true" enabled="true" suffix="class.php">E:\system\classes</dir>
-
</dirs>
-
</filemap>
Wyjasniac chyba nie trzeba :)
Pod adresem klasa dla zainteresowanych. Z gory mowie ze jest to czesc SparkleWorks, wiec pewne wstawki z frameworka sa :) Jest to tez wersja robocza, tak wiec nie wszystko jest cacy, ale z gory dzieki za wskazowki :)
Zbliża się koniec prac
Powoli zblizam sie do końca prac związanych z SparkleWorks. Teraz jeszcze prace kosmetyczne, dodanie tu i tam wyjątków, komentarzy. Oczywiscie cała funkcjonalnosc jaka sobie wymysliłem nie została zrobiona. Gdybym na to czekał to nigdy pewnie bym go nie ukończył. Do zrobienia na poźniej pozostanie Cache, jakis generator administracji oraz inne przydatne rzeczy. Ale to już po pierwszym wydaniu. Uporządkuje kod i zabieram sie do konkretnej roboty. Jako pierwsze na igien podzie chyba strona kółka KOS. Narazie tylko jeszcze nie wiem jaką funkcjonalnośc musi posiadać, ale jak tylko bede miał plan działania to sie zabieram za realizacje. Mysle ze bedzie to sama przyjemnosc, wykorzystac w akcji SparkleWorks :)
A co do licencji... Jak by ktoś pytał to jeszcze się nie zdecydowałem :P
II semestr
NARESZCIE
Od wczoraj jestem już pełnowartościowym studentem II semestru. Ostatnia rzecz która mnie zatrzymywała to był egzamin warunkowy z Podstaw Informatyki. Ocena całkiem przyzwoita: 4.5 :) Jeszcze tego samego dnia zdobyłem wpis i złozyłem index.
Uffff.... Co za ulga :D
No comments
Obsługa bazy danych cd.
Moje wahania co do budowy klasy zarzadzajacej bazą danych już sie skonczyły. Większośc jest gotowa. Do tabel odwołujemy sie przez
-
$o->getPole()
a do złączonych
-
$o->joinedTable->getPole()
. Dzięki temu łatwo było zaimplementować dodatkowe funkcje - jak na razie tylko sprawdzające (reszta wkrótce). Np. jesli dodamy w WHERE pole, ktorego nie ma w tabeli to zamiast czekać na bład bazy danych, sami go wczesniej wyłapiemy :)
Inne smaczki sa przy zapytaniach UPDATE i INSERT. W setterach nastepuje sprawdzanie czy podana przez nas wartosc jest takiego typu jakiego oczekujemy, czy np. nikt nie starał sie wsadzić string'a do int'a itp. Przyda sie pewnie też bajer jak sprawdzanie czy dodalismy wszystkie wartosci. Tzn. Niektore pola sa wymagane jak np. tytuł, a inne (id ktory jest auto_increment) nie. Jesli czegoś nam zabraknie to przy wykonaniu polecenia tez bedzie stosowny bład. Całość oczywiście jest bardzo ładnie generowana automatycznie na pdst. XMLa. Np. taki schemat
-
<?xml version="1.0" encoding="UTF-8"?>
-
-
<database name="sw">
-
<table name="def"><column name="id" type="int" size="10" primary="true" />
-
<column name="author_id" type="int" size="10" required="true" />
-
<column name="cat_id" type="int" size="10" required="true" />
-
<column name="title" type="varchar" size="255" required="true" />
-
<column name="deleted" type="bool" />
-
<foreigntable>author</foreigntable>
-
<foreigntable>cat</foreigntable></table>
-
<table name="author"><column name="id" type="int" size="11" primary="true" />
-
<column name="name" type="varchar" size="255" />
-
<column name="title" type="varchar" size="255" /></table>
-
<table name="cat"><column name="id" type="int" size="11" primary="true" />
-
<column name="name" type="varchar" size="255" /></table>
-
</database>
wygeneruje nam 9(!) plików z kodem PHP :)
Mam do tego jeszcze cache, ale zastanawiam sie nad jego sensem. Wprawdzie przy pobieraniu 5000 tys. rekordów jakas róznica w czasie była, ale niewielka.
Obsługa bazy danych
Znowu zawitały ciche dni na blogu :) Spowodowane było to róznymi sprawami (głównie natury uczelnianej). Na razie wszystko sie uspokoiło, wiec coś trzeba skrobnąć. Na chwile obecną męcze sie z klasa do wykonywania polecen na bazie danych. Mam juz praktycznie głowny szkielet oparty na wzorcu AcitveRecord, ale myśle że to za mało. Tzn. zależy pod jakim względem za mało ;) Sama klasa do obsługi zapytan SELECT i UPDATE to niecałe 500 lini kodu bez komentarzy i obsługi wyjątków (gdyz takowej jeszcze nie przygotowałem :/). Mało nie jest. Dużo?... Tez nie.
Do pol w tabeli w przypadku zwykłego select odwołujemy sie po prostu
. Do pol z JOINem
. Z racji jednak, że bardzo przyzwyczaiłem sie do podpowiadania składni w Eclipse (dzięki NuLLowi [tak sie to odmienia;) ?]) przydałyby sie metody typu
jak w propel'u :) Wiąże sie to jednak ze znaczną rozbudową kodu i troche wiekszą zasobożernością. No bo dla 20 rekordów trzeba 20 nowych rozbudowanych obiektów... Jeszcze musze to przemyśleć (czekam na komentarze :>). Samo generowanie klas trudne nie będzie przy pomocy xml'a, którego bardzo polubiłem, odkąd się z nim zapoznałem. Niech jakies yml'e się chowają :D
2 commentsclass_exists() oraz __autoload()
Jeśli używacie funkcji class_exists() a jest w skrypcie zdefiniowana funkcja __autoload() to przy użyciu class_exists() jest automatycznie uruchamiane __autoload(). Aby temu zapobiec należy dodać parametr false do class_exists().
Może zaoszczedzi to komuś szukania ;-)
unserialize() i SimpleXML Object
Chciałem sobie napisać mała klase do obsługi cache SimpleXML. Cel był taki, aby przy każdym rządaniu nie parsować pliku za pomocą simplexml_load_file(), tylko zrobić unserialize() poprzednio zserializowanego obiektu. serialize() przebiegło bez problemu. Gorzej niestety w drugą stronę. Wykonanie unserialize() na zserializowanym obiekcie skutkuje takim o to błedem
Warning: unserialize() [function.unserialize]: Node no longer exists in ....
Tak wiec pomysł z klasą cache został pogrzebany :|
5 comments