Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL] Wyświetlnie PDF zaleznie od nazwy
Forum PHP.pl > Forum > Przedszkole
kall
Witam,
Mam pewien problem, a mianowicie:
W MySQL mam zapisane dane w tabeli (Dane są czytane z pliku tekstowego)
Mam również raport pdf z tymi danymi. (PDF noszą nazwe 12345-56789)

I teraz chciałbym napisać funkcje która rozbije mi nazwę pdf na:
$SUBID=12345
$Barcode=56789

Po uzyskaniu tych 2 członów porównanie z bazą MySQL (Tutaj nie mam problemów)
Jeśli nazwy są zgodne to do danego "Wyniku" będzie możliwy wybór pdf.

Teraz jakiej pomocy oczekuje:
Jakiej funkcji użyć, by rozdzielić nazwy? (myślałem o
  1. string strtok(string $PDF, string '_');
)
Jak zastosować, by stosowało tę funkcję do każdego pliku w folderze.
Oraz na koniec czy muszę scalić nazwę, by móc użyć PrintReport?

//Pobranie nazwy pliku i zapisane jako $PDF
//Rozdzielić nazwę $PDF. Wyrazenie 1 = $SUBID Wyrazenie 2 = $Barcode
//string strtok(string $PDF, string '_');
//Sprawdzić z MySQL $USUBJID=$SUBID oraz druga czesc $EXPID=$Barcode.
//Jeśli Prawda to pokaż dany PDF.
dziamber
Mało elegancie ale może pomoże:
  1. class Pdf {
  2. private $directory;
  3. private $result;
  4. public function __construct($directory) {
  5. $this->directory = $directory;
  6. }
  7. public function startSearch() {
  8. $iterator = new DirectoryIterator($this->directory);
  9. $record = 0;
  10. foreach($iterator as $i) {
  11. if($this->isPdf($i->getFilename())) {
  12. $code = $this->explode($i->getFilename());
  13. $this->result[$record]['subid'] = $code['subid'];
  14. $this->result[$record]['barcode'] = $code['barcode'];
  15. $record++;
  16. }
  17. }
  18. }
  19. protected function isPdf($filename) {
  20. $tablica = explode(".", $filename);
  21. if($tablica[1] == "pdf") {
  22. return true;
  23. } else {
  24. return false;
  25. }
  26. }
  27. protected function explode($filename) {
  28. $code = explode(".", $filename);
  29. $code = explode("-", $code[0]);
  30. $result = array();
  31. $result['subid'] = $code[0];
  32. $result['barcode'] = $code[1];
  33. return $result;
  34. }
  35. public function getFiles() {
  36. return $this->result;
  37. }
  38. public function getCount() {
  39. return count($this->result) - 1;
  40. }
  41. }


Sposób wykorzystania tej klasy:

  1. $pdf = new Pdf("folder/"); // folder w ktorym sa pliki pdf
  2. $pdf->startSearch(); // rozpocznij poszukiwania
  3. $wynik = $pdf->getFiles(); // zwraca tablice z wynikami


Tablica wygląda następująco, zakładajac np. ze masz dwa pliki pdf:

  1. [0] => Array (
  2. [subid] => 1235
  3. [barcode] => 6789
  4. )
  5. [1] => Array (
  6. [subid] => 9876
  7. [barcode] => 1234
  8. )
  9. )


Jak chcesz po nich iterować i sprawdzac czy sa bazie, to prosta pętla:

  1. $liczba = $pdf->getCount();
  2. $jest = 0;
  3. while($jest <= $liczba) {
  4. echo "SUBID: ";
  5. echo $wynik[$jest]['subid'];
  6. echo " ";
  7. echo "Barcode: ";
  8. echo $wynik[$jest]['barcode'];
  9. echo "<br/>";
  10. $jest++;
  11. }


Ta iteracja da w wyniku:

  1. SUBID: 0987 Barcode: 6543
  2. SUBID: 1234 Barcode: 5678


Mam nadzieję, że się do czegoś przyda. To tak na szybko pisane teraz smile.gif
kall
Dzięki było bardzo pomocne. Mam tylko jeszcze pytanie. Jak po sprawdzeniu czy jest w bazie zrobić możliwość pobrania pdf.

Dla danego konta mam przypisany "nazwa główna-> numer ośrodka -> raport". Z bazy pojawia się tabela z danymi, ale chciałbym mieć również możliwość wybrania pdf.

  1. echo("<tr><td>$usubjid</td><td>$brthdtc</td><td>$age</td><td>$sex</td><td>$vname</td><td>$vdate</td><td>$vflag</td><td align=\"center\"><a href=\"Results/21001_59602.pdf\" target=\"_blank\"><img border=\"0\" src=\"images/pdf.gif\"></a></td>");


Jak widać mam testowo ustawiony wynik na "sztywno" i chciałbym żeby było tutaj przypisane po sprawdzeniu wyniku z bazy.

PS nie wiem czy to dobry pomysł, ale wpadłem na coś takiego:

  1. $liczba = $pdf->getCount();
  2. $jest = 0;
  3. while($jest <= $liczba) {
  4. $subid = $wynik[$jest]['subid'];
  5. $barcode = $wynik[$jest]['barcode'];
  6. echo "<br/>";
  7. $jest++;
  8. }
  9. If($USUBJID = $subid && $EXPID = $barcode){
  10. $dpdf = $_GET($subid] && '-' && $barcode);
  11. }
  12. I teraz poprzez to odwołanie do pliku?


up
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.