• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Generowanie tabeli PDF ze skryptu PHP (TCPDF)

VPS Starter Arubacloud
0 głosów
1,025 wizyt
pytanie zadane 4 listopada 2017 w PHP przez dominiv2604 Początkujący (350 p.)
edycja 4 listopada 2017 przez dominiv2604

Witam, od razu mówię - jestem początkującym. Napisałem skrypt, który na podstawie danych wpisanych w formularzu, tworzy mi tabelę, w której pobierane są dane m.in. z bazy danych. Teraz od 2 dni męczę się żeby wygenerować tą tabelę w pliku PDF. Używam biblioteki TCPDF

 

Załączam kod skryptu:

 

<?php

session_start();

if(!isset($_SESSION['zalogowany']))
{
	header('Location: index.php');
	exit();
}

$data = date('Y.m.d');
$czas = date("H:i:s");
$klient = $_SESSION['klient'];
$login = $_SESSION['login'];

require_once "connect.php";
$polaczenie = new mysqli($host, $db_user, $db_password, $db_name);
$polaczenie->query ('SET NAMES utf8');
$polaczenie->query ('SET CHARACTER_SET utf8_unicode_ci');
$idklient = $polaczenie->query("SELECT id_klient from klienci where nazwa='$klient'");
while ($wiersz = $idklient->fetch_array()) 
	{
		$id_klienta = $wiersz['id_klient'];	
	}

?>


<!DOCTYPE HTML>
<html lang="pl">
<head>
<meta charset="utf-8"/>
<title>Podsumowanie zamówienia</title>
<body>



<?php

	
 $klient = $_SESSION['klient'];
 $adwokatki = $_POST['adwokatki'];
 $babeczkaswiateczna = $_POST['babeczkaswiateczna'];
 $babeczki = $_POST['babeczki'];
 $babeczkiczekoladowe = $_POST['babkaczekoladowa'];
 $babeczkiserowe = $_POST['babeczkiserowe'];
 $babkacytynowa = $_POST['babkacytynowa'];
 $babkczekoladowakwadrat = $_POST['babkczekoladowakwadrat'];
 $babkadrozdzowa = $_POST['babkadrozdzowa'];
 $babkapiaskowa = $_POST['babkapiaskowa'];
 $bajadera = $_POST['bajadera'];
 $bezy = $_POST['bezy'];
 $cappucino = $_POST['cappucino'];
 $chalkazowocem = $_POST['chalkazowocem'];
 $ciastkafitness = $_POST['ciastkafitness'];
 $ciastkakruche = $_POST['ciastkakruche'];
 $ciastkawz = $_POST['ciastkawz'];
 $drozdzowkikruszonka = $_POST['drozdzowkikruszonka'];
 $drozdzowkijablko = $_POST['drozdzowkijablko'];
 $drozdzowkijagoda = $_POST['drozdzowkijagoda'];
 $drozdzowkimak = $_POST['drozdzowkimak'];
 $drozdzowkiser = $_POST['drozdzowkiser'];
 $eklery = $_POST['eklery'];
 $francuskie = $_POST['francuskie'];
 $grzebienie = $_POST['grzebienie'];
 $gwiazdki = $_POST['gwiazdki'];
 $jablecznik = $_POST['jablecznik'];
 $jablecznikokragly = $_POST['jablecznikokragly'];
 $jogusie = $_POST['jogusie'];
 $keks = $_POST['keks'];
 $kopertyzmalina = $_POST['kopertyzmalina'];
 $krajanka = $_POST['krajanka'];
 $makowiec = $_POST['makowiec'];
 $mandarynka = $_POST['mandarynka'];
 $muszelki = $_POST['muszelki'];
 $napoleonki = $_POST['napoleonki'];
 $omlety = $_POST['omlety'];
 $oreo = $_POST['oreo'];
 $orzechowy = $_POST['orzechowy'];
 $owocowy = $_POST['owocowy'];
 $paczkibudyn = $_POST['paczkibudyn'];
 $paczkipomada = $_POST['paczkipomada'];
 $paczkipuder = $_POST['paczkipuder'];
 $pierniczki = $_POST['pierniczki'];
 $piernik = $_POST['piernik'];
 $pijak = $_POST['pijak'];
 $pizza = $_POST['pizza'];
 $placekdrozdzowy = $_POST['placekdrozdzowy'];
 $placekforemka = $_POST['placekforemka'];
 $placekzowocem = $_POST['placekzowocem'];
 $ptasiebiszkoptcytryna = $_POST['ptasiebiszkoptcytryna'];
 $ptasiebiszkoptjagoda = $_POST['ptasiebiszkoptjagoda'];
 $ptasieporzeczka = $_POST['ptasieporzeczka'];
 $ptasiezgalaretka = $_POST['ptasiezgalaretka'];
 $ptysie = $_POST['ptysie'];
 $rafaello = $_POST['rafaello'];
 $rogale = $_POST['rogale'];
 $roladakrem = $_POST['roladakrem'];
 $roladamakowa = $_POST['roladamakowa'];
 $roladaorzech = $_POST['roladaorzech'];
 $roladawz = $_POST['roladawz'];
 $roladawisnia = $_POST['roladawisnia'];
 $rurki = $_POST['rurki'];
 $sernikbeza = $_POST['sernikbeza'];
 $sernikzbrzoskwinia = $_POST['sernikzbrzoskwinia'];
 $sernikzrodzynka = $_POST['sernikzrodzynka'];
 $sernikzimny = $_POST['sernikzimny'];
 $szachownica = $_POST['szachownica'];
 $toffi = $_POST['toffi'];
 $torcikczekoladowy = $_POST['torcikczekoladowy'];
 $torcikzgalaretka = $_POST['torcikzgalaretka'];
 $tortowe = $_POST['tortowe'];
 $wianuszki = $_POST['wianuszki'];
 
 
//////////////////// Początek Tabeli

echo '<center>';
echo '<font size="6">';
echo $_SESSION['klient'];
echo '</font>' ;
echo '<font size="4"><b>';
echo " - $data";
echo '</b></font>' ;
 
 
 echo <<<_END

<!doctype html>
	<html lang="pl">
		<head>
			<meta charset="utf-8">
			<link href="style.css" rel="stylesheet" type="text/css">
		</head>
		<body>
			<table class="tabela2">
				<tr>
					<th>Produkt</th>
					<th>Ilość</th>
					<th>Cena</th>
				</tr>
_END;


 

$cena = array('Adwokatki' => "$adwokatki"
      , 'Babeczka świąteczna' => "$babeczkaswiateczna"
      , 'Babeczki' => "$babeczki"
      , 'Babeczki czekoladowe'  => "$babeczkiczekoladowe"
	  , 'Babeczki serowe'  => "$babeczkiserowe"
	  , 'Babka cytrynowa'  => "$babkacytynowa"
	  , 'Babka czekolad. kwadrat'  => "$babkczekoladowakwadrat"
	  , 'Babka drożdżowa'  => "$babkadrozdzowa"
	  , 'Babka piaskowa'  => "$babkapiaskowa"
	  , 'Bajaderka'  => "$bajadera"
	  , 'Bezy'  => "$bezy"
	  , 'Cappucino'  => "$cappucino"
	  , 'Chałka z owocem'  => "$chalkazowocem"
	  , 'Ciastka fitness'  => "$ciastkafitness"
	  , 'Ciastka kruche'  => "$ciastkakruche"
	  , 'Ciastka W/Z'  => "$ciastkawz"
	  , 'Drożdżówki kruszonka'  => "$drozdzowkikruszonka"
	  , 'Drożdżówki jabłko'  => "$drozdzowkijablko"
	  , 'Drożdżówki jagoda'  => "$drozdzowkijagoda"
	  , 'Drożdżówki mak'  => "$drozdzowkimak"
	  , 'Drożdżówki ser'  => "$drozdzowkiser"
	  , 'Eklery'  => "$eklery"
	  , 'Francuskie'  => "$francuskie"
	  , 'Grzebienie'  => "$grzebienie"
	  , 'Gwiazdki'  => "$gwiazdki"
	  , 'Jabłecznik'  => "$jablecznik"
	  , 'Jabłecznik okrągły'  => "$jablecznikokragly"
	  , 'Jogusie'  => "$jogusie"
	  , 'Keks'  => "$keks"
	  , 'Koperty z maliną'  => "$kopertyzmalina"
	  , 'Krajanka'  => "$krajanka"
	  , 'Makowiec'  => "$makowiec"
	  , 'Mandarynka'  => "$mandarynka"
	  , 'Muszelki'  => "$muszelki"
	  , 'Napoleonki'  => "$napoleonki"
	  , 'Oreo'  => "$oreo"
	  , 'Orzechowy'  => "$orzechowy"
	  , 'Owocowy'  => "$owocowy"
	  , 'Pączki budyń'  => "$paczkibudyn"
	  , 'Pączki pomada'  => "$paczkipomada"
	  , 'Pączki puder'  => "$paczkipuder"
	  , 'Pierniczki'  => "$pierniczki"
	  , 'Piernik'  => "$piernik"
	  , 'Pijak'  => "$pijak"
	  , 'Pizza'  => "$pizza"
	  , 'Placek drożdżowy'  => "$placekdrozdzowy"
	  , 'Placek foremka'  => "$placekforemka"
	  , 'Placek z owocem'  => "$placekzowocem"
	  , 'Ptasie biszkopt cytryna'  => "$ptasiebiszkoptcytryna"
	  , 'Ptasie biszkopt jagoda'  => "$ptasiebiszkoptjagoda"
	  , 'Ptasie z porzeczką'  => "$ptasieporzeczka"
	  , 'Ptasie z galaretką'  => "$ptasiezgalaretka"
	  , 'Ptysie'  => "$ptysie"
	  , 'Rafaello'  => "$rafaello"
	  , 'Rogale'  => "$rogale"
	  , 'Rolada kremowa'  => "$roladakrem"
	  , 'Rolada makowa'  => "$roladamakowa"
	  , 'Rolada orzechowa'  => "$roladaorzech"
	  , 'Rolada W/Z'  => "$roladawz"
	  , 'Rolada wiśnia'  => "$roladawisnia"
	  , 'Rurki'  => "$rurki"
	  , 'Sernik z bezą'  => "$sernikbeza"
	  , 'Sernik z brzoskwinią'  => "$sernikzbrzoskwinia"
	  , 'Sernik z rodzynką'  => "$sernikzrodzynka"
	  , 'Sernik na zimno'  => "$sernikzimny"
	  , 'Szachownica'  => "$szachownica"
	  , 'Toffi'  => "$toffi"
	  , 'Torcik czekoladowy'  => "$torcikczekoladowy"
	  , 'Torcik z galaretka'  => "$torcikzgalaretka"
	  , 'Tortowe'  => "$tortowe"
	  , 'Wianuszki'  => "$wianuszki");
	  
 
foreach ($cena as $klucz => $wartosc)
if($wartosc){
	
	$polaczenie = new mysqli($host, $db_user, $db_password, $db_name);
	$polaczenie->query ('SET NAMES utf8');
	$polaczenie->query ('SET CHARACTER_SET utf8_unicode_ci');
	$idprod = $polaczenie->query("SELECT id_produktu from produkty where produkt='$klucz'");
	while ($kolumna = $idprod->fetch_array()) 
	{
		$id_produktu = $kolumna['id_produktu'];	
	}
	
	$idcena = $polaczenie->query("SELECT cena from produkty where produkt='$klucz'");
	while ($kolumna = $idcena->fetch_array()) 
	{
		$cenaczastkowa = $kolumna['cena'];	
		
	}
	
	
	$idrabat = $polaczenie->query("SELECT rabat from klienci where nazwa='$klient'");
	while ($kolumna = $idrabat->fetch_array()) 
	{
		$rabat = $kolumna['rabat'];	
	}
	
	$idjednostka = $polaczenie->query("SELECT jednostka from produkty where produkt='$klucz'");
	while ($kolumna = $idjednostka->fetch_array()) 
	{
		$jednostka = $kolumna['jednostka'];	
	}
	
	$cena = (($cenaczastkowa*$wartosc)*$rabat);
	$polaczenie = new mysqli($host, $db_user, $db_password, $db_name);
	$rekord = $polaczenie->query("INSERT INTO `zamowienia` 
	(`id_zamowienia`, `id_klienta`, `id_produktu`, `ilosc`, `cena`, `data`, `godzina`, `zwazyl`) 
	VALUES 
	(NULL, '$id_klienta', '$id_produktu', '$wartosc', '$cena', '$data', '$czas', '$login')");
  
	echo	"<tr><td>$klucz</td><td>$wartosc $jednostka</td><td>$cena zł</td></tr>";
	$_SESSION['klient'] = $klient;

}	

	echo	"</table></body></html>";
/////////////////////// Koniec Tabeli



 

echo '<form action="waga.php">';
echo '<input type="submit" value="Nowe zamówienie">';
echo '</form>';

echo '<form action="PDF/examples/generator.php" method="post">';
echo '<input type="submit" value="Wpisz">';
echo '</center>';
echo '</form>';


?>

</body>
</head>
</html>

 

Proszę o pomoc w każdej postaci - bo na pewno się przyda. :)

komentarz 5 listopada 2017 przez fleruvium Nowicjusz (100 p.)
Hej, to nie jest dobry kodzik. Nie pomogę z TCPDF, korzystałam z mPDF. Jeśli nie chcesz jeszcze programować obiektowo, to ok, ale możesz zadbać o to żeby był w miare porządek w kodzie, tzn. zmienne nazywały się jakkolwiek korespondująco do tego co robią (np. $cena to nie jest dobra nazwa na tablicę pełną dziwnych rzeczy). Możesz też wyrzucić połączenie z bazą gdzieś wyżej, z tego co mi się wydaje to nie ma sensu w pętli nawiązywać połączenia z bazą w kółko, jedno wystarczy. Myślę też że dałbyś radę jakoś zrobić tak, żeby nie przypisywać każdego $POST['blabla'] do zmiennej tylko jakoś sprytnie poiterować i od razu zrobić tablicę, bo jak bedzie trzeba dodać nowy typ ciastka, no to bedzie trzeba grzebać w kodzie. No i też nie wiem po co ten zapis 'klucz' => "$zmienna". Może potem jak siądę do kompa to zobaczę na tą bibliotekę do pdfów, ale nie obiecuję.
komentarz 6 listopada 2017 przez dominiv2604 Początkujący (350 p.)
Nigdy wcześniej nie miałem styczności z programowaniem obiektowym. Dotąd programowałem głównie w C/Assembler. Koncepcję miałem taką aby najpierw zrobić coś co by mi już generowało tabelę, a następnie wziąć się za optymalizację kodu.

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
0 odpowiedzi 151 wizyt
0 głosów
1 odpowiedź 158 wizyt
0 głosów
3 odpowiedzi 1,697 wizyt
pytanie zadane 8 stycznia 2018 w Java przez marcinconn Obywatel (1,560 p.)

92,454 zapytań

141,262 odpowiedzi

319,094 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...