Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]$_POST+pdf
jacusek
post 27.04.2010, 11:14:55
Post #1





Grupa: Zarejestrowani
Postów: 262
Pomógł: 3
Dołączył: 18.10.2009
Skąd: Łódź

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


Mam taki skrypt. Jest to wyszukiwarka badań wpisanych przez lekarza do tabeli w MySQL. Generalnie wyszukiwarka działa bez większych zarzutów. Teraz mam problem co zrobić, żeby dawne badanie dało się wydrukować ponownie. Mam plik który wykonuje PDF, ale też wstawiłem do aktualnego pliku dane dotyczące geneerowania pdf. Niestety ta funkcja nie działa. Tak jakby zdefiniowane poniżej zmienne z końca pliku nie mogły się wykonać w częsci drukuj. Po wciśnięciu drukuj nie pokazuje mi żadnego błędu po prostu wraca do pierwotnego okna przeglądarki. Nie bardzo wiem jak to dalej ugryźć?
  1. <?php
  2. $file = "wyszukiwarka.php";
  3. include('connect2.php');
  4.  
  5. switch($_POST["action"]){
  6. case "druk":
  7. define('FPDF_FONTPATH','font/');
  8. require('fpdf.php');
  9. $pdf=new FPDF();
  10. $pdf->Open();
  11. $pdf->AddPage();
  12. $pdf->AddFont('arialpl','','arialpl.php');
  13. $pdf->SetFont('arialpl','',12);
  14. $imie=$pdf->Text(60,45, $imie);
  15. $nazwisko=$pdf->Text(90,45, $nazwisko);
  16. $wiek=$pdf->Text(160,45, $rok_ur);
  17. $sql= 'select bad_usg from usg where id_usg='.$id_usg;
  18. $rez= mysqli_query($mysqli, $sql);
  19. while($res = mysqli_fetch_array($rez,MYSQLI_ASSOC)){
  20. $usg=$res['bad_usg'];
  21. }
  22. $bad=$pdf->Text(80,64, $usg);
  23. $pdf->SetXY(4,75);
  24. $opis=$pdf->multicell(0,4, $opis,0, 'J',0);
  25. $pdf->SetCompression(true);
  26. $pdf->SetDisplayMode(100);
  27. $pdf->SetMargins(20, 20 , 20);
  28. $pdf->Output();
  29. break;
  30. default:
  31. echo "<h1><center>Znajdź badanie</center></h1>\n";
  32. $blok = "
  33. <center><form method=\"POST\" form action=\"".$file."\">
  34. <p><strong>ROK URODZENIA</strong><br/>
  35. <input type=\"text\" name=\"rok_ur\" size=\"4\" maxlength=\"4\"><br\>
  36. <p><strong>Nazwisko</strong><br/>
  37. <input type=\"text\" name=\"nazwisko\" size=\"30\" maxlength=\"30\"><br\>
  38. <p><strong>Imię</strong><br/>
  39. <input type=\"text\" name=\"imie\" size=\"30\" maxlength=\"30\"></p>
  40. <p><input type=\"submit\" name=\"submit\" value=\"Szukaj\"></p></center>";
  41. echo $blok;
  42. $sql = 'select id, id_usg, nazwisko, imie, rok_ur, opis, termin from usg_opis where
  43. nazwisko =\''.$_POST['nazwisko'].'\' and imie =\''.$_POST['imie'].'\'or rok_ur=\''.$_POST['rok_ur'].'\'
  44. order by nazwisko limit 30';
  45. $rez= mysqli_query($mysqli, $sql);
  46. echo "<TABLE CELLPADDING=5 BORDER=1>";
  47. echo "<center><TR>
  48. <TD><B>NAZWISKO</B></TD>
  49. <TD><B>IMIE</B></TD>
  50. <TD><B>ROK_URODZENIA</B></TD>
  51. <TD><B>TERMIN</B></TD>
  52. <TD><B>OPIS</B></TD>
  53. <TD><B>DRUKUJ</B></TD>
  54. </TR>";
  55. while ($rekord = mysqli_fetch_array($rez, MYSQLI_ASSOC)) {
  56. $id = $rekord['id'];
  57. $id_usg=$rekord['id_usg'];
  58. $nazwisko = $rekord['nazwisko'];
  59. $imie = $rekord['imie'];
  60. $rok_ur = $rekord['rok_ur'];
  61. $opis = $rekord['opis'];
  62. $termin = $rekord['termin'];
  63. echo "<TR>";
  64. echo "<TD>$nazwisko</TD><TD>$imie</TD><TD>$rok_ur</TD><TD>$termin</TD><TD>$opis</TD>";
  65. echo "<TD><A HREF=\"$file?action=druk\">Drukuj</A></TD>";
  66. echo "</TR>";
  67. echo "</center></TR>";
  68. }
  69. echo "</TABLE>";
  70. }
  71. ?>
Go to the top of the page
+Quote Post
mortus
post 27.04.2010, 11:45:06
Post #2





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

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


Dwie rzeczy.
1. Masz
  1. switch($_POST["action"])
natomiast action przesyłasz metodą get (linia 65)
  1. echo "<TD><A HREF=\"$file?action=druk\">Drukuj</A></TD>";

2. Jak już będziesz w opcji (case) "druk", to skąd Twój skrypt ma wiedzieć, co to jest $imie, $nazwisko, $rok_ur, $opis czy $id_usg.
Otóż rozwiązać to można w taki sposób, że w odnośniku podajesz również id pacjenta, czyli w linii 65 powinieneś mieć:
  1. echo "<TD><A HREF=\"$file?action=druk&id_pacjenta=$id\">Drukuj</A></TD>";
Natomiast w switchu:
  1. case 'druk':
  2. $id = $_GET['id'];
  3. // pobieramy informacje o pacjencie
  4. // "SELECT * FROM usg_opis WHERE id=$id";
  5. // wyciągamy odpowiednie dane
  6. // $imie = $rekord['imie'];
  7. // przygotowujemy PDF-a i drukujemy
  8. break;


Ten post edytował mortus 27.04.2010, 11:46:05
Go to the top of the page
+Quote Post
jacusek
post 27.04.2010, 11:55:04
Post #3





Grupa: Zarejestrowani
Postów: 262
Pomógł: 3
Dołączył: 18.10.2009
Skąd: Łódź

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


Dzięki Mortus za uwagi, ale problem polega na tym, że nie mogę użyć $_GET, ponieważ opisy badań będą dużo za długie żeby przesłać je w linku. I właśnie jak to zrobić w $_POST. Tutaj leży cały mój problem. Co nie zmienia faktu że miałem błędy smile.gif.
Go to the top of the page
+Quote Post
mortus
post 27.04.2010, 12:04:48
Post #4





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

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


Ale w linku przesyłasz tylko id tego konkretnego opisu, a dane wyciągasz z bazy danych dla tego konkretnego id opisu już w którymś case-ie. Jeżeli chcesz przesyłać za pomocą post, to musisz utworzyć formularz z polami ukrytymi, tyle że to byłoby bez sensu, bo przecież Ty na stronie nie wyświetlasz informacji o konkretnym pacjencie, tylko listę 30 ostatnich informacji. Pierwsze rozwiązanie to jedyne słuszne rozwiązanie.

Moim zdaniem takie dane należałoby pokazywać w dwóch formach. Pierwsza, to lista wszystkich opisów. Druga to odpowiednio sformatowany pojedynczy opis. Możliwość drukowania można podpiąć zarówno pod listę, jak i pod pojedynczy opis.

Ten post edytował mortus 27.04.2010, 12:01:28
Go to the top of the page
+Quote Post
jacusek
post 27.04.2010, 12:27:49
Post #5





Grupa: Zarejestrowani
Postów: 262
Pomógł: 3
Dołączył: 18.10.2009
Skąd: Łódź

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


No tak w sumie masz rację. Dzięki za pomoc. Teraz siedzę nad skryptem bo mam gdzieś jakiś głupi błąd.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 25.07.2025 - 09:12