Napisane: 15.12.2012, 21:43:33 | |
Grupa: Zarejestrowani Postów: 1 748 Dołączył: 21.08.2009 Skąd: Gdynia Ostrzeżenie: (0%) |
do łączenia tabel służy JOIN, znajdziesz dużo tutoriali o tym i gotowych przykładów, oraz polecam manual mysql, dodam tylko jedną bardzo ważną uwagę, w systemie do identyfikacji i powiązywania danych z różnych tabel używamy ID rekordu, a nie loginu, który np. może się potem zmienić i będziesz miał problem. Tak, więc w foto nie trzymaj login tylko user_id |
Forum: PHP · Podgląd postu: #1012558 · Odpowiedzi: 2 · Wyświetleń: 196 |
Napisane: 27.10.2012, 20:40:22 | |
Grupa: Zarejestrowani Postów: 1 748 Dołączył: 21.08.2009 Skąd: Gdynia Ostrzeżenie: (0%) |
Cytat A tak btw każdy mi mówi że PDO lepsze możesz mi napisać dlaczego ? Ja rozumiem, że forum to miejsce gdzie się zadaje pytania, ale to nie znaczy, że trzeba pytać o wszystko czego się nie wie, bo tak to by każdego dnia było 5 000 nowych tematów. W dzisiejszych czasach jedną z bardzo ważnych umiejętności jest umiejętność wyszukiwania informacji, masz taką piękną stronę jak Google, która zna odpowiedź na prawie wszystkie pytania. I niestety musisz się kiedyś nauczyć z niego korzystać. Nie będę Ci tu teraz pisał wywodu czemu PDO, bo to nie jest coś co się streści w 2 słowach. W sieci są o tym obszerne artykuły i napewno rozwieją wiele Twoich wątpliwości.http://net.tutsplus.com/tutorials/php/why-...atabase-access/ http://php.pl/Wortal/Artykuly/Pomysly-pora...aczego-PHP5/PDO Cytat czyli pytanie jak teraz zrobić by pobierało samą wartość 5 A może tak zadaj sobie odrobinę trudu i przeanalizuj te 3 linijki kodu, wystarczy, że w manualu przeczytasz co robią użyte przez Ciebie funkcję i odrazu będziesz wiedział jak to zrobić. Nie zrozum mnie źle, ale tu się ludziom pomaga, a nie pisze za nich skrypty, wymagany jest wkład własny. powodzenia |
Forum: PHP · Podgląd postu: #1002341 · Odpowiedzi: 7 · Wyświetleń: 294 |
Napisane: 27.10.2012, 19:59:51 | |
Grupa: Zarejestrowani Postów: 1 748 Dołączył: 21.08.2009 Skąd: Gdynia Ostrzeżenie: (0%) |
jeśli chcesz odebrać dane z kolumny count to funkcja mysql_fetch_array() a nie mysql_num_rows(). Poczytaj w manualu jak się odbiera dane z zapytania bo to pytanie poniżej poziomu przedszkola. Ponadto najlepiej przerzuć się na PDO. http://php.net/manual/en/function.mysql-fetch-array.php |
Forum: PHP · Podgląd postu: #1002332 · Odpowiedzi: 7 · Wyświetleń: 294 |
Napisane: 27.10.2012, 13:15:41 | |
Grupa: Zarejestrowani Postów: 1 748 Dołączył: 21.08.2009 Skąd: Gdynia Ostrzeżenie: (0%) |
do podstawowego użytkownika PDO jest całkowicie wystarczające, szczerze mówiąc nie wiem co mogłaby dodatkowo robić klasa opakowująca, może np. gdybyś w rozbudowanym systemie chciał stworzyć statystyki wykonywanych zapytań, wtedy można by poszerzyć funkcjonalność pdo i wykonać przy każdym zapytaniu dodatkowe operacje. Ale na początku możesz o tym zapomnieć. |
Forum: PHP · Podgląd postu: #1002242 · Odpowiedzi: 7 · Wyświetleń: 275 |
Napisane: 27.10.2012, 03:50:56 | |
Grupa: Zarejestrowani Postów: 1 748 Dołączył: 21.08.2009 Skąd: Gdynia Ostrzeżenie: (0%) |
nie wiele tutaj do oceniania, ale z moich uwag to tak: - osobiście wybrałbym PDO, ale mysqli też w ostateczności może być; - w Twoim przypadku klasa do obsługi bazy danych jest bez sensu, ponieważ nie wprowadza nic nowego, sam obiekt mysqli/pdo jest wystarczający; - jeżeli klasa potrzebuje czegoś z zewnątrz to powinna to otrzymać w konstruktorze, czyli przykładowo zamiast tworzyć metody statyczne w obiekcie bazy, przekazujesz obiekt bazy w konstruktorze i wywołujesz zapytanie w metodzie przez $this->_db->query("SELECT...") oraz w Twojej klasie Db dane logowania również powinny zostać przekazane w konstruktorze; - najlepiej jakby sesja również była przekazanym obiektem, ponieważ w pewnym momencie możesz stwierdzić, że chcesz samodzielnie obsługiwać sesję na bazie, ale przy pierwszych krokach to raczej mało istotne. - w klasie nie powinny znajdować się funkcję typu echo, print, ponieważ model logowania ma odpowiadać tylko za autoryzację, a nie za wyświetlanie widoku, więc tutaj powinno być tylko return true/false. - Klasa logowanie nie powinna być dziedziczona po Walidacji, ponieważ logowanie tylko korzysta z walidacji, a nie jest jego wyspecjalizowaną formą, dlatego obiekt walidacji powinien zostać przekazany w konstruktorze. - ogólnie działanie klasy Logowanie jest kompletnie pomieszane, w linijce 29 w zapytaniu używasz $this->getLogin(), ale przecież nigdzie wcześniej nie zdefiniowałeś tej zmiennej więc będzie ona pusta, tak samo z $this->getPassword() w 35 linijce. Chyba się do końca nie zastanowiłeś jak to powinno działać. - i jeszcze jedna rzecz, która jakoś szczególnie mnie irytuje to pomieszanie polskiej i angielskiej nomenklatury, generalnie składania php, mysql, html, css, js jest po angielsku więc najlepiej naucz się nazywać wszystko po angielsku, bo wtedy wszystko jest o wiele bardziej przejrzyste. Powiem Ci wprost: Jeśli chcesz się nauczyć OOP to zacznij od jakiejś dobrej książki, bo tak po omacku to daleko nie zajdziesz, zajrzyj do działu Książki na tym forum. |
Forum: PHP · Podgląd postu: #1002175 · Odpowiedzi: 7 · Wyświetleń: 275 |
Napisane: 27.10.2012, 15:59:10 | |
Grupa: Zarejestrowani Postów: 1 748 Dołączył: 21.08.2009 Skąd: Gdynia Ostrzeżenie: (0%) |
Cytat To nie zadziała by pozycja pierwszego slasha musiałaby być znana, nie jest to 1. masz rację, zajrzałem do manuala i faktycznie wydawało mi się, że tam ustawiasz, które wystąpienie stringa ma być szukane.Ale w każdym razie wydaje mi się, że i tak użycie funkcji strpos() w pętli powinno być wydajniejsze niż wyrażenia regularne, po prostu w każdej następnej pętli dajesz offset = ostatnia pozycja + 1. Edit: znalazłem nawet gotowy kod na to: http://board.phpbuilder.com/showthread.php...within-a-string do funkcje substr() wstawiasz wynik tej funkcji. |
Forum: PHP · Podgląd postu: #1002281 · Odpowiedzi: 8 · Wyświetleń: 994 |
Napisane: 27.10.2012, 11:58:59 | |
Grupa: Zarejestrowani Postów: 1 748 Dołączył: 21.08.2009 Skąd: Gdynia Ostrzeżenie: (0%) |
@KotWButach Jeżeli dobrze zrozumiałem to chcesz przykładowo uciąć tekst po drugim wystąpieniu znaku "/". W takim razie używasz funkcji strpos() aby ustalić jego pozycję, a potem substr(), żeby uciąć i tyle. Zauważ, że w funkcji strpos, masz opcjonalny parametr offset, którym możesz ustawić właśnie, które powtórzenie znaku w stringu Ciebie interesuje i ustalić jego pozycję. Więc pewnie będzie to coś w stylu: dla drugiego wystąpienia "/" w tekście, ale sprawdź bo pisane z palca |
Forum: PHP · Podgląd postu: #1002219 · Odpowiedzi: 8 · Wyświetleń: 994 |
Napisane: 26.10.2012, 00:08:01 | |
Grupa: Zarejestrowani Postów: 1 748 Dołączył: 21.08.2009 Skąd: Gdynia Ostrzeżenie: (0%) |
Cytat Dlatego zastanawiałem się dlaczego przypisując wartość będącą wynikiem instrukcji warunkowej przy pomocy zwykłego if'a (a nie trójoperandowego) doprowadza do błędu mimo, że logicznie to jest to samo. Nie to nie jest to samo. Gdybyś sięgnął do manula, dowiedziałbyś się, że to są 2 całkowicie inne konstrukcje i tylko w nielicznych przypadkach możesz to stosować zamiennie. Twoje zdumienie tym fenomenem wynika z błędnego założenia, że jest to jedna i ta sama konstrukcja w pełnej i skróconej formie co jest nieprawdą. Każdy operator trójargumentowy może zostać zapisany przy pomocy konstrukcji warunkowej if/else, ale nie każda konstrukcja if/else może zostać zastąpiona przez ten operator. Dlatego Twój przykład nie działa. |
Forum: PHP · Podgląd postu: #1001967 · Odpowiedzi: 7 · Wyświetleń: 795 |
Napisane: 24.10.2012, 20:32:15 | |
Grupa: Zarejestrowani Postów: 1 748 Dołączył: 21.08.2009 Skąd: Gdynia Ostrzeżenie: (0%) |
skoro nie chcesz używać mysql, chociaż ja i tak bym się na to zdecydował, bo 30 użytkowników online to bardzo niewiele, to może zainteresuje Cię SQLite - obsługujesz tak samo jak mysql z taką różnicą, że baza przechowywana jest w pliku na serwerze. |
Forum: PHP · Podgląd postu: #1001698 · Odpowiedzi: 5 · Wyświetleń: 392 |
Napisane: 24.10.2012, 18:27:14 | |
Grupa: Zarejestrowani Postów: 1 748 Dołączył: 21.08.2009 Skąd: Gdynia Ostrzeżenie: (0%) |
Dla bardzo małej ilości danych i niewielkim ruchu jest to bez różnicy. Ogólnie baza daje większą kontrolę i w miarę rozrozstu masz większe możliwości optymalizacji, ale na małą skalę to jeżeli wystarcza Ci to co zrobiłeś to nie ma sensu tego przerabiać. |
Forum: PHP · Podgląd postu: #1001668 · Odpowiedzi: 5 · Wyświetleń: 392 |
Napisane: 21.10.2012, 13:37:11 | |
Grupa: Zarejestrowani Postów: 1 748 Dołączył: 21.08.2009 Skąd: Gdynia Ostrzeżenie: (0%) |
Cytat A z jakiego narzędzia (biblioteki) korzystasz Autor napisał w temacie, że chodzi o TCPDF.Cytat w jaki sposób mogę zmienić rozmiar generowanej strony pdf Tu masz opisane jak to zrobić: http://daipratt.co.uk/tcpdf-page-sizes/ co do marginesów: http://stackoverflow.com/questions/9431973...ge-margin-issue a co do marginesu dolnego to widzę, że go się nie ustawia, ale powinieneś uzyskać porządany efekt przez ustawienie bottom padding http://www.tcpdf.org/doc/classTCPDF.html#a...adfa66efd89bc7c |
Forum: PHP · Podgląd postu: #1000856 · Odpowiedzi: 4 · Wyświetleń: 1 271 |
Napisane: 18.10.2012, 20:34:35 | |
Grupa: Zarejestrowani Postów: 1 748 Dołączył: 21.08.2009 Skąd: Gdynia Ostrzeżenie: (0%) |
Czyli krótko mówiąc chcesz stworzyć menedżer plików. Nie potrzebujesz tutaj podtrzymywania połączenia, jeżeli masz jakąś operację do wykonania to nawiązujesz połączenie, robisz co trzeba i się rozłączasz, tak jak z mysql. Aczkolwiek ja bym tutaj zadał pytanie, jak bardzo rozbudowanego narzędzia potrzebujesz i czy masz jakieś niestandardowe potrzeby? Bo jeżeli chodzi tylko o taki dodatkowy moduł w CMS to możesz skorzystać z gotowego rozwiązania. Liniki: http://www.phpwebftp.com/ http://elfinder.org/ |
Forum: PHP · Podgląd postu: #1000384 · Odpowiedzi: 11 · Wyświetleń: 489 |
Napisane: 4.10.2012, 21:29:31 | |
Grupa: Zarejestrowani Postów: 1 748 Dołączył: 21.08.2009 Skąd: Gdynia Ostrzeżenie: (0%) |
Ty chyba nie rozumiesz jak to działa. Kiedy interpreter trafia na pętlę foreach będzie tak długo wykonywał linijki 6-9, aż przeiteruje wszystkie elementy w tablicy $a. W każdej pętli przypisujesz wpis tablicy do zmiennej, czyli każda kolejna iteracja nadpisuje tą wartość i dlatego w linijce 10 masz wynik ostatniej iteracji pętli. Jeżeli chcesz wyświetlać każdy element, to musisz wyświetlanie dać do pętli lub wewnątrz pętli zapisywać wynik swoich operacji do innej tablicy i potem w drugiej pętli wyświetlić te dane. |
Forum: PHP · Podgląd postu: #997301 · Odpowiedzi: 8 · Wyświetleń: 341 |
Napisane: 4.10.2012, 21:07:22 | |
Grupa: Zarejestrowani Postów: 1 748 Dołączył: 21.08.2009 Skąd: Gdynia Ostrzeżenie: (0%) |
tak - umieścić wyświetlanie wewnątrz pętli. |
Forum: PHP · Podgląd postu: #997292 · Odpowiedzi: 8 · Wyświetleń: 341 |
Napisane: 4.10.2012, 18:07:32 | |
Grupa: Zarejestrowani Postów: 1 748 Dołączył: 21.08.2009 Skąd: Gdynia Ostrzeżenie: (0%) |
no tak jak pokazałeś (ten drugi przykład), pytasz się jakbyś pierwszy raz przy komputerze siedział Żeby się nauczyć to trzeba pokombinować na kilka sposobów i obadać co jak działa, takim teoretyzowaniem niczego się nie nauczysz. |
Forum: PHP · Podgląd postu: #997234 · Odpowiedzi: 6 · Wyświetleń: 258 |
Napisane: 4.10.2012, 17:51:00 | |
Grupa: Zarejestrowani Postów: 1 748 Dołączył: 21.08.2009 Skąd: Gdynia Ostrzeżenie: (0%) |
to drugie |
Forum: PHP · Podgląd postu: #997228 · Odpowiedzi: 6 · Wyświetleń: 258 |
Napisane: 4.10.2012, 17:15:54 | |
Grupa: Zarejestrowani Postów: 1 748 Dołączył: 21.08.2009 Skąd: Gdynia Ostrzeżenie: (0%) |
nie czytałem Twojego kodu, ale dane są w tablicy POST tylko bezpośrednio po wysłaniu, jeżeli robisz formularz wieletapowy, czyli wysyłany jest kilka razy, to poprzednie dane możesz zachować na 2 sposoby: 1. Zapisać je do sesji (wtedy na końcu pobierzesz sobie z sesji dane z poprzednich formularzy), 2. zapisać do pól typu hidden (wszystkie będziesz miał w tablicy POST) |
Forum: PHP · Podgląd postu: #997212 · Odpowiedzi: 6 · Wyświetleń: 258 |
Napisane: 2.10.2012, 19:21:45 | |
Grupa: Zarejestrowani Postów: 1 748 Dołączył: 21.08.2009 Skąd: Gdynia Ostrzeżenie: (0%) |
Cytat Przepraszam że tak na około zacząłem ale już nie ogarniam Gdybyś ogarniał to byś tu nie pisał generalnie inaczej zaprojektowałbym bazę (trzymając w niej godzinę rozpoczęcia i zakończenia terminu), ale tu masz rozwiąnie do Twojej struktury
oczywiście to nie taki całkiem gotowiec do wklejenia. Pierwszego foreach zastąp lub w zależności od tego czy używasz PDO czy funkcje mysql_. Myślę, że z tym już sobie spokojnie poradzisz Aha zapomniałem dodać jak to generalnie działa, rozbiłem ten proces na 2 etapy: 1. tworzymy tablicę, która będzie zawierać wszystkie zajęte terminy np. 8:30, 9:30, 10:00 itd, 2. przy tworzeniu tabelki html dokonujemy prostego sprawdzenia czy dana godzina znajduje się w tablicy zajętych terminów |
Forum: PHP · Podgląd postu: #996790 · Odpowiedzi: 6 · Wyświetleń: 338 |
Napisane: 2.10.2012, 18:21:14 | |
Grupa: Zarejestrowani Postów: 1 748 Dołączył: 21.08.2009 Skąd: Gdynia Ostrzeżenie: (0%) |
mam wrażenie, że to jest jeden z tych przypadków kiedy masz jakiś prosty i standardowy problem, ale wymyśliłeś jakieś dziwne rozwiązanie i nie wiesz jak to zrobić. Nie pisz jak chcesz, żeby to działało tylko jaki ma być efekt końcowy, najlepiej pokaż strukturę tabeli (jeżeli strutkura nie jest oczywista to jakieś przykładowe wpisy) i pokaż jaką tabelkę chcesz z tego uzyskać, bo inaczej to ciężko jest stwierdzić o co Tobie właściwie chodzi. |
Forum: PHP · Podgląd postu: #996769 · Odpowiedzi: 6 · Wyświetleń: 338 |
Napisane: 2.10.2012, 17:44:30 | |
Grupa: Zarejestrowani Postów: 1 748 Dołączył: 21.08.2009 Skąd: Gdynia Ostrzeżenie: (0%) |
Cytat tak więc pętli się najpierw foreach, a mi chodzi żeby każdy rekord z foreach był użyty dla każdego i. no to daj for wewnątrz foreach |
Forum: PHP · Podgląd postu: #996748 · Odpowiedzi: 6 · Wyświetleń: 338 |
Napisane: 23.09.2012, 09:19:21 | |
Grupa: Zarejestrowani Postów: 1 748 Dołączył: 21.08.2009 Skąd: Gdynia Ostrzeżenie: (0%) |
przecież cookies każdy może sobie edytować...czyli Twoim sposobem, każdy bardziej kumaty dzieciak będzie umiał się włamać na dowolne konto Znajdź sobie jakąś fajną książkę, ewentualnie dobry kurs i wszystko będzie jasne. Sesja to nic strasznego i żeby jej używać nie musisz rozumieć jak ona działa. Po prostu startujesz sesje session_start() i gotowe, możesz przypisywać do niej zmienne np. user_id, żadna filozofia. |
Forum: PHP · Podgląd postu: #994405 · Odpowiedzi: 3 · Wyświetleń: 327 |
Napisane: 17.09.2012, 22:32:29 | |
Grupa: Zarejestrowani Postów: 1 748 Dołączył: 21.08.2009 Skąd: Gdynia Ostrzeżenie: (0%) |
ja bym Cię odesłał do manuala, albo jakiekolwiek początkującego kursu. Pierwszy raz widzę taki wynalazek...czy mógłbyś wytłumaczyć dlaczego kod php umieściłeś poza znakami <?php ?> ? Jeżeli wywalisz to zagadkowe umieszczenie skryptu w skypcie i przypisanie skryptu do zmiennej to sam taki kod nie powinien wywalać błędu:
Ale wracając jeszcze do poruszanego przez Ciebie zagadnienia obawiam się, że takie rozwiązanie może być nie wystarczająca i w praktyce okaże się bardzo nieskkuteczne do rozróżnienia urządzenia jakim użytkownik wysłał żądanie http, na Twoim miejscu zdecydowałbym się na jakąś gotową bibliotekę np. http://code.google.com/p/php-mobile-detect/ czy chociażby coś takiego http://mobiforge.com/developing/story/ligh...e-detection-php, |
Forum: PHP · Podgląd postu: #993249 · Odpowiedzi: 1 · Wyświetleń: 166 |
Napisane: 16.09.2012, 18:24:37 | |
Grupa: Zarejestrowani Postów: 1 748 Dołączył: 21.08.2009 Skąd: Gdynia Ostrzeżenie: (0%) |
Tak, można: Curl + proxy. P.S. Na przyszłość postaraj się precyzyjnie zadawać pytania i opisywać problem bo szczerze mówiąc to nie wiadomo do końca o co Ci chodzi. |
Forum: PHP · Podgląd postu: #992986 · Odpowiedzi: 2 · Wyświetleń: 332 |
Napisane: 17.09.2012, 21:46:30 | |
Grupa: Zarejestrowani Postów: 1 748 Dołączył: 21.08.2009 Skąd: Gdynia Ostrzeżenie: (0%) |
to będziesz musiał do tego troszęczkę poczytać, ponieważ Ty chcesz aby pomiędzy żądaniami http zostały zachowane w pamięci pewnie dane, tak więc musisz tutaj użyć mechanizmu sesji, po każdym takim update będziesz dodawał do sesji zaktualizowany ID tematy do ogarniącia (linki do pierwsze lepsze z google): - php sesje, np. http://pl.wikibooks.org/wiki/PHP/Sesje - php tablice, np. http://phpkurs.pl/tablice/ - klauzula Mysql IN, np. http://www.tutorialspoint.com/mysql/mysql-in-clause.htm co musisz zrobić? - na początku skryptu wystartować sesję - po każdym update przypisać do zmiennej sesyjnej kolejne ID, aby ta zmienna mogła przechowywać więcej niż jedną zmienną to musi być tablicą(array), czyli będziesz dodawać kolejne ID do tablicy - następnie używając funkcji implode() i klauzuli IN pobierzesz odpowiednie wyniki, zapytanie będzie musiała wyglądać tak: , czyli zbudujesz je tak , oczywiście to nie jest gotowy kod, musisz zapoznać się z tymi tematami i zrobić tak jak Ci napisałem, powodzenia |
Forum: PHP · Podgląd postu: #993243 · Odpowiedzi: 11 · Wyświetleń: 435 |
Napisane: 17.09.2012, 19:25:12 | |
Grupa: Zarejestrowani Postów: 1 748 Dołączył: 21.08.2009 Skąd: Gdynia Ostrzeżenie: (0%) |
heh właśnie chyba Ty nie bardzo wiesz co chcesz osiągnąć Jak możesz pokazać więcej niż jedno pole gdzie użyto submita, skoro submit możesz nacisnąć tylko jeden? Tak jak tu masz zrobione to: Submit naciskasz jeden, więc formularz wysyłasz jeden, więc pole aktualizujesz jedno, czyli wyświetlasz jeden rekord, który został zaktualizowany. Jeżeli chcesz, żeby jednocześnie można było wprowadzić (czyli zaktualizować) więcej rekordów to trzeba zrobić jeden formularz i najlepiej wtedy jeden submit, żeby było wiadomo o co chodzi, ale wtedy trzeba też inaczej nazwać pola formularza(name) ponieważ ta nazwa musi być unikalna. A może Ty chciałbyś utrzymać w pamięci pomiędzy żądaniami numery ID, które zostały zaktualizowane w czasie tej sesji? O to Ci chodzi? Że jak zaktualizuje pole 10 to na dole pokaże się pole 10, a jak potem jeszcze zaktualizuję pola 12 i 15 to na dole będą wszystkie 3: 10, 12, 15? |
Forum: PHP · Podgląd postu: #993196 · Odpowiedzi: 11 · Wyświetleń: 435 |
Nowe odpowiedzi Brak nowych odpowiedzi Popularny temat (Nowe) Popularny temat (Brak nowych) |
Sonda (Nowe) Sonda (Brak nowych) Zamknięty temat Przeniesiony temat |
Wersja Lo-Fi | Aktualny czas: 29.03.2024 - 01:25 |