Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl


Nattfarinn
Napisane: 28.07.2015, 08:03:46





Grupa: Zarejestrowani
Postów: 136
Dołączył: 19.09.2007
Skąd: Sosnowiec

Ostrzeżenie: (0%)
-----

mb_ to prefix od 'Multibyte' (a same funkcje pochodzą z modułu mbstring) uwzględniający przeróżne kodowania łańcuchów znaków na których operują.

Więcej informacji "co, jak i dlaczego" w samej dokumentacji: http://php.net/manual/en/intro.mbstring.php
  Forum: PHP · Podgląd postu: #1166396 · Odpowiedzi: 3 · Wyświetleń: 358

Nattfarinn
Napisane: 13.04.2015, 13:46:45





Grupa: Zarejestrowani
Postów: 136
Dołączył: 19.09.2007
Skąd: Sosnowiec

Ostrzeżenie: (0%)
-----

Niestety, z kawałka kodu który wkleiłeś ciężko wywnioskować co tak właściwie chcesz osiągnąć. Widzę też pewne naleciałości z innych języków.

Ale po kolei:
  1. if ($k > $n) {
  2. echo "Nieprawidłowe dane wejściowe";
  3. }

Słuszne założenie, ale zwykły if i echo nie powstrzymają wywoływania dalszej części skryptu mimo oblania warunku walidacji. Sugeruję jakiś wyjątek, return lub pospolity die/exit.

  1. $numbers = array($n);

Nie robi tego co wydaje Ci się, że robi. Właśnie utworzyłeś jednoelementową tablicę zawierającą element $n. W skrócie w PHP jest dynamiczna alokacja pamięci tablic, więc taka deklaracja nie jest kompletnie potrzebna.

  1. $numbers = array($n);
  2.  
  3. for ($i=0; $i<$n; $i++) {
  4. $numbers[$i] = $i + 1;
  5. }

To wszystko da się przede wszystkim zastąpić prostym:
  1. $numbers = range(1, $n);


  1. $r = floor(rand(0, $n));

Nie ma potrzeby zaokrąglania wartości zwracanej przez rand. PHP zwraca liczbę całkowitą z podanego przedziału (lub [0 .. getrandmax()] jeśli przedziału nie podasz).

  1. // losowanie k liczb
  2. for ($i=0; $i<$k; $i++) {
  3.  
  4. // tworzenie losowego indeksu pomiędzy 0 i n - 1
  5. $r = floor(rand(0, $n));
  6.  
  7. // wybieramy element z losowego miejsca
  8. echo $numbers[$r]." | ";
  9.  
  10. // przeniesienia ostatniego elementu do miejsca z którego wzięliśmy
  11. $numbers[$r] = $numbers[$n - 1];
  12.  
  13. //zmniejszamy n
  14. $n--;
  15. }

To również robienie na piechotę tego, co w PHP jest wbudowane. Wystarczy prosta funkcja:
  1. $random = array_rand($numbers, $k);


Nie jestem przekonany dlaczego chciałeś sortować dla każdego losowania tablicę $numbers, ale zakładam, że chodziło Ci o posortowanie liczb już wylosowanych. Sortowanie wykonujesz więc tylko raz, na końcu. W skrócie, całość da się zapisać:

  1. <?php
  2.  
  3. function losuj($k, $n)
  4. {
  5. if ($k > $n) {
  6. die("Nieprawidłowe dane wejściowe");
  7. }
  8.  
  9. $numbers = range(1, $n);
  10. $random = array_rand($numbers, $k);
  11. sort($random);
  12.  
  13. return $random;
  14. }
  15.  
  16.  
  17. $k = 9;
  18. $n = 805;
  19.  
  20. $wylosowane = losuj($k, $n);
  21.  
  22. print_r($wylosowane);
  23.  
  24. ?>
  Forum: PHP · Podgląd postu: #1154230 · Odpowiedzi: 3 · Wyświetleń: 365

Nattfarinn
Napisane: 27.03.2015, 15:32:56





Grupa: Zarejestrowani
Postów: 136
Dołączył: 19.09.2007
Skąd: Sosnowiec

Ostrzeżenie: (0%)
-----

I jesteś pewien, że parser nie mówi Ci, że w linii 12 brakuje średnika?

Edit: Jak można programować z wyłączonym powiadamianiem o błędach i zadawać na forum pytania "Dlaczego mi nie działa"?
  Forum: PHP · Podgląd postu: #1151637 · Odpowiedzi: 6 · Wyświetleń: 285

Nattfarinn
Napisane: 2.04.2015, 13:35:52





Grupa: Zarejestrowani
Postów: 136
Dołączył: 19.09.2007
Skąd: Sosnowiec

Ostrzeżenie: (0%)
-----

Możesz to zrobić w dowolnym momencie. W skrócie, robisz to tak:

Kod
$ cd /path/to/local/repository
$ git remote add core git@github.com:core.git     # dodaje kolejne repozytorium remote i nazywa je core
$ git fetch core
$ git checkout -b core core/master                # przełącza Cię na nieistniejącego jeszcze lokalnie brancha o nazwie core z upstreamem core/master


I w sumie tyle. Branch 'core' tak naprawdę prowadzi do brancha 'master' repozytorim 'git@github.com:core.git'

Jak napiszesz na branchu 'myfeature' jakiś feature który chciałbyś wrzucić do 'git@github.com:core.git':

Kod
$ git checkout core
$ git pull --rebase               # zaciągnij zmiany przenosząc niepushnięte dotąd zmiany na samą górę
$ git cherry-pick hash_commita
$ git push
$ git checkout myfeature
$ git rebase core                 # zmień bazę swojego brancha na core


To ostatnie polecenie jest po to, żebyś miał 'core' na dole, a wszystkie swoje zmiany projektowe na górze. To powinno wywalić commit który cherry-pickowałeś, bo nie jest już potrzebny (jest częścią 'core'). Tylko musisz pamiętać, że jeśli Twój projekt dorobił się tysięcy commitów, to zmiana bazy 'core' może trochę potrwać. To wygląda tak, że git commit po commicie nakłada Twoje zmiany na bazę. To może spowodować konflikty, jeśli commit który cherry-pickowałeś jest zależny od struktury którą zbudowałeś dopiero w projekcie, ale to oczywiste. Jeśli w pewnym momencie zatrzyma Ci się rebase na konflikce, to po konflikcie nie zaczynasz procesu od nowa (bo dalej 'trwa' rebase) tylko kontynuujesz od miejsca w którym się zatrzymało przez polecenie:

Kod
$ git rebase --continue


Może się też zdarzyć, że proces rebaseowania zatrzyma Ci się w momencie commitu który cherry-pickowałeś. Tutaj po prostu nie dam sobie głowy uciąć, bo zwyczajnie nie pamiętam, czy git załatwi to sobie automatycznie i pominie pusty commit czy też powie Ci, że commit jest pusty (bo zmiany przez tego nakładane zostały już nałożone wcześniej). Jeśli to drugie, to ignorujesz commit jako niepotrzebny poleceniem:

Kod
$ git rebase --skip


Więcej Ci nie potrzeba w sumie. smile.gif

Edit: Jeśli rebase nie idzie po Twojej myśli, konfliktów pełno i końca nie widać, to zawsze możesz go przerwać za pomocą:

Kod
$ git rebase --abort


To w ułamku sekundy przywróci Ci stan sprzed polecenia rebase.

Ogólnie rebase to najpotężniejsze narzędzie jakie stoi za gitem. Za tydzień nie będziesz mógł bez niego żyć. Przenoszenie, łączenie, zmiana nazw commitów jest mega wygodna za pomocą trybu rebase interactive.
  Forum: Kontrola i zarządzanie projektami · Podgląd postu: #1152494 · Odpowiedzi: 28 · Wyświetleń: 4 022

Nattfarinn
Napisane: 26.10.2010, 12:09:52





Grupa: Zarejestrowani
Postów: 136
Dołączył: 19.09.2007
Skąd: Sosnowiec

Ostrzeżenie: (0%)
-----

Cytat(sybii @ 26.10.2010, 10:43:20 ) *
A to nie piractwo.

Piractwo to nie jedyna droga łamania prawa. Zastanów się, czy Twój serwis nie narusza regulaminu serwisu Wrzuta.pl, w tym punktu II.4.g:
Cytat(Regulamin)
Użytkownik w ramach korzystania z serwisu Wrzuta, na zasadach określonych Regulaminem i powszechnie obowiązującymi przepisami prawa, ma prawo w szczególności udostępniać w innych serwisach lub stronach internetowych pliki dostępne w serwisie Wrzuta, zainstalowane na serwerach Free4Fresh, wyłącznie za pomocą określonych w tym celu przez serwis Wrzuta kodów. Zakazane jest wklejanie, embedowanie (wstawianie), udostępnianie plików umieszczonych w serwisie Wrzuta w inny sposób, niż poprzez użycie powołanych kodów (tego typu działania spowodują - według wyboru Free4Fresh - blokadę konta danego użytkownika lub określonych plików lub innych określonych materiałów i treści lub blokadę dostępu do serwisu Wrzuta z określonych lokalizacji, w szczególności witryn, adresów IP itp.).

  Forum: PHP · Podgląd postu: #801173 · Odpowiedzi: 8 · Wyświetleń: 3 182

Nattfarinn
Napisane: 5.11.2009, 07:07:24





Grupa: Zarejestrowani
Postów: 136
Dołączył: 19.09.2007
Skąd: Sosnowiec

Ostrzeżenie: (0%)
-----

Cytat(seth-kk @ 5.11.2009, 02:45:17 ) *
Ad 1 sprintf() lub zwykly warunek doklejajacy zero do liczb mniejszych niz 10

Od takich operacji jest funkcja str_pad(); winksmiley.jpg
  1. setlocale(LC_TIME, 'pl_PL');
  2. echo strftime('%F', time());

@Down: Owszem, jest wiele sposobów smile.gif. Chciałem tylko powiedzieć, że str_pad() to funkcja przeznaczona do takich i tylko takich celów, dająca w tej kwestii nieco większe możliwości smile.gif
  Forum: Przedszkole · Podgląd postu: #677070 · Odpowiedzi: 4 · Wyświetleń: 865

Nattfarinn
Napisane: 4.11.2009, 07:57:46





Grupa: Zarejestrowani
Postów: 136
Dołączył: 19.09.2007
Skąd: Sosnowiec

Ostrzeżenie: (0%)
-----

No brakuje Ci kilku podstawowych rzeczy w tym skrypcie, a inne są umieszczone w złym miejscu. Śmiem też wątpić w to googlowe borykanie się, a sam kod jest lekko... posklejany winksmiley.jpg. To nie jest Twój kod, prawda?

  1. <form action="logowanie.php" method="post">
  2.  
  3. <?php
  4.  
  5. $directory = '../images/galeria/';
  6.  
  7. echo 'Pliki w '.$directory.': <select name="file">';
  8. foreach ( glob($directory.'*') as $file ) {
  9. if ( is_file($file) ) {
  10. echo ' <option>'.$file.'</option>';
  11. }
  12. }
  13. echo '</select>';
  14. if ( !empty($_POST['file']) ) {
  15. unlink($directory.$_POST['file']);
  16. }
  17.  
  18. ?>
  19.  
  20. <input type="submit" value="Usuń">
  21. </form>

Wersja poprawiona, ale ostrzegam, że to niebezpieczna rzecz.
  Forum: Przedszkole · Podgląd postu: #676770 · Odpowiedzi: 2 · Wyświetleń: 474

Nattfarinn
Napisane: 3.11.2009, 23:14:00





Grupa: Zarejestrowani
Postów: 136
Dołączył: 19.09.2007
Skąd: Sosnowiec

Ostrzeżenie: (0%)
-----

Wersja alternatywna, nie tak prosta (chyba, że nie widzisz przeszkód w przechowywaniu $a jako stringu od początku):
  1. $a = 1234;
  2. $aStr = (string)$a;
  3. $b = $aStr[2];
  Forum: Przedszkole · Podgląd postu: #676743 · Odpowiedzi: 7 · Wyświetleń: 1 121

Nattfarinn
Napisane: 3.11.2009, 19:10:13





Grupa: Zarejestrowani
Postów: 136
Dołączył: 19.09.2007
Skąd: Sosnowiec

Ostrzeżenie: (0%)
-----

Usuń spację pomiędzy dwukropkiem a wyrazem Location. Poprawny nagłówek wygląda:
  1. header("Location: xxxx");
  Forum: Przedszkole · Podgląd postu: #676678 · Odpowiedzi: 2 · Wyświetleń: 545

Nattfarinn
Napisane: 3.11.2009, 21:02:37





Grupa: Zarejestrowani
Postów: 136
Dołączył: 19.09.2007
Skąd: Sosnowiec

Ostrzeżenie: (0%)
-----

Kod
<button onClick="validation()" type="submit" name="wyslij" value="Wyslij">Wyslij</button>

Nie mam w tej chwili możliwości przetestowania czegokolwiek, ale dopisz return do onClick, czyli:
Kod
<button onClick="return validation()" type="submit" name="wyslij" value="Wyslij">Wyslij</button>
  Forum: PHP · Podgląd postu: #676710 · Odpowiedzi: 5 · Wyświetleń: 981

Nattfarinn
Napisane: 3.11.2009, 20:59:15





Grupa: Zarejestrowani
Postów: 136
Dołączył: 19.09.2007
Skąd: Sosnowiec

Ostrzeżenie: (0%)
-----

  1. $_SESSION["przedstaw"] = $login;

A jesteś pewien, że przypisujesz tutaj właściwą zmienną? Bo na moje oko, wg. Twojego kodu nadpisujesz wartość zmiennej sesyjnej, niezadeklarowaną wcześniej zmienną $login. smile.gif Nie widzę, reszty kodu, ale powinno to być raczej:
  1. $login = $_SESSION["przedstaw"];
  Forum: Przedszkole · Podgląd postu: #676708 · Odpowiedzi: 10 · Wyświetleń: 4 321

Nattfarinn
Napisane: 3.11.2009, 10:39:18





Grupa: Zarejestrowani
Postów: 136
Dołączył: 19.09.2007
Skąd: Sosnowiec

Ostrzeżenie: (0%)
-----

Cytat(aladin07 @ 3.11.2009, 10:35:02 ) *
w jaki sposób można z zadanego katalogu usunąć wszystkie pliki które posiadają
dajmy na to rozszerzenie xml
unlink wymaga podania konkretnej nazwy pliku
a nie wiem czy da się usunąć pliki o zadanym rozszerzeniu bez znajomości ich nazw?

Ależ nazwy plików można poznać (php: glob()), a wtedy i usunąć smile.gif

  1. $path = 'sciezka/do/plikow/';
  2. $xmls = glob($path.'*.xml');
  3. foreach ($xmls as $file) {
  4. unlink($path.$file);
  5. }


@Down: Przepraszam za to - pisałem z pamięci i nie pamiętałem czy glob zwraca pełną ścieżkę, czy tylko pełną nazwę pliku/katalogu smile.gif
  Forum: PHP · Podgląd postu: #676509 · Odpowiedzi: 2 · Wyświetleń: 1 049

Nattfarinn
Napisane: 3.11.2009, 09:49:00





Grupa: Zarejestrowani
Postów: 136
Dołączył: 19.09.2007
Skąd: Sosnowiec

Ostrzeżenie: (0%)
-----

Cytat(Rivia Luthine @ 3.11.2009, 07:36:13 ) *
PS 2: w pierwszej linii zapewne będę trzymała nazwy kolumn, gdyby w taki sposób nazywać zmienne;

Skoro dopiero plik miałby Ci podpowiedzieć jakich zmiennych używać, to w jaki sposób napisałabyś resztę kodu? smile.gif

Cytat(Rivia Luthine @ 3.11.2009, 07:36:13 ) *
Tylko w jaki sposób władować N zmiennych (mogą być takie same tzn zmienna1,2,3... ponumerowane), jeśli tabele będą przyjmować różne ilości kolumn?

A nie lepiej użyć tablicy wielowymiarowej? Przecież, skoro zależy Ci tylko i wyłącznie na tym, by wczytać dane z pliku i na nich operować, a jedynym wyznacznikiem tych danych jest numer kolumny w której się znajduje, to tablica jest przecież elementem który do takich celów został właśnie stworzony smile.gif.

  1. $plik = file('twoj_plik_csv.txt');
  2. $dane = array();
  3. foreach ( $plik as $number => $line ) {
  4. $dane[] = explode('|', $line);
  5. }

No i teraz przecież łatwo dostaniesz się do odpowiedniej linii i wartości kolumny (obrazowo):

  1. $linia = 12;
  2. $kolumna = 3;
  3. $to_co_chce = $dane[$linia][$kolumna];

Trzeba tylko pamiętać, że klucze tablicy liczone są od 0, więc odnoszenie sie do klucza 3 de facto będzie prowadziło do kolumny czwartej [0, 1, 2, 3] (sytuacja ma się analogicznie dla linii). Da się to oczywiście obejść, ale... po co. Taka jest specyfika tablic i tego trzeba się trzymać, a nie obchodzić. smile.gif

PS: Od takich operacji na plikach (zwanych plikami CSV) są odpowiednie funkcje (fgetcsv() i fputcsv()) ale nie zagłębiając się w szczegóły, można sobie bez nich poradzić nie najgorzej winksmiley.jpg.
PS2: Z tablicami i iteracja jest łatwiejsza i życie prostsze... Zalet jest mnóstwo a wad bardzo niewiele winksmiley.jpg
  Forum: Przedszkole · Podgląd postu: #676496 · Odpowiedzi: 2 · Wyświetleń: 521

Nattfarinn
Napisane: 3.11.2009, 10:28:49





Grupa: Zarejestrowani
Postów: 136
Dołączył: 19.09.2007
Skąd: Sosnowiec

Ostrzeżenie: (0%)
-----

Twoja sekcja:
  1. case 'required':
  2. (...)

Jest źle napisana. Sprawdzanie walidacji jest ograniczone do pierwszego poprawnego elementu (linia 89 i 90: return true;). Ten warunek jest tam zupełnie nie potrzebny. Nie zagłębiając się w resztę:
  1. (...)
  2. public function Validation() {
  3. foreach($this -> rules as $key => $rule) {
  4. foreach($rule as $post => $validRule) {
  5. $methodRule = explode('|', $validRule);
  6. $methodRule = $methodRule[count($methodRule)-1];
  7. switch($methodRule) {
  8. case 'required':
  9. if(method_exists(get_class($this), $methodRule)) {
  10. $required = $this -> $methodRule($post);
  11. if(!$required) {
  12. $this -> msg = 'Pole '.$key.' nie moze byc puste';
  13. }
  14. }
  15. break;
  16. }
  17. }
  18. }
  19. }
  20. (...)

I będzie śmigało... winksmiley.jpg
  Forum: Object-oriented programming · Podgląd postu: #676505 · Odpowiedzi: 2 · Wyświetleń: 708

Nattfarinn
Napisane: 2.11.2009, 15:51:24





Grupa: Zarejestrowani
Postów: 136
Dołączył: 19.09.2007
Skąd: Sosnowiec

Ostrzeżenie: (0%)
-----

Cytat(marcio @ 2.11.2009, 15:01:14 ) *
Powtarzam jak bedzie to w modelu to bedzie zgodne.

Czyli możesz napisać wprost, że zgodne nie jest, bo autor w pierwszym poście pytał przecież:
Cytat(Fixus @ 2.11.2009, 11:03:06 ) *
Teraz czy jeżeli bezpośrodnie w tym obiekcie odwołam się do bazy będzie to zgodne z tym wzorcem projektowym? Czy trzeba odwołać się do modelu który połączy się z bazą i to pobierze ?


Ale wracając do Twojego ostatniego pytania, tak jak nie wprost powiedział kolega: Ze wzorcem MVC zgodne nie będzie. Najpoprawniej i najwydajniej byłoby tworzyć obiekty klasy Human z już istniejących, pobranych przez odpowiedni model danych. Tworzenie obiektu, który dane pobiera sobie indywidualnie przez różnorakie metody (chociaż konstruktor byłby bardzo odpowiedni) ma niewielką rację bytu i nie widzę większego sensu tworzenia takich elementów. Owszem, jako pytanie teoretycznie przykład dobry, ale uczulam na takie zagrania smile.gif. Widzę, że największe problemy masz ze zrozumieniem czym właściwie jest wzorzec MVC i jak go zastosować. Po krótce mogę powiedzieć Ci tylko tyle, że to obiekty będące Modelami powinny wykonywać wszelkie operacje we/wy na danych z zewnętrznych źródeł (tj. baza danych, plik etc) i dopiero same dane przekazywać poszczególnym, wyspecjalizowanym obiektom. Model działa tutaj jako pośrednik i chociaż składnię może mieć niewiele bardziej skomplikowaną od Twojego przykładu i na dobrą sprawę jest zupełnie zbędny (obiektowość też jest przecież zbędna) - ujednolica projekt i sprowadza do stosowania metod modelu zamiast każdorazowego operowania zapytaniami czy plikami. To tyle jeśli chodzi o sam model. Literatury elektronicznej o MVC google podpowie o wiele więcej niż jestem w stanie sobie wyobrazić - dlatego nie będę próbował się z Google siłować winksmiley.jpg.

Podsumowując: nawet jeśli przykład...
  1. class Human {
  2. public $id = 12345;
  3. (...)
  4. public function getHuman($id) {
  5. $sql = "select * from tabela wher eid = 'id'";
  6. return (...);
  7. }
  8. }

... nie jest poprawny, to ten już jest:
  1. class PopulationModel {
  2. public function getHumanById($id) {
  3. $sql = "select * from tabela wher eid = 'id'";
  4. return (...);
  5. }
  6. }
  7.  
  8. class Human {
  9. public $id = 12345;
  10. public function getHuman($id) {
  11. $population = new PopulationModel();
  12. return $population->getHumanById($this->id);
  13. }
  14. }

Nie skupiam się w tym momencie nad sensownością, ale zachowaniem funkcjonalności przy jednoczesnej zgodności z MVC.
  Forum: PHP · Podgląd postu: #676298 · Odpowiedzi: 15 · Wyświetleń: 1 885

Nattfarinn
Napisane: 24.01.2008, 09:40:16





Grupa: Zarejestrowani
Postów: 136
Dołączył: 19.09.2007
Skąd: Sosnowiec

Ostrzeżenie: (0%)
-----

Cytat(janusz.master @ 23.01.2008, 20:45:45 ) *
No i teraz w pliku głównym wyswietlam np ilosc wykonanych zapytan.
Jak zrobić aby bazę pobierać i zmieniać jej oryginał questionmark.gif ?

Nie bardzo rozumiem, co chcesz powiedzieć przez oryginał/kopia bazy. Domyślam się, że chodzi Ci o objekt klasy bazy danych, o jego instancje. Wg. przykładu który podałeś, wszystko jest w porządku. Obiekt tworzysz tylko raz (... = new database();) a dalej operujesz tylko na jego uchwytach. Rejestr służy do przechowywania takich instancji w klasie statycznej i sprawuje nad nimi pewną kontrolę. Nie ma znaczenia czy operujesz na Registry::get('db'); czy bezpośrednio na $db, bo obie wartości są uchwytami tego samego obiektu. Więc, jeśli na końcu pliku dasz przykładowo Registry::get('db')->QueryCount(); czy $db->QueryCount(); wyświetli tą samą wartość, uwzględniającą wszystkie użycia obiektu klasy database, niezależnie gdzie i kiedy były używane.

Cytat(janusz.master @ 23.01.2008, 20:45:45 ) *
Nie do końca rozumiem sposob uzywania rejestru wiec nie wiem jak go uzyc.
Czytalem kilka art'ów o rejestrze ale wszędzie było tylko o jego roli i podstawowych funkcjach.
Proszę o wyjaśnienie.

Początkowo używanie rejestru może wydać sie niejasne, ale niewątpliwie ma wiele zalet (chociaż są opozycjoniści tego punktu widzenia). Przede wszystkim zapewnia pewną spójność, a nawet pokusiłbym sie o stwierdzenie: wygodę, pozwala sprawować pełną kontrolę na przepływem instancji czy operacje na nich. Podstawową funkcjonalnością jest możliwość dostępu do instancji danej klasy z dowolnego miejsca aplikacji (klasa statyczna) bez każdorazowego tworzenia nowych obiektów oraz bez użycia zmiennych globalnych (podoba funckjonalność). Tą funkcjonalność można rozszerzyć o wyżej wymienione rzeczy (kontrolę, operacje, wyjątki etc. - czego dusza zapragnie). Prosty, podstawowy sposób użycia:

Zamiast używania zmiennych globalnych (przykład poniższy):
  1. <?php
  2. $db = new database();
  3. ...
  4. class przyklad
  5. {
  6. public function funkcja()
  7. {
  8. global $db;
  9. $db->exeQuery(...);
  10. }
  11. }
  12. ?>


Użyjesz:
  1. <?php
  2. Registry::setObj("baza", new database());
  3. ...
  4. class przyklad
  5. {
  6. public function funkcja()
  7. {
  8. Registry::getObj("baza")->exeQuery(...);
  9. }
  10. }
  11. ?>


Pozostałych użyć opisywać nie będę, bo wychodzę z założenia że: "jeśli ich nie znasz to znaczy, że jeszcze ich nie potrzebowałeś". Przyjdzie samo z czasem smile.gif

Pozdrawiam!
Natt.
  Forum: Object-oriented programming · Podgląd postu: #433943 · Odpowiedzi: 3 · Wyświetleń: 1 259

Nattfarinn
Napisane: 27.12.2007, 15:08:51





Grupa: Zarejestrowani
Postów: 136
Dołączył: 19.09.2007
Skąd: Sosnowiec

Ostrzeżenie: (0%)
-----

  1. <?php
  2.  
  3. class moja_klasa
  4. {
  5. private $tajne;
  6. public static $statycznie = "na starcie";
  7. public function setZmienna($wartosc)
  8. {
  9. $this->tajne = $zmienna;
  10. }
  11. public function teczkaIPN()
  12. {
  13.  return $this->tajne;
  14. }
  15. public function __construct($poczatkowa)
  16. {
  17. echo "Tworzenie obiektu";
  18. $this->tajne = $poczatkowa;
  19. }
  20. }
  21.  
  22. $objekt = new moja_klasa("Jestem agentem");
  23. echo $objekt->teczkaIPN();
  24. $objekt->setZmienna("Nie jestem juz agentem! Nigdy nim nie bylem!");
  25. echo $objekt->teczkaIPN();
  26. echo moja_klasa::$statycznie;
  27. moja_klasa::$statycznie = "Zmienna statyczna";
  28.  
  29. ?>

Może i chaotycznie, ale na przykład wystarczy. smile.gif

Polecam lekturę: Rozdział 19. Classes and Objects (PHP 5)
  Forum: Przedszkole · Podgląd postu: #423575 · Odpowiedzi: 4 · Wyświetleń: 1 132

Nattfarinn
Napisane: 27.12.2007, 15:57:08





Grupa: Zarejestrowani
Postów: 136
Dołączył: 19.09.2007
Skąd: Sosnowiec

Ostrzeżenie: (0%)
-----

Dane wejściowe:
Kod
$imageFile - plik wejściowy (np. $_FILES["plik"]["tmp_name"])
$maxImageWidth - maksymalna szerokość obrazka wyjściowego (np. '100')
$maxImageHeight - maksymalna wysokość obrazka wyjściowego (np. '80')
$newImageName - nazwa pliku wyjściowego (bez rozszerzenia .jpg) (np. "miniatura")
$imageQuality - jakość obrazka wyjściowego (zakres 1..100) (np. '80')


  1. <?php
  2.  
  3. $imageData = imagecreatefromjpeg($imageFile);
  4. list($imageWidth, $imageHeight) = getimagesize($imageFile);
  5. $imageRatioWidth = $imageWidth > $maxImageWidth ? $maxImageWidth / $imageWidth : 1;
  6. $imageRatioHeight = $imageHeight * $imageRatioWidth > $maxImageHeight ? $maxInameHeight / $imageHeight : 1;
  7. $newImageSizeWidth = floor($imageWidth * $imageRatioWidth * $imageRatioHeight);
  8. $newImageSizeHeight = floor($imageHeight * $imageRatioWidth * $imageRatioHeight);
  9. $newImage = imagecreatetruecolor($newImageSizeWidth, $newImageSizeHeight);
  10. imagecopyresampled($newImage, $imageData, 0, 0, 0, 0, $newImageSizeWidth, $newImageSizeHeight, $imageWidth, $imageHeight);
  11. $savePath = $newImageName.".jpg";
  12. imagejpeg($newImage, $savePath, $imageQuality);
  13.  
  14. ?>


Maksymalny rozmiar docelowy ($maxImageWidth i $maxImageHeight) to właściwie rozmiar pliku który chcesz uzyskać po zmianie rozmiaru z tą tylko różnicą, że jeśli grafika wejściowa będzie mniejsza niż wyjściowa, nie ulegnie zmianie (zapobiega rozciąganiu małych obrazków).
  Forum: PHP · Podgląd postu: #423590 · Odpowiedzi: 12 · Wyświetleń: 5 466

Nattfarinn
Napisane: 27.12.2007, 14:31:53





Grupa: Zarejestrowani
Postów: 136
Dołączył: 19.09.2007
Skąd: Sosnowiec

Ostrzeżenie: (0%)
-----

Cytat(kowal199306 @ 23.12.2007, 12:06:01 ) *
Dla wielu wyda się to rzeczą analną

Cudowna literówka a jak zmienia sens zdania biggrin.gif.

Najprostszy przykład:

  1. <?php
  2.  
  3. $mysql_grip = mysql_connect("localhost","uzytkownik", "haslo");
  4. mysql_select_db("nazwa_bazy", $mysql_grip);
  5.  
  6. if(!empty($_GET["delete_id"])) { mysql_query("DELETE FROM nazwa_tabeli WHERE id_pola = ".$_GET["delete_id"], $mysql_grip); }
  7.  
  8. $mysql_result = mysql_query("SELECT * FROM nazwa_tabeli", $mysql_grip);
  9. echo "<table>";
  10. while($mysql_wynik = mysql_fetch_assoc($mysql_result))
  11. {
  12. echo "<tr><td>".$mysql_wynik["id_pola"]."</td><td>".$mysql_wynik["jakies_pole"]."</td><td>".$mysql_wynik["inne_pole"]."</td><td><input type='button' onclick='document.location = index.php?delete_id=".$mysql_wynik["id_pola"]."' value='Usuń'></td></tr>";
  13. }
  14. echo "</table>";
  15.  
  16. ?>
  Forum: Szukam · Podgląd postu: #423555 · Odpowiedzi: 1 · Wyświetleń: 929

Nattfarinn
Napisane: 20.12.2007, 15:59:48





Grupa: Zarejestrowani
Postów: 136
Dołączył: 19.09.2007
Skąd: Sosnowiec

Ostrzeżenie: (0%)
-----

Wywal cudzysłów z lini 7, ale nie z przypisywanych wartości jak w pierwszym poście bo to nie ma sensu, tylko z argumentu warunku IF, tak by było:
  1. <?php
  2. if ($HTTP_REFERER==$dan[0])
  3. ?>

Dalej. Raczej korzystaj z $_SERVER["HTTP_REFERER"].
Zamiast takiej formy pętli używaj:
  1. <?php
  2. while(($dan = fgetcsv($handle, 100)) !== false)
  3. {
  4. ...
  5. }
  6. ?>

Wtedy zobacz co się dzieje.
  Forum: Przedszkole · Podgląd postu: #421586 · Odpowiedzi: 7 · Wyświetleń: 1 205

Nattfarinn
Napisane: 20.12.2007, 11:42:53





Grupa: Zarejestrowani
Postów: 136
Dołączył: 19.09.2007
Skąd: Sosnowiec

Ostrzeżenie: (0%)
-----

Tak jak napisał b_chmura:
Cytat(b_chmura @ 20.12.2007, 11:42:15 ) *
większość przeglądarek blokuje wyskakiwanie nowych okien

A blokują bo takie wyskakujące okienka to uciążliwe paskudztwo i zły nawyk... smile.gif

Ale blokuje nie blokuje, rozwiazanie masz takie [JS]:

Kod
<script language="JavaScript">
function wiele_okien(adres1, adres2, adres3)
{
     window.open(adres1,'okno_1', 'width=800,height=500,toolbars=no,resizeble=no,scrollbars=yes');
     window.open(adres2,'okno_2', 'width=800,height=500,toolbars=no,resizeble=no,scrollbars=yes');
     window.open(adres3,'okno_3', 'width=800,height=500,toolbars=no,resizeble=no,scrollbars=yes');
}
</script>

<a href="" onclick="wiele_okien('http://www.php.pl', 'http://forum.php.pl', 'http://php.net');">Otworz wiele okien</a>
  Forum: Przedszkole · Podgląd postu: #421467 · Odpowiedzi: 3 · Wyświetleń: 1 064

Nattfarinn
Napisane: 20.12.2007, 11:26:13





Grupa: Zarejestrowani
Postów: 136
Dołączył: 19.09.2007
Skąd: Sosnowiec

Ostrzeżenie: (0%)
-----

Jak korzystasz z tego co ja wkleiłem ($users_in_group) to dodaj przed: $users_id = array(); linię $users_in_group = ""; i powinno być OK. winksmiley.jpg
  Forum: Przedszkole · Podgląd postu: #421458 · Odpowiedzi: 17 · Wyświetleń: 2 589


New Posts  Nowe odpowiedzi
No New Posts  Brak nowych odpowiedzi
Hot topic  Popularny temat (Nowe)
No new  Popularny temat (Brak nowych)
Poll  Sonda (Nowe)
No new votes  Sonda (Brak nowych)
Closed  Zamknięty temat
Moved  Przeniesiony temat
 

RSS Wersja Lo-Fi Aktualny czas: 27.04.2024 - 12:57