![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 54 Pomógł: 0 Dołączył: 23.04.2010 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
mam skrypt wyciągający dane z bazy i prezentujący je w tabeli:
Zadanie jest takie, aby przygotować wydruk w pdf tych samych danych i dodatkowo dodać trzy kolumny z tabeli tb_laczniki_wyjscie: DataPrzyg, DataWyd, IloscWyd, które to będą miały puste pola - do wpisania długopisem przykładowo. Struktura bazy: - tb_laczniki_main (LacznikID - primary, a.i.; Nazwa; Material; Norma; DostawcaID - klucz obcy do tabeli tb_dostawcy; ProducentID - klucz obcy do tabeli tb_producent; Zdjecie; Waga; Uwagi; Lokacja; LokacjaPoz; Stan), - tb_laczniki_wyjscie (LaczWydID - primary, a.i. ; LacznikID - klucz obcy do tabeli tb_laczniki_main; DataZam; NrZam; DokZam; IloscZam; DataPrzyg; DataWyd; NrProt; IloscWyd). W tabeli znajdują się wyrazy z polskimi znakami diakrytycznymi. Przy okazji - jak można zrobić automatyczną, kolejną numerację pól NrZam i NrProt? Z góry dzięki wielkie za pochylenie się nad moim wymysłem :) szakal |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 279 Pomógł: 42 Dołączył: 10.10.2011 Ostrzeżenie: (0%) ![]() ![]() |
Potrzebujesz gotowej klasy generującej PDF. Wydaje mi się że dla Ciebie dobre będzie TCPDF http://www.tcpdf.org/
Generujesz string zawierający HTML (css w <style> nie działa, musisz używać atrybutu: <a style="color: #FF0000;">. Jeżeli potrzebujesz dodatkowe kolumny dorzucasz do while po prostu puste <td></td>
Przy numeracji możesz np zadeklarować zmienną pomocniczą:
Ten post edytował Puszy 3.08.2015, 14:56:10 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 54 Pomógł: 0 Dołączył: 23.04.2010 Ostrzeżenie: (0%) ![]() ![]() |
Witaj,
dzięki za odpowiedź ![]() Mam jeszcze takie pytanie - gdzie mam wrzucić tę klasę i plik css? Używam WebServ'a 2. Czy nie będzie problemów z obsługą polskich znaków? Czytałem w internecie, że jakieś mogą się pojawić. Pozdrawiam, szakal |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 279 Pomógł: 42 Dołączył: 10.10.2011 Ostrzeżenie: (0%) ![]() ![]() |
Nie zadziała Ci plik CSS. Musisz użyć atrybutów np.
Proponuję Ci w projekcie utworzyć folder module, w nim stworzyć folder tcpdf i wrzucić pliki. Potem robisz include:
Przy założeniu że plik na którym pracujesz jest w głównym folderze projektu. Ten post edytował Puszy 4.08.2015, 15:53:42 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 54 Pomógł: 0 Dołączył: 23.04.2010 Ostrzeżenie: (0%) ![]() ![]() |
OK, a gdzie znajdę plik pol.php? W paczce, którą ściągnąłem z podanej strony nie ma go.
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 279 Pomógł: 42 Dołączył: 10.10.2011 Ostrzeżenie: (0%) ![]() ![]() |
Utwórz sobie i wklej:
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 54 Pomógł: 0 Dołączył: 23.04.2010 Ostrzeżenie: (0%) ![]() ![]() |
Proponuję Ci w projekcie utworzyć folder module, w nim stworzyć folder tcpdf i wrzucić pliki. Potem robisz include:
Przy założeniu że plik na którym pracujesz jest w głównym folderze projektu. No właśnie - tak jest. Plik zapisałem jako wydr_lacz_zam i jest w głównym folderze, jak i inne pliki. Wskazany powyżej folder jest też w głównym folderze projektu. Po wywołaniu pliku wydr_lacz_zam.php mam taki komunikat: Warning: include(/module/tcpdf/config/lang/pol.php): failed to open stream: No such file or directory in D:\PROJEKTY WWW\MZ - magazyn\wydr_lacz_zam.php on line 15 Warning: include(): Failed opening '/module/tcpdf/config/lang/pol.php' for inclusion (include_path='.;C:\php\pear') in D:\PROJEKTY WWW\MZ - magazyn\wydr_lacz_zam.php on line 15 Sprawdzałem, folder jest na miejscu... Ten post edytował kecajs 4.08.2015, 21:30:50 |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 279 Pomógł: 42 Dołączył: 10.10.2011 Ostrzeżenie: (0%) ![]() ![]() |
Plik pol.php nie istnieje w tej ścieżce.
1. Sprawdź czy ten plik jest rzeczywiśxie tam 2. Sprawdź czy plik się przypadkiem niennazywa pol.php.txt z racji że sam go tworzyłeś, w Windowsie domyślnie rozszerzenia są ukryte Dodam tylko że musisz czytać błędy. Jeżeli serwer zwraca Ci "No such file in..." to możesz być pewien że plik nienistnieje lub masz złą ścieżkę. Te błędy NIGDY się nie mylą (no w 99.99%, 0,01% to bugi) Poczytaj też o ścieżce względnej i bezwzględnej Ten post edytował Puszy 4.08.2015, 23:41:03 |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 54 Pomógł: 0 Dołączył: 23.04.2010 Ostrzeżenie: (0%) ![]() ![]() |
Posprawdzam te ścieżki, ale na 90% jest wszystko na miejscu i się odpowiednio nazywa.
Do Puszy: A przy okazji, czy mógłbyś zerknąć na mój inny wątek: Temat: MySQLPHPPrzekazywanie zmiennych POST i podpowiedzieć mi jak rozwiązać opisane tam niedoróbki? Dla Ciebie to moment, a ja utknąłem :) Pozdrawiam, szakal Plik pol.php nie istnieje w tej ścieżce. 1. Sprawdź czy ten plik jest rzeczywiśxie tam Pliki rzeczywiście są w dokładnie tej ścieżce, tj. module/tcpdf/tcpdf.php i pozostałe pliki, oraz module/tcpdf/lang/pol.php. 2. Sprawdź czy plik się przypadkiem niennazywa pol.php.txt z racji że sam go tworzyłeś, w Windowsie domyślnie rozszerzenia są ukryte Nie, oba pliki mają rozszerzenie php - mam wyświetlane pełne rozszerzenia, mam odznaczoną opcję ukrywania rozszerzeń znanych typów. Dodam tylko że musisz czytać błędy. Jeżeli serwer zwraca Ci "No such file in..." to możesz być pewien że plik nienistnieje lub masz złą ścieżkę. Te błędy NIGDY się nie mylą (no w 99.99%, 0,01% to bugi) Poczytaj też o ścieżce względnej i bezwzględnej Zdaję sobie sprawę, że to mój błąd, a nie błąd programu lub kodu, tylko gdzie ten błąd popełniłem? Struktura folderu jest następująca: d:\PROJEKTY WWW\MZ - magazyn\wszystkie pliki z rozszerzeniem php i css, w tym index.php, d:\PROJEKTY WWW\MZ - magazyn\module\tcpdf\wszystkie pliki z rozszerzeniem php, w tym tcpdf.php, d:\PROJEKTY WWW\MZ - magazyn\module\tcpdf\lang\pol.php. Gdzie tu się wkradł chochlik? szakal Ten post edytował kecajs 5.08.2015, 06:27:36 |
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 279 Pomógł: 42 Dołączył: 10.10.2011 Ostrzeżenie: (0%) ![]() ![]() |
napisałem Ci żebyś zaincludował
module/tcpdf/config/lang/pol.php a wg Ciebie plik jest w module/tcpdf/lang/pol.php Dodatkowo nie polecam używania spacji w nazwach plików i folderów. |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 54 Pomógł: 0 Dołączył: 23.04.2010 Ostrzeżenie: (0%) ![]() ![]() |
Mój błąd :)
Mam jeszcze takie pytanie, dotyczące bezpośrednio tego projektu, jest krótkie i mam nadzieję, że Admini przymkną oko na to, że je zadam, mimo, że jest trochę otc, ale szkoda zakładać nowego wątku :) Chodzi o to, że chcę zapisać ten dokument pdf jako kolejny protokół przygotowania. Następnie, po fizycznym uszykowaniu śrub magazynier powinien mieć możliwość ponownego otwarcia tego protokołu i uzupełnienia dwóch ostatnich kolumn (Data przygotowania i Ilość przygotowana) i wydrukować go ponownie już z tymi wartościami jako protokół wydania. Jest na tą pierwszą część mego pytania jakiś przebiegły sposób? Na mojego nosa, to chyba najprościej byłoby zrobić, żeby przy wprowadzaniu zamówienia na poszczególne śruby (wprowadzam je pojedynczo) zaznaczyć, że jest to jedno zamówienie i wtedy w bazie zostanie automatycznie nadany numer zamówienia i przypisany będzie do wszystkich śrub z danego zamówienia. Następnie, w podglądzie zamówień miałbym ułożone zamówienia wg numeru zamówienia. Tak samo można byłoby wybierać - po numerze zamówienia - zamówienia do uzupełnienia i wydrukowania jako protokół wydania. Ma to sens? Zwłaszcza od strony zasad programowania, php i mysql? Nie mam jeszcze żadnego kodu, bo na razie szukam bardziej pomysłu... szakal Hej, poprawiłem ścieżkę. Teraz nie pojawia się żaden komunikat, i nic się nie dzieje, tj. nie pojawia się okno wydruku. Znowu coś pomieszałem zapewne, tylko co i gdzie... szakal |
|
|
![]()
Post
#12
|
|
![]() Grupa: Zarejestrowani Postów: 279 Pomógł: 42 Dołączył: 10.10.2011 Ostrzeżenie: (0%) ![]() ![]() |
Jeżeli przechowujesz dane w bazie to nie musisz przetrzymywać tego PDF, możesz zapisać kopię ot tak dla bezpieczeństwa. Ale żeby zrobić to co Ty chcesz musisz utworzyć formularz z produktami z listy i umożliwić pracownikowi wklepanie danych, zapisanie ich do bazy i ponowne wydrukowanie nowo wygenerowanego PDFa. Możesz przerobić istniejący skrypt, dorzuć te pola do bazy i je wyświetlaj, jeżeli będą puste to komórka będzie również pusta. Tylko musisz pamiętać że przy formularzach zawsze musisz założyć że użytkownik to idiota i dobrze zabezpieczyć kod. Fragmentu kodu gdzie dostajesz dane od człowieka są najbardziej narażone na błędy. Dodatkowo jężeli robisz to do pracy to pamiętaj o odpowiedzialności, źle napisany kod przez który dane będą zakłamane może sprowadzić na Ciebie problemy ze strony przełożonego. Śledzę temat więc staram Ci się pomagać w granicach mojego wolnego czasu. Jednak jeżeli chcesz możesz przedstawić sprawę dokładniej, wycenię projekt i zrobię go za Ciebie.
Nie wiem do końca co Twój skrypt ma wykonywać ale kojarzy mi się to z picklistą lub listą do inwentaryzacji Co do samego kodu
Powyższy fragment powoduje że wyświetla się PDF. Jeżeli dostajesz pustą stronę HTML to coś jest nie tak (genius ![]() Ten post edytował Puszy 7.08.2015, 10:41:17 |
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 54 Pomógł: 0 Dołączył: 23.04.2010 Ostrzeżenie: (0%) ![]() ![]() |
Kurczę, napisałeś tyle mądrych rzeczy, że nie wiem, za co się wziąć po kolei. Najbardziej jednak zastanawia mnie Twoje ostatnie zdanie - żeby przerzucić się na obiektówkę. Jakie rozwiązanie masz na myśli, czy bardziej myślisz o zmianie sposobu tworzenia kodu?
Co do Twojej propozycji, to podeślę n priv'a. szakal |
|
|
![]()
Post
#14
|
|
![]() Grupa: Zarejestrowani Postów: 279 Pomógł: 42 Dołączył: 10.10.2011 Ostrzeżenie: (0%) ![]() ![]() |
Utworzyć sobie klasy, nawet jeżeli miałbyś programować w tak zwanym "obiektowo ale strukturalnie", to ułatwi Ci to pracę i porządkowanie skryptów. Masz więcej plików ale każdy odpowiada za konkretne zadanie, utworzyć funkcje które wykonują pojedyncze zadania a następnie je poukładać jak klocki.
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 5.05.2025 - 05:54 |