Autor | Zpráva | ||
---|---|---|---|
peter_r Profil |
#1 · Zasláno: 9. 12. 2022, 08:24:29
Prosím o pomoc, mám funkciu, kde mi vytvorí tabuľku, uloží do pdf a odošle na email, toto funguje. Ale neviem si rady, potrebujem tam pridať ešte druhú tabuľku z druhého selectu SELECT * FROM tabulka2
Ďakujem. <?php //index.php $message = ''; $connect = new PDO("mysql:host=;dbname=", "", ""); function fetch_customer_data($connect) { $query = "SELECT * FROM tabulka1 WHERE prac_id=" .intval($_GET['prac_id']) ." LIMIT 1"; $statement = $connect->prepare($query); $statement->execute(); return $statement->fetch(PDO::FETCH_ASSOC); } function generate_table($row) { return ' <table ..... </table> '; } $data = fetch_customer_data($connect); if(isset($_POST["action"])) { include('pdf.php'); $file_name = md5(rand()) . '.pdf'; $html_code = '<meta charset="utf-8"><link rel="stylesheet" href="styl1.css"><style>* { font-family: DejaVu Sans !important; }</style>'; $html_code .= generate_table($data); $pdf = new Pdf(); $pdf->load_html($html_code); $pdf->render(); $file = $pdf->output(); file_put_contents($file_name, $file); require 'class/class.phpmailer.php'; $mail = new PHPMailer; $mail->IsSMTP(); //Sets Mailer to send message using SMTP $mail->Host = 'mailsrv.sk'; //Sets the SMTP hosts of your Email hosting, this for Godaddy $mail->Port = '465'; //Sets the default SMTP server port $mail->SMTPAuth = true; //Sets SMTP authentication. Utilizes the Username and Password variables $mail->Username = ''; //Sets SMTP username $mail->Password = ''; //Sets SMTP password $mail->SMTPSecure = 'ssl'; //Sets connection prefix. Options are "", "ssl" or "tls" $mail->From = 'email@email.sk'; //Sets the From email address for the message $mail->FromName = 'faktúra'; //Sets the From name of the message $mail->AddAddress($data['email']); //Adds a "To" address $mail->AddCC('email@email.sk'); //Adds a "Cc" address $mail->WordWrap = 50; //Sets word wrapping on the body of the message to a given number of characters $mail->IsHTML(true); //Sets message type to HTML $mail->AddAttachment($file_name, $data['priezvisko'].'_' . $data['meno'] . '_' . $data['fa_id'] . '.pdf'); //Adds an attachment from a path on the filesystem $mail->Subject = 'Faktúra za mesiac '. $data["mesiac"]; //Sets the Subject of the message $mail->Body = 'Dobrý deň, v prílohe Vám posielam Vašu faktúru.'; //An HTML or plain text message body if($mail->Send()) //Send an Email. Return true on success or false on error { $message = '<label class="text-success">Odoslanie úspešné ...</label>'; } unlink($file_name); } ?> <!DOCTYPE html> <html> <head> <title>Odoslanie fakúry emailom</title> <script src="jquery.min.js"></script> <link rel="stylesheet" href="styl1.css" /> <script src="bootstrap.min.js"></script> </head> <body> <br /> <div class="container"> <form method="post"><?php echo $data['email']; ?> <input type="submit" name="action" class="btn btn-danger" value="PDF" /><?php echo $message; ?> </form> <br /> <?php echo generate_table($data); ?> </div> <br /> <br /> </body> </html> |
||
Keeehi Profil |
A s čím konkrétně si nevíš rady? Obecně se dá říct, že je potřeba do kódu přidat další dotaz do databáze a za řádek 35 přidat další pro jeho převedení na tabulku
$html_code .= generate_table($data_z_druheho_dotazu); |
||
peter_r Profil |
#3 · Zasláno: 9. 12. 2022, 10:00:27
čiže za riadok 29 dám nový $connect2 so SELECT na tabuľku 2 a za to
$data_z_druheho_dotazu = fetch_customer_data($connect2) |
||
Keeehi Profil |
Tak nějak, ale je to trochu špatně.
Ta tabulka je ve stejné databázi, ne? Tudíž připojení můžete zrecyklovat (pouzijete stále $connect) Dále Možnost 1: Musíte vytvořit novou funkci fetch_customer_data_něco (samozřejmě se může jmenovat úplně jinak) protože v ní máte určený dotaz který se do databáze posílá a v ní si dotaz upravíte. Budete pak volat tuto novou funkci.
Možnost 2: pokud je dotaz stejný a liší se jen tabulkou, můžete upravit funkci fetch_customer_data tak, že bude mít druhý parametr, kterým se určí, jaké tabulky se má ptát. function fetch_customer_data($connect, $table) { $query = "SELECT * FROM $table WHERE prac_id=" .intval($_GET['prac_id']) ." LIMIT 1"; $statement = $connect->prepare($query); $statement->execute(); return $statement->fetch(PDO::FETCH_ASSOC); } $data = fetch_customer_data($connect, "tabulka1"); $data_z_druheho_dotazu = fetch_customer_data($connect, "tabulka2"); Možnost 3: upravíte funkci na posílání dotazů tak, že bude obecná. function fetch_data($connect, $query) { $statement = $connect->prepare($query); $statement->execute(); return $statement->fetch(PDO::FETCH_ASSOC); } $data = fetch_data($connect, "SELECT * FROM tabulka1 WHERE prac_id=" .intval($_GET['prac_id']) ." LIMIT 1"); $data_z_druheho_dotazu = fetch_data($connect, "SELECT * FROM tabulka2 WHERE prac_id=" .intval($_GET['prac_id']) ." LIMIT 1"); |
||
peter_r Profil |
tá druhá možnosť sa mi zdá najlepšia, lebo budem používať viac tabuliek a v podstate som to aj pochopil
ďakujem pekne za váš čas, dúfam že to nejak rozbehnem a potom už len napíšem, že to funguje :-) tak, emailom odošle obidve tabuľky čo je super ale najskôr ich má zobraziť a zobrazuje stále len tú prvú čo mi až tak nevadí skôr si lámem hlavu, že ak niektorá tabuľka je prázdna tak aby ju celú preskočilo v každej tabuľke je položka fa_id, ak je prázdna tak preskočiť na ďalšiu podmienku if (!empty($row["fa_id"])) by som asi vypotil ale neviem kde to dať
|
||
peter_r Profil |
#6 · Zasláno: 9. 12. 2022, 13:56:01
tak tú prvú vec som už našiel (také jednoduché) že prečo mi zobrazovalo len jednu tabuľku
ale stále dumem kde dať podmienku, že ak je položka fa_id z tej ktorej tabuľky prázdna, tak aby aby z nej $data... nevytváral pdf to by malo byť niekde sem si myslím $html_code .= generate_table($data); $html_code .= generate_table($data1); |
||
anonym_ Profil * |
#7 · Zasláno: 9. 12. 2022, 14:07:32
peter_r:
Do funkce generate_table. |
||
Časová prodleva: 3 dny
|
|||
peter_r Profil |
tak už som to vyriešil
|
||
peter_r Profil |
#9 · Zasláno: 12. 12. 2022, 10:59:45
a ešte prosím o radu, všetky tabuľky sú z jednej databázy
$connect = new PDO("mysql:host=;dbname=databaza1", "", ""); poradíte prosím ako urobiť, ak potrebujem ešte aby tam doplnilo tabuľku z inej databazy? |
||
Keeehi Profil |
#10 · Zasláno: 13. 12. 2022, 21:19:45
Uděláš si $connect2 a tam kde se bude používat ta další tabulka tam použiješ nový identifikátor spojení.
|
||
Časová prodleva: 1 rok
|
0