Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl


YourFrog
Napisane: 28.01.2021, 14:39:31





Grupa: Zarejestrowani
Postów: 124
Dołączył: 10.01.2014

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

Ja radzę tak:

1. Zrób kopie
2. Postaw lokalną wersję
3. Wgraj kopie na lokalną wersję
4. Zrób upgrade tak jak Pyton_000 napisał (Oczywiście na lokalnej bazie)
5. Sprawdź czy wszystko działa (Jeśli nie działa to zapisuj SQL'ki którymi naprawiasz)
6. Jeśli w pkt 5 miałeś choć jeden błąd to powtórz wszystko od pkt 2 z uwzględnieniem puszczenia zbiorowo SQL naprawiających.
7. Od tego momentu rób tylko jak w pkt 5 nie miałeś błędu
8. Ponów czynność na docelowym serwerze jednak na nowej bazie danych (jeśli nie masz wystarczająco miejsca / zasobów żeby postawić 2 baze to pomiń temat, jednak ja radzę wyczarować to miejsce)
9. Wykonaj pkt 1-6 z uwzględnieniem SQL do poprawy na bazie "snapowej". Dalej przejdź tylko jak nie miałeś błędów
10. Jeśli wiesz że w pkt 9 nie wystąpiły błędy to wykonaj tą samą czynność na bazie produkcyjnej.

Wydaje się sporo zachodu bo musisz 3x zrobić tą samą robotę jednak jak Ci się kiedyś wywali baza produkcyjna to zmienisz zdanie biggrin.gif
  Forum: Przedszkole · Podgląd postu: #1254750 · Odpowiedzi: 2 · Wyświetleń: 537

YourFrog
Napisane: 5.07.2019, 15:13:27





Grupa: Zarejestrowani
Postów: 124
Dołączył: 10.01.2014

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

Tak jak napisał nospor. Wszystko zależy co chcesz osiągnąć w podanym przez Ciebie przykładzie masz dwa różne końcowe rezultaty.


1. Jeżeli zrobisz szablon który obsługuje wygenerowanie pojedynczego elementu (z include wewnątrz foreach) to otrzymasz jakiś szablon który potrafi wygenerować TYLKO ten jeden element dzięki temu jest on bardziej elastyczny itp. Jeżeli wewnątrz używasz block'ów to już w ogóle.

2. Stworzenie szablonu który na wejściu przyjmuje kolekcje elementów i sama przez nie iteruje w celu wygenerowania widoku doprowadzi do stworzenia potworka który będziesz miał problem zarządzać.


Najczęściej lepiej jest stworzyć dwa szablony jeden do listy, a drugi do pojedynczego elementu listy dzięki temu masz separacje nawet na poziomie struktury plików i łatwiej się je reużywa. Dodatkowo taka rada oddemnie z doświadczenia wiem że lepiej jest zawsze jawnie przekazywać parametry przy include do szablonu, a na początku danego szablonu stworzyć sobie "docblock" który opisze jakie parametry można przekazać do danego szablonu. Często to zaoszczędzi Ci wiele czasu później na poszukiwaniu.

Tutaj masz przykład z FOSUserBundle symfony oni nawet "content" oddzielają od definicji "layout'u" na wypadek gdyby użytkownik chciał zrobić override tylko częsci.

https://github.com/FriendsOfSymfony/FOSUser...s/views/Profile
  Forum: Przedszkole · Podgląd postu: #1243323 · Odpowiedzi: 3 · Wyświetleń: 285

YourFrog
Napisane: 13.06.2014, 09:18:58





Grupa: Zarejestrowani
Postów: 124
Dołączył: 10.01.2014

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

@Andwww
Widzisz to jak podzielisz prace zależy od wielkości projektu i tego jaką metodykę pracy przyjmiesz. Jeżeli nie masz z góry ustalonej żadnej metodyki najlepiej będzie jak przyjmiesz że jesteś szefem projektu i przydzielasz zadania. Wtedy (zakładając że projekt szacujesz na 3-4 msc w PHP) rozłożył bym sobie tak prace.


1. Napisanie dokumentacji projektu dzięki której osoba która ją przeczyta będzie wstanie z tobą podyskutować nad projektem. Jednak uważaj taka dokumentacja nie powinna być dłuższa niż 2-3 wieczory przy kubku kawy. Tutaj najlepszym konsultantem jest ktoś sceptyczny do twojego projektu (w moim przypadku moja kobieta która jest największym pesymistą na świecie biggrin.gif). Jeżeli dokumentacja przekona tą osobę to ruszasz dalej.
2. Ustalisz wymagane technologie w których zostanie napisana aplikacja (tutaj z pomocą według mnie mógłby przyjść toster/nospor ponieważ nie wydają się fanatykami swoich technologi). Ważna uwaga MUSISZ mieć tutaj konsultanta z IT ponieważ sam to wybierzesz duet MySQL + PHP w ciemno ;p Aha nie daj twojemu zespołowi później zmienić technologii niech sobie biblioteki tylko wybiorą sami.
- Baza danych (MySQL, PosgresSQL, MirandaDB, NoSQL)
- Aplikacja (backend) (PHP, Ruby, Java, Python)
- Interfejs (CSS, HTML, Applet Java*)
3. Rekrutujesz. Ważne byś miał konsultanta do rekrutacji (TYLKO 1 osoby) takiego trzonu zespołu bardzo ważne jest żebyś zatrudnił osobę która jest baaardzo dobra. Jej technologia nie ma znaczenia (ważne żeby się wspasował w jedną z ról przy projekcie). Przyjmie on obowiązki konsultanta na okres rekrutacji ponieważ dobrzy ludzie zatrudniają dobrych ludzi. Innymi słowy ten 1 człowiek będzie trzonem twojego zespołu IT (wibowit/somekid byli by tu świetni boshe jak oni cisną na 4p wszystkich ludzi którzy napiszą głupotę :]).
4. Zanim skończysz rekrutacje powinieneś mieć już na stole klepnięty wygląd aplikacji z dokumentacją. Da to twojemu zespołowi silny start ponieważ będą wiedzieli jak to zrobić.
5. Zanim zespół zacznie kodzić niech 1-2 Dni projektuje z tobą baze danych w oparciu o widoki. TUTAJ MUSISZ MIEĆ 100% czasu dla nich. To ty wiesz wszystko o projekcie więc tak naprawdę tylko ty możesz im pomóc ją zaprojektować. Później niech spojrzy na to konsultant któremu przekażesz wymagania odnośnie ilości danych i omówisz z nim projekt (polecam ci tego z bloga książki).
6. Zespół ma zielone światło na prace przy projekcie wink.gif znów (nospor + Toster niech się nimi opiekują)

Odnośnie zespołu to jeżeli chcesz mieć 2 programistów to tylko backend + frontend odzielnie. Z własnego doświadczenia wiem że jak ktoś siedzi w backendzie to będzie miał braki przy wdrażaniu czegoś zgodnego z W3C. Po za tym JS jest trudnym językiem wbrew temu co wszystkim się wydaje. Jeśli jednak masz kasę na 3 programistów to bez wachania powiększaj tych co siedzą po stronie serwera. Oni będą pracować wolniej od Frontendowca. Nie muszę mówić że możesz go zwolnić wcześniej niż zamkniesz projekt. Ważne żeby wszystko pozapinał na ostatni guzik i miał dogadany sposób komunikacji z nie istniejącymi jeszcze bebechami.

W modelu jaki ci pokazałem to świetnie spisali by się freelancerzy ponieważ oni się nie obrażą jak im zaproponujesz projekt na 3msc i później z doskoku modyfikowanie go tylko. A ty zaoszczędzisz kasę. No i oczywiście konsultantom płacisz tylko za faktyczny czas po ich normalnej pracy co również wpłynie pozytywnie na twój portfel.


Narzędzia (tylko moje propozycje)
- Dokumentacja to tylko prywatna wikipedia. Ma owiele większe możliwośći niż pliki w wordzie,
- Widoki osobiście używam pencil'a,
- Baza danych - Tutaj zależy od bazy,
- Schematy UML. Polecam Dia może i nie jest takim UML'em jaki powinien być ale wystarcza,
- IDE - Pozostaw wolną ręke programistom,
- Repo - Git / Svn (są inne ale nie miałem doczynienia),
- Serwer niech ci któryś z konsultantów go skonfiguruje (najlepiej ten od bazy). Zrobi to szybko miło i przyjemnie.


Za błędy w gramatyce sorka ale piszę z pracy i mam tak średnio czasu, a lubie takie tematy biggrin.gif
* - Bad idea no ale opcja jest haha.gif
  Forum: Przedszkole · Podgląd postu: #1110722 · Odpowiedzi: 7 · Wyświetleń: 448

YourFrog
Napisane: 12.06.2014, 09:46:21





Grupa: Zarejestrowani
Postów: 124
Dołączył: 10.01.2014

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

Jeżeli cię stać (a powinno cię być stać rozpoczynając projekt informatyczny gdzie sam nie programujesz). Zawsze lepiej jest żeby nad czymś nie pracowała 1 osoba (dlaczego ?), a no dlatego że jak coś spartoli to dowie się o tym dopiero gdy nie będzie wstanie wdrożyć następnej funkcjonalności. Nawet najlepsi programiści popełniają błędy bo to przecież tylko ludzie.

Jeżeli to mały portalik (szacowany czas pracy 3-4 msc na 1 osobę) to żeby go faktycznie dowieźć w te 3-4 msc lepiej jak zatrudnisz 2 programistów bo inaczej się nie wyrobią haha.gif. Radziłbym ci również korzystać z umiejętności osób szanowanych w środowisku IT (nie mówie tylko o programistach PHP, ale również o administratorach, prgramistach innych języków, kogoś od GUI jakby oni się nie nazywali ;p). Niech robią za tzw. Konsultantów którzy za drobną opłatą co jakiś czas spojrzą na aplikację czy faktycznie od strony kodzenia i pomysłów na wdrożenia zmierza w dobrą stronę.

Aha byłbym zapomniał człowiek od wszystkiego jest do niczego. Więc wygląd niech ci zaprojektuje kto inny niż programuje backend, za wyciąganie danych niech odpowiada kto inny niż za logike twojej aplikacji itp. Pieniądze i tak musisz wydać, a czy zrobisz do 1 czy 10 osobą to co za różnica skoro nadal to będzie np. 30k ?


Ze swojej strony mógłbym ci polecić 3 osoby które nadają się świetnie w rolach konsultantów (nie ma mnie wśród nich ;p, a to co pisze to moje prywatne odczucia).
- nospor no chyba modka nikomu nie trzeba przedstawiać biggrin.gif
- Toster z unit1.pl - http://thetosters.pl
- http://blog.ksiazek.info nie znam jego niku na forach, ale jego blog to kopalnia wiedzy na temat prawidłowego obługiwania bazy danych MySQL (jest administratorem)
- wibowit z 4programmers.net
- somekid z 4programmers.net

Jeśli chcesz to mogę streścić który z nich jako jaki konsultant by się nadawał bo nie chce mi się pisać jeżeli nie jesteś zainteresowany występowaniem konsultantów w projekcie. Aha no i nie zatrudniaj SAMYCH słabych programistów. Według mnie na 3 programistów musi być choć 1 guru który jest ich tzw. mentorem i do którego mogą iść. Naprzykład zakładając że 1.5k to płaca minimalna, a 6k to guru (kwoty wyciągnięte z kapelusza).

Na zespół PROGRAMISTÓW
- 1 za 4-6k
- 1 za 2-3k
- 1 za 1.5k - 2.5k

Dlaczego tak ? Bo zapewniasz synergie w kodzie, nowy długo ci nie odejdzie jak będzie miał dobre warunki pracy, a szybko z tzw. juniora przy principalu stanie się seniorem.
  Forum: Przedszkole · Podgląd postu: #1110544 · Odpowiedzi: 7 · Wyświetleń: 448

YourFrog
Napisane: 11.06.2014, 12:39:15





Grupa: Zarejestrowani
Postów: 124
Dołączył: 10.01.2014

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

JQuery
size - manual
  1. $(document).ready(function(){
  2. alert( $('input=[name="row[]"]').length ); //Nie bijcie przyznaje się do użycia size() ;p
  3. });


Ale i tak wolałbym obiekt który sam tym zarządza zamiast się na coś takiego łasić ;p
  Forum: Przedszkole · Podgląd postu: #1110405 · Odpowiedzi: 4 · Wyświetleń: 193

YourFrog
Napisane: 10.06.2014, 13:47:31





Grupa: Zarejestrowani
Postów: 124
Dołączył: 10.01.2014

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

Zamiast "xxx" podstaw nazwę sekcji. Nie mam jak przetestować ale wydaje mi się że nie powinno być problemu (dokumentacja).

  1. {section name=xxx loop=$forend start=0 step=1}
  2. {if $smarty.section.xxx.index == $page}
  3. <li class="current">
  4. {else}
  5. <li>
  6. {/if}
  7.  
  8. <a href="index.php?page={$smarty.section.xxx.index}">[{$smarty.section.xxx.index}]</a></li>
  9. {/section}


Zapomniałem o założeniach (przykładowo):
  1. $forend = 5; //Musi być int
  2. $page = 2; //Musi być int

  Forum: Przedszkole · Podgląd postu: #1110194 · Odpowiedzi: 2 · Wyświetleń: 445

YourFrog
Napisane: 10.06.2014, 09:58:57





Grupa: Zarejestrowani
Postów: 124
Dołączył: 10.01.2014

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

  1. <?php
  2.  
  3. $arr = [33, 11, 55, 22];
  4. rsort($arr);
  5.  
  6. list($first, $second, $thirth, $fourth) = $arr;
  7.  
  8.  
  9. var_dump($arr);
  10. var_dump($first, $second, $thirth, $fourth);


Co do zmiennych pobocznych to zamiast rsort użyj jednej z metod które pozwalają definiować własne metody sortujące np usort.
  Forum: Przedszkole · Podgląd postu: #1110158 · Odpowiedzi: 4 · Wyświetleń: 358

YourFrog
Napisane: 10.06.2014, 09:52:12





Grupa: Zarejestrowani
Postów: 124
Dołączył: 10.01.2014

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

Ja gafę strzeliłem tongue.gif Leci rehablilitacja

  1. <script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
  2. $(document).ready(function(){
  3. $('form#main-search').submit(function(){
  4. var attr = $(this).attr("action");
  5. attr += "#query=" + encodeURI($('input.query').val());
  6.  
  7. $(this).attr("action", attr );
  8. return true;
  9. });
  10. });
  11. </script>
  12. </head>
  13. <form action="http://onet.pl/" id="main-search" method="post">
  14. <input name="x" class="query"/>
  15. <button type="submit">Send</button>
  16. </form>
  17. </body>
  18. </html>
  Forum: Przedszkole · Podgląd postu: #1110157 · Odpowiedzi: 12 · Wyświetleń: 405

YourFrog
Napisane: 18.03.2014, 20:14:38





Grupa: Zarejestrowani
Postów: 124
Dołączył: 10.01.2014

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

Teraz na topie jest wzorzec MVC także router rozbija scieżkę i uruchamia odpowiedni kontroller. Jak to zaimplementujesz to już inna sprawa. Najbardziej elastycznie ma to zrobione symfony 2 jednak jest to chyba najbardziej nie optymalne rozwiązanie jakie widziałem.

Jeżeli nie chcesz się uczyć z frameworków to nospor na swoim blogu przedstawił ładne rozwiązanie dla przyjaznych linków wystarczy dopisać odpowiedni router i już.
  Forum: Przedszkole · Podgląd postu: #1097218 · Odpowiedzi: 6 · Wyświetleń: 251

YourFrog
Napisane: 13.03.2014, 08:30:57





Grupa: Zarejestrowani
Postów: 124
Dołączył: 10.01.2014

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

Dodam tylko dbaj o swój kod. Czytelność zaprocentuje w przyszłości.

  1. <?php
  2.  
  3. $page_id = (isset($_GET['page_id']) ? $_GET['page_id'] : 1);
  4.  
  5. $menu = array(
  6. array('page_id' => 1, 'name' => 'HOME', 'href' => 'index.php?page_id=1'),
  7. array('page_id' => 2, 'name' => 'O mnie', 'href' => 'index.php?page_id=2')
  8. );
  9.  
  10. $html = '';
  11. foreach($menu as $val)
  12. {
  13. $html .= '<li class="' . ($page_id == $val['page_id'] ? 'active' : 'no-active') . '">
  14. <a href="' . $val['href'] . '" >' . $val['name'] . '</a>
  15. </li>';
  16. }
  17.  
  18. echo $html;



@Edit
Notepad++ nie lubi tego forum jeśli chodzi o formatowanie tongue.gif
  Forum: Przedszkole · Podgląd postu: #1096311 · Odpowiedzi: 6 · Wyświetleń: 303

YourFrog
Napisane: 11.03.2014, 11:37:37





Grupa: Zarejestrowani
Postów: 124
Dołączył: 10.01.2014

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

Zakładając że posiadasz adresy e-mail rozdzielone znakiem nowego wiersza możesz użyć czegoś takiego.

  1. <?php
  2.  
  3. $files = array('list_1.txt', 'list_2.txt'); //Nazwy plików z listami
  4. $emails = array();
  5.  
  6. foreach($files as $file)
  7. {
  8. $data = file_get_contents($file);
  9.  
  10. $temp = explode(PHP_EOL, $data);
  11.  
  12. array_walk($temp, function(&$a){ $a = trim($a); });
  13.  
  14. $emails = array_merge($emails, $temp);
  15. }
  16.  
  17. $emails = array_unique($emails);
  18.  
  19. file_put_contents('out.txt', implode(PHP_EOL, $emails));


W katalogu ze skryptem powinien pojawić się plik out.txt zawierający adresy e-mail które się nie powtarzają.
  Forum: Przedszkole · Podgląd postu: #1095921 · Odpowiedzi: 6 · Wyświetleń: 523

YourFrog
Napisane: 11.03.2014, 10:30:40





Grupa: Zarejestrowani
Postów: 124
Dołączył: 10.01.2014

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

Nie wydaje mi się aby ilość linków miała jakieś znaczenie. W końcu na chłopski rozum wiadomość z 1 linkiem może być spamem, łańczuszkiem czy innym dziadostwem ;p Osobiście zainteresowałbym się ilością punktów jakie otrzymasz w jakimś testerze online.

W poprzedniej firmie używałem tej strony do sprawdzenia. Po uzyskaniu max pkt nie ma mowy byś trafił do spamu na gmail'u.

@Edit
Zapomniałem. Musisz po prostu wysłać e-mail który ślesz jako mass mailing na adres podany na środku ekranu. Po tym klikasz "check" i już tylko poprawiasz błędy.
  Forum: PHP · Podgląd postu: #1095901 · Odpowiedzi: 10 · Wyświetleń: 418

YourFrog
Napisane: 11.03.2014, 10:03:23





Grupa: Zarejestrowani
Postów: 124
Dołączył: 10.01.2014

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

Wydaje mi się że w 1 poście dostałeś odpowiedź użyj fabryki i po problemie.

  1. <?php
  2.  
  3. /**
  4.  * Interfejs zapewniający nam to samo API klas
  5.  * @Author Paweł Stelmasiak <YourFrog>
  6.  */
  7. interface IString
  8. {
  9. public function ucfirst($str);
  10. }
  11.  
  12. /**
  13.  * Klasa obsługująca stringi MB (multibyte)
  14.  * @Author Paweł Stelmasiak <YourFrog>
  15.  */
  16. class StringMB implements IString
  17. {
  18. public function ucfirst($str)
  19. {
  20. return mb_strtoupper(mb_substr($str, 0, 1, 'UTF-8'), 'UTF-8') . mb_strtolower(mb_substr($str, 1, null, 'UTF-8'), 'UTF-8');
  21. }
  22. }
  23.  
  24. /**
  25.  * Klasa obsługująca standardowo stringi
  26.  * @Author Paweł Stelmasiak <YourFrog>
  27.  */
  28. class String implements IString
  29. {
  30. public function ucfirst($str)
  31. {
  32. return ucfirst($str);
  33. }
  34. }
  35.  
  36. /**
  37.  * Fabryka decydująca o rodzaju wykorzystywanej klasy stringów
  38.  * @Author Paweł Stelmasiak <YourFrog>
  39.  */
  40. class StringFactory
  41. {
  42. static protected $instance = null;
  43.  
  44. /**
  45. * Zwraca odpowiednią klasę
  46. * @return IString
  47. */
  48. static public function build()
  49. {
  50. if( self::$instance === null )
  51. {
  52. if( extension_loaded('mbstring') )
  53. self::$instance = new StringMB();
  54. else
  55. self::$instance = new String();
  56. }
  57.  
  58. return self::$instance;
  59. }
  60. }
  61.  
  62.  
  63.  
  64.  
  65. //Gdzieś w pliku php
  66. $string = StringFactory::build();
  67. var_dump($string->ucfirst('ala ma kota') );
  Forum: PHP · Podgląd postu: #1095894 · Odpowiedzi: 7 · Wyświetleń: 652

YourFrog
Napisane: 11.03.2014, 12:14:46





Grupa: Zarejestrowani
Postów: 124
Dołączył: 10.01.2014

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

On ci powiedział że źle zaplanowałeś bazę. Dla ludzi powinna być odzielna tabela, a dla firm odzielna.

  Forum: Skrypty obsługi baz danych · Podgląd postu: #1095934 · Odpowiedzi: 4 · Wyświetleń: 12 480

YourFrog
Napisane: 17.01.2014, 19:51:09





Grupa: Zarejestrowani
Postów: 124
Dołączył: 10.01.2014

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

Hej,

Mistrzem JQuery nie jestem ale mam nadzieje że zrozumiesz przykład. W przykładzie specjalnie dałem jeden input o wartości nie będącej liczbą abyś nie zapomniał w swoim kodzie zabezpieczyć się przed taką ewentualnością. Dodatkowo będziesz musiał sobie selector w JS poprawić ale wydaje mi się że z tym to już sobie sam poradzisz.

Kod wydaje się być jasny także nie będę go tłumaczył.


  1. <title>Przykład</title>
  2. <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  3. <script src="//ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
  4. $(document).ready(function(){
  5. $('.clickable').click(clickOnInput);
  6.  
  7. clickOnInput();
  8. });
  9.  
  10. function clickOnInput()
  11. {
  12. var sum = 0;
  13.  
  14. $('input:radio:checked').each(function(){
  15. var dataValue = $(this).attr('data-value');
  16.  
  17. if( dataValue === 'undefinded' || isNaN(dataValue) )
  18. return true;
  19.  
  20. sum += parseInt(dataValue);
  21. });
  22.  
  23. $('.sum').html(sum);
  24. }
  25. </script>
  26. </head>
  27. <div class="group-1">
  28. <input type="radio" value="1" name="group[1]" class="clickable" data-value="xx">
  29. <input type="radio" value="2" name="group[1]" class="clickable" data-value="100">
  30. <input type="radio" value="3" name="group[1]" class="clickable" data-value="1000">
  31. </div>
  32.  
  33. <div class="group-2">
  34. <input type="radio" value="1" name="group[2]" class="clickable" data-value="5">
  35. <input type="radio" value="2" name="group[2]" class="clickable" data-value="50">
  36. <input type="radio" value="3" name="group[2]" class="clickable" data-value="500">
  37. </div>
  38.  
  39. <p>Suma wartości to <span class="sum">0</span></p>
  40. </body>
  41. </html>
  Forum: Przedszkole · Podgląd postu: #1085904 · Odpowiedzi: 6 · Wyświetleń: 1 348

YourFrog
Napisane: 17.01.2014, 13:01:42





Grupa: Zarejestrowani
Postów: 124
Dołączył: 10.01.2014

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

Podaj do mysql_connect i do mysql_select_db odpowiednie dane, uruchom obejrzyj wyniki i przenalizuj.

  1. <?php
  2.  
  3. mysql_connect('localhost', 'root', '');
  4. mysql_select_db('dbname');
  5.  
  6. $sql = 'SELECT
  7. s.session_id,
  8. s.operator_id,
  9. o.login
  10. FROM
  11. sesja AS s,
  12. operator AS o
  13. WHERE
  14. godz_wyl = "0000-00-00 00:00:00" AND
  15. o.id = s.operator_id';
  16.  
  17. $resource = mysql_query($sql);
  18.  
  19. if( $resource === FALSE )
  20. throw new \Exception('Wystąpiły błędy w zapytaniu. ' . mysql_error());
  21.  
  22. $arr = array();
  23. while( $row = mysql_fetch_assoc($resource) )
  24. {
  25. $temp = array();
  26. foreach($row as $key => $value)
  27. $temp[$key] = $value;
  28.  
  29. $arr[] = $temp;
  30. }
  31.  
  32.  
  33. var_dump($arr);
  Forum: Przedszkole · Podgląd postu: #1085836 · Odpowiedzi: 16 · Wyświetleń: 938

YourFrog
Napisane: 15.01.2014, 20:38:05





Grupa: Zarejestrowani
Postów: 124
Dołączył: 10.01.2014

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

Poniższe działa. Chyba zwykłe przypisywanie "=" powoduje utratę "referencji". Nie jak w normalnym języku deskopowym że jak masz pointera to masz pointera.

  1. <?php
  2. ini_set('display_errors', 1);
  3.  
  4. class A
  5. {
  6. protected $a = array();
  7.  
  8. public function &getA()
  9. {
  10. return $this->a;
  11. }
  12.  
  13. public function setA(&$value)
  14. {
  15. $this->a =& $value;
  16. }
  17. }
  18.  
  19. $arr = array('a' => 10);
  20. $a = new A();
  21. $a->setA($arr);
  22. $brr =& $a->getA();
  23. $brr['a'] = 20;
  24. die(var_dump($arr));


@Down
Masz rację mój błąd z tymi pointerami.
  Forum: Object-oriented programming · Podgląd postu: #1085484 · Odpowiedzi: 8 · Wyświetleń: 1 051

YourFrog
Napisane: 15.01.2014, 19:04:33





Grupa: Zarejestrowani
Postów: 124
Dołączył: 10.01.2014

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

  1. <?php
  2.  
  3. $arr = array(
  4. array( 23.42, 22.33, "Nr 2" ),
  5. array( 22.32, 23.74, "Nr 1" ),
  6. array( 22.91, 21.98, "Nr 3" )
  7. );
  8.  
  9. function getMinRow($arr)
  10. {
  11. $count = count($arr);
  12.  
  13. if( $count == 0 )
  14. throw new \InvalidArgumentException('tablica musi być dwu wymiarowa');
  15.  
  16. $ret = $arr[0];
  17.  
  18. for( $i = 1; $i < $count; $i++ )
  19. if( $ret[0] > $arr[$i][0] )
  20. $ret = $arr[$i];
  21.  
  22. return $ret;
  23. }
  24.  
  25. var_dump(getMinRow($arr));
  Forum: Przedszkole · Podgląd postu: #1085454 · Odpowiedzi: 1 · Wyświetleń: 126

YourFrog
Napisane: 15.01.2014, 19:46:56





Grupa: Zarejestrowani
Postów: 124
Dołączył: 10.01.2014

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

Z tego co zrozumiałem chodziło ci o rozwiązanie przy pomocy JS. Mistrzem javascriptu to ja nie jestem i potrafię pisać jedynie z użyciem JQuery także łapaj kod.

  1. <title>Przykład z radio buttonem</title>
  2. <meta charset="utf-8" />
  3. <script src="//ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
  4.  
  5. $(document).ready(function(){
  6. var spanLetter = $('span.letter');
  7.  
  8. $('input').click(function(){
  9. var val = $(this).val();
  10.  
  11. if( val == 1 )
  12. {
  13. spanLetter.show();
  14. return;
  15. }
  16.  
  17. spanLetter.hide();
  18. });
  19. });
  20. </script>
  21. </head>
  22. <form method="post" action="">
  23. <tr>
  24. <td>
  25. <input type="radio" name="sample" value="1" id="sample-1" checked="checked">
  26. <label for="sample-1">Pokaż literę "A"</label>
  27. </td>
  28. <td>
  29. <input type="radio" name="sample" value="2" id="sample-2">
  30. <label for="sample-2">Ukryj literę "A"</li>
  31. </td>
  32. </tr>
  33. <tr>
  34. <td colspan="2">
  35. <p>Oto magiczna litera >> <span class="letter">A</span></p>
  36. </td>
  37. </tr>
  38. </table>
  39. </form>
  40. </body>
  41. </html>
  Forum: Przedszkole · Podgląd postu: #1085468 · Odpowiedzi: 3 · Wyświetleń: 616

YourFrog
Napisane: 15.01.2014, 16:37:09





Grupa: Zarejestrowani
Postów: 124
Dołączył: 10.01.2014

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

Może i mój kod się wykonuje jak ślimak przy wyrażeniu. Ale chociaż działa ;P

http://wklej.to/0va2v


var_dump na $matches daj u siebie. Wieczorem ci napisze wyrażenie choć osobiście ci go nie polecam.

@Edit.
Gdy zmniejszyłem ciag do takiego jak podałeś na forum to spadek jest tylko 8 krotny z 0.001 do 0.008 więc nie tak źle dla krótkich ciągów znaków
  Forum: PHP · Podgląd postu: #1085445 · Odpowiedzi: 5 · Wyświetleń: 336

YourFrog
Napisane: 10.01.2014, 13:39:34





Grupa: Zarejestrowani
Postów: 124
Dołączył: 10.01.2014

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

Niema idealnego sposobu bo gdyby był to ty byś nie tworzył swojego diagramu logowania, ja bym nie miał swojego sposobu uwierzytelniania. Ilu programistów spotkasz na swojej drodze życiowej tyle będzie rozwiązań. Proponuję ci przejrzeć sprawdzone sposoby logowania które istnieją od dłuższego czasu w "stabilnych" aplikacjach open source jak WordPress, Joomla, Prestashop, Zend (Moduł Authorization), Symfony (Moduł Guard), Drupal itp. itd.

W pewnym momencie zrozumiesz że i tak wszystkie sposoby rozbijają się o głupiutkiego użytkownika który zapisuje hasła, nie wylogowuje się idąc na kawę, daje laptopa dziecią itp. itd. Jedyne co możesz robić to próbować te wszystkie rzeczy niwelować. Właśnie jak generowanie kluczy na nowo przy zmianie zakładki, wykonywanie ajax'owo zapytań o aktualny klucz, wylogowywać po x czasu, nie pozwalać się zalogować kilku osobą na jedno konto, blokować konta przy próbie zalogowania się na raz 2 użytkowników z nie zaufanych przeglądarek.

Ogólnie zostań przy swoim, a nasze gadanie przeczytaj i przyswój. Bo schemat schematem, a pozostaje jeszcze kod który może posiadać również swoje dziury. A o wymaganiach przyszłych klientów/pracodawców nie wspominając wink.gif

Dość dobry artykuł o własnych sesjach przedstawił zyxist na swoim blogu.
  Forum: PHP · Podgląd postu: #1084538 · Odpowiedzi: 10 · Wyświetleń: 821

YourFrog
Napisane: 10.01.2014, 13:21:58





Grupa: Zarejestrowani
Postów: 124
Dołączył: 10.01.2014

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

Zainstaluj FireFox'a z FireBug'iem. Po wejściu na stronę kliknij prawym i wybierz "Zbadaj element za pomocą firebuga". Przejdź do zakładki "Konsola" i odśwież stronę. Jeżeli sie wykonują jakieś zapytania ajax'em to będziesz je widział. Jeśli się wykonują ajax'em to zapewne będą przesyłane w formacie Json i wystarczy ci wtedy użycie funkcji "json_decode" + "file_get_contents". Jeżeli nie to napisz adres strony to ktoś napewno ci powie coś więcej.
  Forum: PHP · Podgląd postu: #1084535 · Odpowiedzi: 3 · Wyświetleń: 268


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: 25.04.2024 - 00:48